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

 
 
> Запись в PCI-e устройство блока данных
DGorF
сообщение Mar 9 2011, 15:44
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 4-02-06
Пользователь №: 13 982



Уважамые коллеги, просьба сильно не пинать.
Возникла необходимость писать в устройство блоки данных размером несколько десятков байт. Проблема в том, что при записи по адресу BAR0 в ПЛИС приходят TLP-пакеты, в которых полезной нагрузки всего по 8 байт(или меньше). Т.е. записываемый блок данных разбивается на несколько TLP-пакетов. Как можно обойти эту проблему, окромя способа, когда устройство само считывает этот блок данных?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dmitry-tomsk
сообщение Mar 9 2011, 18:15
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(DGorF @ Mar 9 2011, 18:44) *
Уважамые коллеги, просьба сильно не пинать.
Возникла необходимость писать в устройство блоки данных размером несколько десятков байт. Проблема в том, что при записи по адресу BAR0 в ПЛИС приходят TLP-пакеты, в которых полезной нагрузки всего по 8 байт(или меньше). Т.е. записываемый блок данных разбивается на несколько TLP-пакетов. Как можно обойти эту проблему, окромя способа, когда устройство само считывает этот блок данных?

Почитайте описание, там написано как можно сделать.
Go to the top of the page
 
+Quote Post
DGorF
сообщение Mar 9 2011, 19:45
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 4-02-06
Пользователь №: 13 982



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


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

1. В первом предложении что имеется ввиду под формированием сигналов записи и чтения памяти соответственно? Очевидно, это не комплишены, т.к. они дальше описаны, и не чтение/запись памяти хоста, т.к. мастером выступает хост?
2. Как Вы предлагаете решить мой вопрос, если последнее предложение говорит о том, что размер передаваемых данных при записи процессором не превышает 8 или 16 байт?
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Mar 9 2011, 20:10
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
DGorF
сообщение Mar 10 2011, 08:34
Сообщение #5





Группа: Новичок
Сообщений: 3
Регистрация: 4-02-06
Пользователь №: 13 982



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

Т.е. Вы предлагаете, чтобы устройство само считывало с хоста данные? Этот вариант меня не устраивает.
Go to the top of the page
 
+Quote Post
Cordroy
сообщение Mar 10 2011, 08:48
Сообщение #6


Участник
*

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



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


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

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


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

А почему не работает?.. Вы могли бы указать на источник инфы?
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Mar 11 2011, 10:04
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 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."
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 04:14
Рейтинг@Mail.ru


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