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

 
 
> ALTERA PCIe 4х Chaining DMA, Не могу разобраться как работает
soldat_shveyk
сообщение Oct 22 2012, 13:03
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Доброго дня!

Есть плата Arria II GX Kit, скачал на него reference design на PCIe 4x.
После долгих танцев с бубном удалось установить их Jungo board driver и запустить тест скорости DMA Write.
Теперь хочу их reference design изменить под свою задачу - запускать DMA Write по мере наполнения FIFO, в которую поступают 64-разрядные отсчеты данных.
Читаю альтеровские доки и не могу разобраться - как у них работает это самое chaining DMA?
Куда заносить физический адрес памяти, по которому отправлять данные?
Где указывать - сколько данных передавать по DMA Write?
Как запустить передачу?
Непонятен сам принцип работы chaining dma. дескрипторы какие-то. где из брать?
Лет пять назад делал PCIe 8x на старом Stratix II GX.
Там было все просто - взял пример simple dma, подключил вместо тестового счетчика свой источник данных, выделил память в драйвере и передал физический адрес в плату, указал количество передаваемых данных -
и все замечательно работало, и работает до сих пор.
А тут решили перейти на Arria II GX, а ref design только для chaining dma. И ничего общего с тем, что было раньше на Stratix.

Если кто уже разбирался с этим - помогите, пожалуйста.






Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
soldat_shveyk
сообщение Oct 23 2012, 06:29
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Спасибо, Shivers.
Chaining dma меня этим и прельстило - хочется качать непрерывный поток данных до 800 МБ/с, по возможности не сильно загружая процессор.
Альтеровские доки читаю уже не знаю по какому разу - а пазл в голове все не складывается.
Не могу найти ответ - кто является генератором дескипторов. Вроде бы они должны формироваться в драйвере и как-то передаваться в плату.
Как давать прерывания чтобы драйвер знал, какой именно дескриптор готов?
Раньше я делел так - запрашивал в драйвере кусок NonPageble памяти 128 МБайт, передавал физический адрес начала в один из регистров платы, затем отправлял
в эту память данные, и в конце передачи давал прерывание, которое перехватывалось драйвером и взводило Event для приложения в третьем кольце.
Как дейстовать сейчас?
Запрашивать 4 куска памяти по 32 Мбайта и передавать их адреса в качестве дескриптров?

Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 20:24
Рейтинг@Mail.ru


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