реклама на сайте
подробности

 
 
> Буфер для PCI Express
doom13
сообщение Sep 2 2015, 05:59
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Приветствую.
Собираю систему для передачи данных от 10G Ethernet по PCIe в ПК (см. рисунок).
Приёмник MAC-уровня для 10G Ethernet пока моделирую Traffic Generator-ом. Прерывание от S2MM FIFO заводится в ПК и обрабатывается драйвером.
Использовал DC FIFO (для перехода между clock domains, Ethernet тактируется 156.25 МГц, PCIe - 250 МГц) и S2MM FIFO (для преобразования AXI4-Stream в AXI4).
S2MM FIFO генерирует прерывание либо по достижению определённого уровня заполнения, либо по приёму очередного пакета данных.
Traffic Generator управляется MicroBlaze (пока, для отладки) и может генерировать пакет 1024*64bit в цикле или постоянно.
Если использую прерывание по заполнению уровня (1024 позиции фифо), то приходится ставить большую задержку между запусками Traffic Generator-а, чтобы
CDMA успевал выгребать данные до накопления новых 1024 позиций, иначе передача фифо забивается и прерывание больше не срабатывает.
Тогда попробовал использовать прерывание по приёму пакета и забирать максимальное число данных кратное 1024 позициям фифо.
Тут Traffic Generator может работать в непрерывном режиме (CDMA постоянно забирает данные), но есть ощущение, что при заполнении фифо Traffic Generator может некоторое
время ожидать следующей передачи.
Вопросы:
1) Правильно ли реализую сам буфер, возможно есть более удобное решение?
2) Как выбрать размер FIFO и размер разовой передачи CDMA с учётом разных скоростей работы FIFO на запись/чтение и времени, требуемого для обработки прерывания и запуска CDMA драйвером?

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
doom13
сообщение Sep 30 2015, 20:44
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Получается, для системной памяти Aperture - это размер адресного пространства начиная с адреса, который записан в Translation. В Translation записываю физический адрес выделяемого блока памяти 4MB, для остальных блоков уже не получится.

Если же в Translation записать начальный физический адрес системной памяти, тогда всё становится понятно. Как это делается, как определить начальный адрес памяти ядра/системы?

Или это он и есть:
Цитата(RobFPGA @ Sep 30 2015, 23:06) *
ФИЗИЧЕСКИЙ адрес ВСЕЙ памяти системы известен он НЕ меняется в процессе работы
У вас ведь памяти не 2^64 байт? Например если у вас стоит 16G памяти то задав ОДНО окно
Base=0x0_0000_0000 Aperture Hight=0x3_FFFF_FFFF, PCIe Translation=0x0_0000_0000
Вы сможете работать со всей имеющейся у вас памятью (ну почти )

т.е. в Translation регистр AXIBAR2PCIEBAR записываем 0 и тогда при выделении блока памяти его физический адрес можно использовать в дескрипторе?
Но тут как-то странно получается, через один бар DMA может видеть всю системную память?


Если железо будет видеть всю системную память, то при сбое оно убъёт систему?!
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Sep 30 2015, 21:13
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



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

Цитата(doom13 @ Sep 30 2015, 23:42) *
Получается, для системной памяти Aperture - это размер адресного пространства начиная с адреса, который записан в Translation
Да это так

Цитата(doom13 @ Sep 30 2015, 23:42) *
... В Translation записываю физический адрес выделяемого блока памяти 4MB, для остальных блоков уже не получится.
А так делать не надо

Цитата(doom13 @ Sep 30 2015, 23:42) *
Если же в Translation записать начальный физический адрес системной памяти, тогда всё становится понятно. Как это делается, как определить начальный адрес памяти ядра/системы?
Это надо мангу ой мануалы на OC покурить - думаю найдете пару-тройку полезных няшек sm.gif

Цитата(doom13 @ Sep 30 2015, 23:42) *
Или это он и есть:
т.е. в Translation регистр AXIBAR2PCIEBAR записываем 0 и тогда при выделении блока памяти его физический адрес можно использовать в дескрипторе?
Бинго !
Ноль это в самом постом случае - можно так же учитывать этот оффсет при пересчете указателей на физический адрес например если у вас буфера сидят на другом физическом проце.

Цитата(doom13 @ Sep 30 2015, 23:42) *
Но тут как-то странно получается, через один бар DMA может видеть всю системную память?
А чего старинного ? Классические DMA, то есть те которые сидят непосредственно на PCIe контроллере, так мир и видят - плоский стоящий на 3 китах rolleyes.gif И да - чуь что н не так - моменто в море
А тут целый bridge! который более универсален в применении и не только под DMA рассчитан - вот вводит в ступор от многообразия возможностей.

Успехов! Rob
Go to the top of the page
 
+Quote Post
doom13
сообщение Oct 1 2015, 09:25
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(RobFPGA @ Oct 1 2015, 00:13) *
Ноль это в самом постом случае - можно так же учитывать этот оффсет при пересчете указателей на физический адрес например если у вас буфера сидят на другом физическом проце.

Может быть подскажете, как определить начальный физический адрес памяти в системе?
Спасибо.

Или он равен "0"?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- doom13   Буфер для PCI Express   Sep 2 2015, 05:59
- - krux   тупое S2MM fifo вам на 10G не поможет. скорости не...   Sep 2 2015, 06:07
|- - doom13   Цитата(krux @ Sep 2 2015, 09:07) посмотри...   Sep 2 2015, 06:19
- - krux   ЦитатаА что не так с FIFO? формально, с FIFO всё н...   Sep 2 2015, 08:52
|- - doom13   Цитата(krux @ Sep 2 2015, 11:52) формальн...   Sep 2 2015, 09:28
- - krux   ЦитатаМануал на Intel 82599 10 GbE Controller прос...   Sep 2 2015, 16:51
|- - doom13   Цитата(krux @ Sep 2 2015, 19:51) в реальн...   Sep 3 2015, 06:46
- - krux   1 таблица дескрипторов - это 128 буферов, на 128 S...   Sep 3 2015, 08:32
- - doom13   Возник вопрос, в какой памяти должна размещаться т...   Sep 28 2015, 07:05
|- - RobFPGA   Приветствую! Цитата(doom13 @ Sep 3 2015,...   Sep 28 2015, 12:23
|- - doom13   Цитата(RobFPGA @ Sep 28 2015, 15:23) Для ...   Sep 28 2015, 13:00
- - RobFPGA   Приветствую! Для начала почитайте LogiCORE IP...   Sep 28 2015, 14:23
|- - doom13   Цитата(RobFPGA @ Sep 28 2015, 17:23) Для ...   Sep 28 2015, 15:07
|- - RobFPGA   Приветствую! Цитата(doom13 @ Sep 28 2015...   Sep 28 2015, 15:47
|- - doom13   Цитата(RobFPGA @ Sep 28 2015, 18:47) Что...   Sep 28 2015, 16:08
|- - doom13   Цитата(RobFPGA @ Sep 28 2015, 18:47) Ну а...   Sep 28 2015, 18:54
- - Golikov A.   с 2 таблицами проще, что софт сможет монопольно не...   Sep 29 2015, 06:16
|- - RobFPGA   Приветствую! Цитата(Golikov A. @ Sep 29 ...   Sep 29 2015, 07:10
- - doom13   Столкнулся с тем, что ядро Linux не хочет выделять...   Sep 30 2015, 14:28
|- - RobFPGA   Приветствую! Цитата(doom13 @ Sep 30 2015...   Sep 30 2015, 16:03
|- - doom13   Цитата(RobFPGA @ Sep 30 2015, 19:03) При...   Sep 30 2015, 16:34
|- - RobFPGA   Приветствую. Цитата(doom13 @ Sep 30 2015, 19...   Sep 30 2015, 16:42
- - krux   ЦитатаКак понимаю, чтоб DMA мог работать по цепочк...   Sep 30 2015, 17:27
- - doom13   Хорошо. Поясните мне вот это: AXI to PCIe Bridge и...   Sep 30 2015, 19:56
|- - RobFPGA   Приветствую! Цитата(doom13 @ Sep 30 2015...   Sep 30 2015, 20:06
- - doom13   Нашёл, dmidecode показывает всю системную информац...   Oct 1 2015, 18:44
- - doom13   Для ядра AXI Bridge for PCIe Gen 3 есть такая зако...   Oct 2 2015, 13:31
|- - RobFPGA   Приветствую! Цитата(doom13 @ Oct 2 2015,...   Oct 2 2015, 14:49
- - doom13   Что-то я вообще запутался, как оно работает. А как...   Oct 2 2015, 16:07
- - krux   ЦитатаЧто-то я вообще запутался, как оно работает....   Oct 2 2015, 17:56
- - doom13   Цитата(krux @ Oct 2 2015, 20:56) зависит ...   Oct 2 2015, 19:52
- - RobFPGA   Приветствую! Цитата(doom13 @ Oct 2 2015,...   Oct 2 2015, 21:03
- - doom13   Цитата(RobFPGA @ Oct 3 2015, 00:03) Поэто...   Oct 3 2015, 08:29
- - doom13   Цитата(RobFPGA @ Oct 3 2015, 00:03) Цита...   Oct 6 2015, 08:59


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 08:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01443 секунд с 7
ELECTRONIX ©2004-2016