Alex77 4 28 января, 2021 Опубликовано 28 января, 2021 · Жалоба а что значит "галочка 64бит" рядом с type ? я как минимум вижу какие-то числа 0x0000_0002_0000_0000 что есть 64 бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kronac 0 29 января, 2021 Опубликовано 29 января, 2021 (изменено) · Жалоба 10 hours ago, Alex77 said: а что значит "галочка 64бит" рядом с type ? я как минимум вижу какие-то числа 0x0000_0002_0000_0000 что есть 64 бит. Доброе утро. Сама адресация баров PCIe для AXI задаётся на предыдущей вкладке ядра, где задаются все настройки AXI Эта же галочка "64 bit" Выбирает какого размера у нас будут бары и адресация в пределах одного бара. Имеется 6: 32-битных бара (размер каждого из которых может быть не больше 2ГБ) и 3: 64-битных бара (размер которых собственно огромен до экзабайт). В ядре 2 соседних бара как бы объединяются в один. К сожалению такая структура мне не подходит, так как моя материнка не запускается с баром больше 2ГБ (пробовал на 2 компах и сервере). Изменено 29 января, 2021 пользователем Kronac Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 29 января, 2021 Опубликовано 29 января, 2021 · Жалоба я " здесь" не вижу бара больше 2 ГБ, я вижу базовый адрес 8ГБ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kronac 0 29 января, 2021 Опубликовано 29 января, 2021 (изменено) · Жалоба 2 hours ago, Alex77 said: я " здесь" не вижу бара больше 2 ГБ, я вижу базовый адрес 8ГБ Да, в чём проблема не понимаю? Адресация AXI 64-битная. От 0x0000_0000_0000_0000 до 0x0000_0001_FFFF_FFFF у меня располагается 8 ГБ ДДР-ка первым слейвом на интерконнекте. Работаю я с ней отдельными барами (BAR2 и BAR3) буферными (окнами) по 4 мб. Следом за ней идут регистровые слейвы, я и назначаю бару (BAR0) стартовый адрес на AXI : 0x0000_0002_0000_0000. Далее в системе выделяется для данного бара диапазон памяти в пространстве PCIe устройств. Вот например запустил одну из прошивок которая у меня была уже на ходу, тут правда первый бар не 4МБ как на скрине выше, а 1МБ, но разницы нет. Система выделяет на BAR0: от 0x0000 9090 0000 до 0x0000 909F FFFF (что собственно равно 1 МБ, сколько назначишь столько система и выделит). Далее адрес PCIe 0x0000 9090 0000 при проходе через контроллер PCIe преобразовывается в адрес 0x0000_0002_0000_0000 на шине AXI, а при чтении адрес AXI 0x0000_0002_0000_0004 станет = PCIe 0x0000 9090 0004 И тд.. Изменено 29 января, 2021 пользователем Kronac Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kronac 0 1 февраля, 2021 Опубликовано 1 февраля, 2021 (изменено) · Жалоба В общем поборол я проблему. Конкретных причин я не нашёл, только догадки. Если вкратце, то я создавал большие мегабайтовые слейвы на перспективу для будущих проектов, чтобы хватило места. По факту же я использовал не больше 8К адресного пространства. Плюс я хотел сделать красивые адреса для того, чтобы упростить дешифрацию адреса в интерконнекте (Выставить чисто старшие выровненные адреса для слейвов). Забил в итоге на всё. Сделал в лоб. Сколько требуется фактически, столько и выделил, подтянул все адреса друг к другу и заработало. Из бара 0 есть доступ ко всем слейвам. Не знаю какая проблема при работе с большим объёмом адресного пространства, пока разбираться не хочу. Работает, пускай себе работает. Всем спасибо за советы. Изменено 1 февраля, 2021 пользователем Kronac Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться