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

 
 
> Чтение по PCIe в блочном режиме
ovs_pavel
сообщение Jul 19 2013, 12:44
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



День добрый коллеги. Разбираюсь с ядром от Xilinx'a pcie endpoint. Отладочная плата Kintex7. Подключил корку pcie. В режимах одиночной записи и чтения все работает. В блочном режиме работает только запись. Блочное чтение не работает. Т.е. от ЦП на плату идет запрос (прочитать 16 слов). Я по шине возвращаю ответ с правильными данными (подключил chip scope), но считываются все FF. Не могу понят в чем причина.
Рассматриваю сейчас все поля ответного заголовка (Completion Header Field) все вроде как правильно. Впрочем различие между блочным и одиночным чтением у меня заключается только в длине посылки, но и в описании на "Completion Header Field" нет такого признака как блочное чтение. В чем может быть причина. Для организации блочных режимов записи/чтения используется установки MSR регистров ЦП.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
novartis
сообщение Jul 23 2013, 03:28
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Здравствуйте, а можете поподробнее расписать, как вы заставляете ЦП работать в блочных режимах записи/чтения.
Три года назад писали драйвер под линукс, ЦП был интеловский. Программист, который за это отвечал, уверял, что блочная запись/чтения со стороны ЦП нереализуема, пришлось городить DMA-контроллер на стороне ПЛИС.

Цитата
Для этого необходимо включить режим write combining.

Какими функциями это делается, что почитать порекомендуете?
Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Jul 23 2013, 08:31
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Цитата(novartis @ Jul 23 2013, 07:28) *
Здравствуйте, а можете поподробнее расписать, как вы заставляете ЦП работать в блочных режимах записи/чтения.
Три года назад писали драйвер под линукс, ЦП был интеловский. Программист, который за это отвечал, уверял, что блочная запись/чтения со стороны ЦП нереализуема, пришлось городить DMA-контроллер на стороне ПЛИС.


Какими функциями это делается, что почитать порекомендуете?


Здравствуйте. Сегодня не на работе и я занимаюсь только ПЛИС (железом). Завтра попрошу программиста описать подробнее механизм инициализации от ЦП блочного режима.
Сейчас могу лишь сказать что максимальная длина посылки определяется строкой кэша (в нашем случае это 64 байта - для интеловского чипсета). И используются пара регистров MTRR в режимах write back, write combining. Еще раз повторюсь подробности завтра (от программиста).
Go to the top of the page
 
+Quote Post
gosh74
сообщение Jan 14 2014, 07:55
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 62
Регистрация: 22-09-06
Из: Новосибирск
Пользователь №: 20 585



Цитата(ovs_pavel @ Jul 23 2013, 12:31) *
... подробности завтра (от программиста).


Все же хочется узнать подробности
Go to the top of the page
 
+Quote Post



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

 


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


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