Перейти к содержанию
    

Приветствую!

 

Т.е. мост хочет, чтобы в Translation был 0 на месте, где в Aperture Hight Address стоит 1, либо говорит, что параметр задан неправильно.

Это можно как-то объяснить или это какой-то баг?

Вобще то это большой секрет фирмы Xilinx но благодоря утечкам Вы можете ознакомится с ним в PG194 AXI Bridge for PCI Express Gen3 v1.1 стр 37. :)

Это просто такая оптимизация трансляции адреса в железе не нужен длинный сумматор

 

Успехов! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то я вообще запутался, как оно работает.

А как мне тогда для апертуры Aperture Base Address 0x00000000_00000000 и Aperture Hight Address 0x00000003_FFFFFFFF задать смещение

0x00000000_С0000000? Как вижу это невозможно.

Тогда самый главный вопрос - что записывается в регистры Translation? Я писал туда адрес блока памяти, который возвращала функция virt_to_phys и оно работало, сейчас думай - как? Может ещё тут что посоветуете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то я вообще запутался, как оно работает.

зависит от того, с чем вы хотите разобраться.

 

если с PCI-Express, то предлагаю выкинуть AXI-to-PCIe bridge и по-человечески разобраться c PCI-Express при помощи "заката солнца вручную", без посторонних инструментов. Например сделав простой DMA для передачи всего лишь 4КБайт. С BAR-ами и прочими обязательными аттрибутами этого интерфейса.

 

если же с мостом AXI-to-PCIe bridge, то предполагается что с PCI-E "врукопашную" вы уже знакомы.

отделите мух от котлет, станет попроще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

зависит от того, с чем вы хотите разобраться.

 

если с PCI-Express, то предлагаю выкинуть AXI-to-PCIe bridge и по-человечески разобраться c PCI-Express при помощи "заката солнца вручную", без посторонних инструментов. Например сделав простой DMA для передачи всего лишь 4КБайт. С BAR-ами и прочими обязательными аттрибутами этого интерфейса.

 

если же с мостом AXI-to-PCIe bridge, то предполагается что с PCI-E "врукопашную" вы уже знакомы.

отделите мух от котлет, станет попроще.

Разбираться с Transaction Layer пока не хотел, как понимаю, мост делает это за меня. PCIe to AXI BAR работает и всё понятно, а вот с AXI to PCIe BAR есть какое-то непонимание.

Объясните, если я задаю Aperture 16 ГБ (как в посте выше), Translation 0, получается, должно позволить адресовать 16 ГБ системной памяти? А система выделяет буфер с физическим адресом за пределами этих 16 ГБ. Вот и как получить к нему доступ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

Разбираться с Transaction Layer пока не хотел, как понимаю, мост делает это за меня. PCIe to AXI BAR работает и всё понятно, а вот с AXI to PCIe BAR есть какое-то непонимание.

Объясните, если я задаю Aperture 16 ГБ (как в посте выше), Translation 0, получается, должно позволить адресовать 16 ГБ системной памяти? А система выделяет буфер с физическим адресом за пределами этих 16 ГБ. Вот и как получить к нему доступ?

Никак!

Мне не понятно Ваше желание ограничить свободу DMA без предявления оному внятных обвинений а нам не менее внятных обяснений. Ведь DMA он мелкая сошка - и делает то что прикажет бугор (драйвер). Поэтому разбирайтес с бугром и его боссом (програмистом) почему они возволяют себе такое безобразие.

 

Вы судя по всему устаете под вечер вот очевидных вещей и не видете - я же уже вредлагал - сделайте аппертуру в 64 бит и смещение 0 - и тогда хитрый CPU не сможет нигде от Вас спрятатся :)

Ой - и да - при этом получается вариант как "заката солнца вручную" - ну разве что катить светило на тележке удобнее.

 

Успехов! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поэтому разбирайтес с бугром и его боссом (програмистом) почему они возволяют себе такое безобразие.

Тут я сам себе босс :), поэтому и вопросов очень много.

 

сделайте аппертуру в 64 бит и смещение 0 - и тогда хитрый CPU не сможет нигде от Вас спрятатся :)

Ой - и да - при этом получается вариант как "заката солнца вручную" - ну разве что катить светило на тележке удобнее.

Апертуру 0 - 2^64 и смещение 0 ??? Это можно, но нет уверенности что физический адрес буфера за пределами RAM будет соответствовать ему же записанному в дескрипторе. Или будет? Т.е. физический адрес буфера записываю в дескриптор и такая апертура позволит DMA добраться к любому адресу?

Мне не понятно Ваше желание ограничить свободу DMA без предявления оному внятных обвинений а нам не менее внятных обяснений.

Свободу DMA ограничивать не хотел, просто не понимаю как система выделяет буфер за пределами адресов моего RAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

Спасибо за помощь.

Сделал апертуру 0x0000000000000000 - 0x7FFFFFFFFFFFFFFF, DMA может добраться к дескрипторам и буферам для данных не зависимо от того, где выделила для них память система.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...