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

 
 
> Проблемы с DMA для PCI-express, Я его и так и эдак, со словами и без слов...
irum4
сообщение Jul 13 2012, 18:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 224
Регистрация: 18-06-04
Пользователь №: 54



Привет, всем! help.gif
Нужна помощь по DMA для PCI-express!
Я уже замаялся, но в толк не возьму почему все так плохо...
Сделал проект с DMA для PCI-express на базе XAPP1052 для виртекс 6. Где-то слышал, что он кривенько
написан... может быть, вопрос не в этом... Вопрос или даже проблема в том, что пакеты ядро
посылаются, а оттуда ну очень медленно выходят и не освобождают буфер. При чем чем длиннее пакет
тем быстрее "затык".
Для наглядности прикрепляю скрины с чипскопа.
Я в ступоре... Мыслей умных нет...что делать и куда смотреть уже и не знаю...
Кто может толкните twak.gif , чуствую, что решение под ногами, но где wacko.gif
Прикол в том, что модель на симуляторе такого не показывает, там все ок...
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
Электроника - наука о контактах.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
novartis
сообщение Jul 18 2012, 08:39
Сообщение #2


Местный
***

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



Может поможет то, что напишу)
Работал с ПЛИС Altera Stratix IV.
Терминология у них такая:
tx_st_ready - сигнал готовности принимать данные коркой,
tx_st_data - 128-битное слово для передачи.
Для передачи данных я формировал пакет максимум из девяти 128-битных слов:
первое слово - заголовок, 8 последующих - непосредственно данные.
В заголовке указывался адрес, куда на ПК надо складывать данные, ну и другая службная информация (все в соответствии со спецификацией на PCIE и описанием корки).

Данные вычитывались из некого буфера размером 150 слов (каждое слово по 128 бит).
Пересылать нужно было разное количество слов, как меньше 150 слов, так и больше 150.

Если меньше 150 - никаких проблем, ready - иногда скакало, буфер заполнялся/освобождался, но все работало.
Если больше 150, то посылалось так (150 разбивал на 8 слов и еще довесок в 6 слов):
8 8 8 8 8 8 8 6, потом у меня была пауза на ожидание, пока вновь заполнится буфер, после опять 8 8 8 ... Х. Х- не имеет значения.
При этом адресацию данных не нарушал, то есть последовательно заполнял выделенную мне память на стороне ПК, не обращая внимания на остановки и паузы.
В этом случае ready скакал ужасно. Если передавал много пачек по 150 слов, то корка PCIE падала на мертво (ready в ноль) после 7 пачки (точно не помню), вешая в последствии комп.

Побядил эту байду так: увеличил буфер до 152 слов, сделав его кратным 8.
Теперь передаю так:
8 8 8 8 8 8 8 8, пауза на заполнение буфера, 8 8 8 8 8 8 8 8, пауза, ..., 8 8 8 ... Х.

Корка с тех пор уже не вешалась)))

Для себя решил, что проблема в какойто хитрож..умной адресации данных, которую я нарушал.
Go to the top of the page
 
+Quote Post



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

 


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


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