|
Буфер для PCI Express |
|
|
|
Oct 2 2015, 14:49
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Цитата(doom13 @ Oct 2 2015, 16:31)  Т.е. мост хочет, чтобы в Translation был 0 на месте, где в Aperture Hight Address стоит 1, либо говорит, что параметр задан неправильно. Это можно как-то объяснить или это какой-то баг? Вобще то это большой секрет фирмы Xilinx но благодоря утечкам Вы можете ознакомится с ним в PG194 AXI Bridge for PCI Express Gen3 v1.1 стр 37.  Это просто такая оптимизация трансляции адреса в железе не нужен длинный сумматор Успехов! Rob.
|
|
|
|
|
Oct 2 2015, 16:07
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Что-то я вообще запутался, как оно работает. А как мне тогда для апертуры Aperture Base Address 0x00000000_00000000 и Aperture Hight Address 0x00000003_FFFFFFFF задать смещение 0x00000000_С0000000? Как вижу это невозможно. Тогда самый главный вопрос - что записывается в регистры Translation? Я писал туда адрес блока памяти, который возвращала функция virt_to_phys и оно работало, сейчас думай - как? Может ещё тут что посоветуете?
|
|
|
|
|
Oct 2 2015, 17:56
|
Профессионал
    
Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596

|
Цитата Что-то я вообще запутался, как оно работает. зависит от того, с чем вы хотите разобраться. если с PCI-Express, то предлагаю выкинуть AXI-to-PCIe bridge и по-человечески разобраться c PCI-Express при помощи "заката солнца вручную", без посторонних инструментов. Например сделав простой DMA для передачи всего лишь 4КБайт. С BAR-ами и прочими обязательными аттрибутами этого интерфейса. если же с мостом AXI-to-PCIe bridge, то предполагается что с PCI-E "врукопашную" вы уже знакомы. отделите мух от котлет, станет попроще.
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
|
Oct 2 2015, 19:52
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(krux @ Oct 2 2015, 20:56)  зависит от того, с чем вы хотите разобраться.
если с 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 ГБ. Вот и как получить к нему доступ?
|
|
|
|
|
Oct 2 2015, 21:03
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Цитата(doom13 @ Oct 2 2015, 22:52)  Разбираться с Transaction Layer пока не хотел, как понимаю, мост делает это за меня. PCIe to AXI BAR работает и всё понятно, а вот с AXI to PCIe BAR есть какое-то непонимание. Объясните, если я задаю Aperture 16 ГБ (как в посте выше), Translation 0, получается, должно позволить адресовать 16 ГБ системной памяти? А система выделяет буфер с физическим адресом за пределами этих 16 ГБ. Вот и как получить к нему доступ? Никак! Мне не понятно Ваше желание ограничить свободу DMA без предявления оному внятных обвинений а нам не менее внятных обяснений. Ведь DMA он мелкая сошка - и делает то что прикажет бугор (драйвер). Поэтому разбирайтес с бугром и его боссом (програмистом) почему они возволяют себе такое безобразие. Вы судя по всему устаете под вечер вот очевидных вещей и не видете - я же уже вредлагал - сделайте аппертуру в 64 бит и смещение 0 - и тогда хитрый CPU не сможет нигде от Вас спрятатся Ой - и да - при этом получается вариант как "заката солнца вручную" - ну разве что катить светило на тележке удобнее. Успехов! Rob.
|
|
|
|
|
Oct 3 2015, 08:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(RobFPGA @ Oct 3 2015, 00:03)  Поэтому разбирайтес с бугром и его боссом (програмистом) почему они возволяют себе такое безобразие. Тут я сам себе босс  , поэтому и вопросов очень много. Цитата(RobFPGA @ Oct 3 2015, 00:03)  сделайте аппертуру в 64 бит и смещение 0 - и тогда хитрый CPU не сможет нигде от Вас спрятатся Ой - и да - при этом получается вариант как "заката солнца вручную" - ну разве что катить светило на тележке удобнее. Апертуру 0 - 2^64 и смещение 0 ??? Это можно, но нет уверенности что физический адрес буфера за пределами RAM будет соответствовать ему же записанному в дескрипторе. Или будет? Т.е. физический адрес буфера записываю в дескриптор и такая апертура позволит DMA добраться к любому адресу? Цитата(RobFPGA @ Oct 3 2015, 00:03)  Мне не понятно Ваше желание ограничить свободу DMA без предявления оному внятных обвинений а нам не менее внятных обяснений. Свободу DMA ограничивать не хотел, просто не понимаю как система выделяет буфер за пределами адресов моего RAM.
|
|
|
|
|
Oct 6 2015, 08:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(RobFPGA @ Oct 3 2015, 00:03)  Цитата(krux @ Oct 2 2015, 20:56)  Приветствую! Спасибо за помощь. Сделал апертуру 0x0000000000000000 - 0x7FFFFFFFFFFFFFFF, DMA может добраться к дескрипторам и буферам для данных не зависимо от того, где выделила для них память система.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|