Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запись в PCI-e устройство блока данных
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > ISA/PCI/PCI-X/PCI Express
DGorF
Уважамые коллеги, просьба сильно не пинать.
Возникла необходимость писать в устройство блоки данных размером несколько десятков байт. Проблема в том, что при записи по адресу BAR0 в ПЛИС приходят TLP-пакеты, в которых полезной нагрузки всего по 8 байт(или меньше). Т.е. записываемый блок данных разбивается на несколько TLP-пакетов. Как можно обойти эту проблему, окромя способа, когда устройство само считывает этот блок данных?
dmitry-tomsk
Цитата(DGorF @ Mar 9 2011, 18:44) *
Уважамые коллеги, просьба сильно не пинать.
Возникла необходимость писать в устройство блоки данных размером несколько десятков байт. Проблема в том, что при записи по адресу BAR0 в ПЛИС приходят TLP-пакеты, в которых полезной нагрузки всего по 8 байт(или меньше). Т.е. записываемый блок данных разбивается на несколько TLP-пакетов. Как можно обойти эту проблему, окромя способа, когда устройство само считывает этот блок данных?

Почитайте описание, там написано как можно сделать.
DGorF
Цитата(dmitry-tomsk @ Mar 9 2011, 21:15) *
Почитайте описание, там написано как можно сделать.


Спасибо Дмитрий, надеюсь, Вас не затруднит ответить на несколько вопросов. Итак, в мане написано:
Цитата
Контроллер подчинённой памяти анализирует принятые пакеты с запросами записи и чтения и формирует сигналы записи и чтения памяти соответственно. На основе считанных данных контроллер формирует ответные пакеты и направляет их в блок интерфейса. Контроллер позволяет работать с пакетами максимальной длины (до 4096 байт данных в пакете), но поскольку чтение и запись данных осуществ-ляется, как правило, процессором, размер передаваемых данных не превышает 8 или 16 байт.

1. В первом предложении что имеется ввиду под формированием сигналов записи и чтения памяти соответственно? Очевидно, это не комплишены, т.к. они дальше описаны, и не чтение/запись памяти хоста, т.к. мастером выступает хост?
2. Как Вы предлагаете решить мой вопрос, если последнее предложение говорит о том, что размер передаваемых данных при записи процессором не превышает 8 или 16 байт?
dmitry-tomsk
Цитата(DGorF @ Mar 9 2011, 22:45) *
Спасибо Дмитрий, надеюсь, Вас не затруднит ответить на несколько вопросов. Итак, в мане написано:

1. В первом предложении что имеется ввиду под формированием сигналов записи и чтения памяти соответственно? Очевидно, это не комплишены, т.к. они дальше описаны, и не чтение/запись памяти хоста, т.к. мастером выступает хост?
2. Как Вы предлагаете решить мой вопрос, если последнее предложение говорит о том, что размер передаваемых данных при записи процессором не превышает 8 или 16 байт?

1. Сигналы mem_read и mem_wren, которые можно подключить к Вашему блоку памяти BRAM напрямую или через селектор адреса (таблица ниже)
2. Только с использованием мастера в ПЛИС, простейший мастер описан в xapp1052, более сложный в xapp859
DGorF
Цитата(dmitry-tomsk @ Mar 9 2011, 23:10) *
1. Сигналы mem_read и mem_wren, которые можно подключить к Вашему блоку памяти BRAM напрямую или через селектор адреса (таблица ниже)
2. Только с использованием мастера в ПЛИС, простейший мастер описан в xapp1052, более сложный в xapp859

Т.е. Вы предлагаете, чтобы устройство само считывало с хоста данные? Этот вариант меня не устраивает.
dmitry-tomsk
Цитата(DGorF @ Mar 10 2011, 12:34) *
Т.е. Вы предлагаете, чтобы устройство само считывало с хоста данные? Этот вариант меня не устраивает.

Системный dma контроллер, насколько помню, для pcie не работает. Другого варианта нет.
Cordroy
Цитата(DGorF @ Mar 10 2011, 12:34) *
Т.е. Вы предлагаете, чтобы устройство само считывало с хоста данные? Этот вариант меня не устраивает.


Теоретически, можно запрограммировать DMA контроллер который есть в чипсете хоста провернуть чтение из хоста и запись в девайс, бОльшими блоками. Но это дает сильную аппаратную привязку к типу хоста + сложность в написании драйвера.

Цитата(dmitry-tomsk @ Mar 10 2011, 12:45) *
Системный dma контроллер, насколько помню, для pcie не работает. Другого варианта нет.


сорри, не заметил вашего коммента...

А почему не работает?.. Вы могли бы указать на источник инфы?
dmitry-tomsk
Цитата(Cordroy @ Mar 10 2011, 11:48) *
А почему не работает?.. Вы могли бы указать на источник инфы?

Уже не помню, но вот хотя бы выдежка из xapp1052 "These are a system DMA application and a bus master DMA
application. System DMAs are not typical and very few root complexes and OS support their use."
FLTI
Цитата(Cordroy @ Mar 10 2011, 12:48) *
Теоретически, можно запрограммировать DMA контроллер который есть в чипсете хоста провернуть чтение из хоста и запись в девайс, бОльшими блоками. Но это дает сильную аппаратную привязку к типу хоста + сложность в написании драйвера.

Поясните, что значит - сильную аппаратную привязку к типу хоста? Какие типы хостов имеются в виду?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.