|
Запись в PCI-e устройство блока данных |
|
|
|
Mar 9 2011, 15:44
|
Группа: Новичок
Сообщений: 3
Регистрация: 4-02-06
Пользователь №: 13 982

|
Уважамые коллеги, просьба сильно не пинать. Возникла необходимость писать в устройство блоки данных размером несколько десятков байт. Проблема в том, что при записи по адресу BAR0 в ПЛИС приходят TLP-пакеты, в которых полезной нагрузки всего по 8 байт(или меньше). Т.е. записываемый блок данных разбивается на несколько TLP-пакетов. Как можно обойти эту проблему, окромя способа, когда устройство само считывает этот блок данных?
|
|
|
|
|
 |
Ответов
|
Mar 9 2011, 18:15
|
Знающий
   
Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741

|
Цитата(DGorF @ Mar 9 2011, 18:44)  Уважамые коллеги, просьба сильно не пинать. Возникла необходимость писать в устройство блоки данных размером несколько десятков байт. Проблема в том, что при записи по адресу BAR0 в ПЛИС приходят TLP-пакеты, в которых полезной нагрузки всего по 8 байт(или меньше). Т.е. записываемый блок данных разбивается на несколько TLP-пакетов. Как можно обойти эту проблему, окромя способа, когда устройство само считывает этот блок данных? Почитайте описание, там написано как можно сделать.
|
|
|
|
|
Mar 9 2011, 19:45
|
Группа: Новичок
Сообщений: 3
Регистрация: 4-02-06
Пользователь №: 13 982

|
Цитата(dmitry-tomsk @ Mar 9 2011, 21:15)  Почитайте описание, там написано как можно сделать. Спасибо Дмитрий, надеюсь, Вас не затруднит ответить на несколько вопросов. Итак, в мане написано: Цитата Контроллер подчинённой памяти анализирует принятые пакеты с запросами записи и чтения и формирует сигналы записи и чтения памяти соответственно. На основе считанных данных контроллер формирует ответные пакеты и направляет их в блок интерфейса. Контроллер позволяет работать с пакетами максимальной длины (до 4096 байт данных в пакете), но поскольку чтение и запись данных осуществ-ляется, как правило, процессором, размер передаваемых данных не превышает 8 или 16 байт. 1. В первом предложении что имеется ввиду под формированием сигналов записи и чтения памяти соответственно? Очевидно, это не комплишены, т.к. они дальше описаны, и не чтение/запись памяти хоста, т.к. мастером выступает хост? 2. Как Вы предлагаете решить мой вопрос, если последнее предложение говорит о том, что размер передаваемых данных при записи процессором не превышает 8 или 16 байт?
|
|
|
|
|
Mar 9 2011, 20:10
|
Знающий
   
Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741

|
Цитата(DGorF @ Mar 9 2011, 22:45)  Спасибо Дмитрий, надеюсь, Вас не затруднит ответить на несколько вопросов. Итак, в мане написано:
1. В первом предложении что имеется ввиду под формированием сигналов записи и чтения памяти соответственно? Очевидно, это не комплишены, т.к. они дальше описаны, и не чтение/запись памяти хоста, т.к. мастером выступает хост? 2. Как Вы предлагаете решить мой вопрос, если последнее предложение говорит о том, что размер передаваемых данных при записи процессором не превышает 8 или 16 байт? 1. Сигналы mem_read и mem_wren, которые можно подключить к Вашему блоку памяти BRAM напрямую или через селектор адреса (таблица ниже) 2. Только с использованием мастера в ПЛИС, простейший мастер описан в xapp1052, более сложный в xapp859
|
|
|
|
|
Mar 10 2011, 08:34
|
Группа: Новичок
Сообщений: 3
Регистрация: 4-02-06
Пользователь №: 13 982

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

Группа: Свой
Сообщений: 65
Регистрация: 13-09-10
Из: Israel
Пользователь №: 59 464

|
Цитата(DGorF @ Mar 10 2011, 12:34)  Т.е. Вы предлагаете, чтобы устройство само считывало с хоста данные? Этот вариант меня не устраивает. Теоретически, можно запрограммировать DMA контроллер который есть в чипсете хоста провернуть чтение из хоста и запись в девайс, бОльшими блоками. Но это дает сильную аппаратную привязку к типу хоста + сложность в написании драйвера. Цитата(dmitry-tomsk @ Mar 10 2011, 12:45)  Системный dma контроллер, насколько помню, для pcie не работает. Другого варианта нет. сорри, не заметил вашего коммента... А почему не работает?.. Вы могли бы указать на источник инфы?
|
|
|
|
|
Mar 11 2011, 10:04
|
Знающий
   
Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741

|
Цитата(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."
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|