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

 
 
 
Reply to this topicStart new topic
> DMA PCIe Cyclon, Ламерский вопрос.
Trashy_2
сообщение Sep 28 2016, 10:56
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 208
Регистрация: 27-10-08
Пользователь №: 41 220



Есть железка на Cyclone5 со встроенным PCIe+Avalon без ARM на борту.

Подключено к компу. Со стороны ПЛИС выделен BAR0 и там набор регистров. Верхнее приложение под Виндой по прерыванию или по полингу выгребает данные из БАРа. Работает, но не по феншую: жрёт процессорное время.

У меня дыры в понимании работы DMA. Работал с DMA в контроллерах, где какая-то аппаратная хрень, которой передаёшь смещение и сколько читать и она сама копирует данные в некую область памяти и потом сообщает...

Не пойму как это работает в стыке PCI и компа. Канал то один и тот же. Что необходимо менять в прошивке ПЛИС, что бы этот режим был доступен компу?


--------------------
Транзистор не сможет измерить широкое сердце героя!(ц)
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 28 2016, 11:12
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 949
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Для FPGA вам нужен котролер DMA, а для PC драйвер для вашего контролера. 'Из коробки' это все не заведется sad.gif
Go to the top of the page
 
+Quote Post
Trashy_2
сообщение Sep 28 2016, 11:21
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 208
Регистрация: 27-10-08
Пользователь №: 41 220



Цитата(XVR @ Sep 28 2016, 14:12) *
Для FPGA вам нужен котролер DMA, а для PC драйвер для вашего контролера. 'Из коробки' это все не заведется sad.gif

Не пойму вашего сленга.
Драйвес со стороны PC напишем. Это не проблема.
Контроллер DMA, он работает через те же BARы или там какой то иной алгоритм работы? Его самостоятельно состряпать можно?


--------------------
Транзистор не сможет измерить широкое сердце героя!(ц)
Go to the top of the page
 
+Quote Post
Maverick
сообщение Sep 28 2016, 11:31
Сообщение #4


я только учусь...
******

Группа: Модераторы
Сообщений: 3 258
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Trashy_2 @ Sep 28 2016, 14:21) *
Не пойму вашего сленга.
Драйвес со стороны PC напишем. Это не проблема.
Контроллер DMA, он работает через те же BARы или там какой то иной алгоритм работы? Его самостоятельно состряпать можно?

как пример
реализация


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Trashy_2
сообщение Mar 6 2017, 14:05
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 208
Регистрация: 27-10-08
Пользователь №: 41 220



Опять я с глупостями.

Возможно ли на Цыклоне 5 сделать такую штуку: PCIe-UART16550, что бы винда увидела эту штуку и установила на неё свои драйвера? 16550, вроде майкрософтом поддерживаются. Какие-нить вендоры подменить, в INFах чё-нить прописать...

У меня все IP оплачены.
Сейчас связка Avalon+16550 работает через бары прямым доступом в регистры.
Как-то на такую ерунду писать свои драйвера, как-то по лоховски выглядит.



--------------------
Транзистор не сможет измерить широкое сердце героя!(ц)
Go to the top of the page
 
+Quote Post
XVR
сообщение Mar 7 2017, 10:22
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 949
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Trashy_2 @ Mar 6 2017, 17:05) *
Возможно ли на Цыклоне 5 сделать такую штуку: PCIe-UART16550, что бы винда увидела эту штуку и установила на неё свои драйвера?
Сделать можно, но вот 'увидеть и поставить драйвера' не получится. Нужно будет прописать параметры вручную в registry

https://msdn.microsoft.com/en-us/library/wi...3(v=vs.85).aspx
Go to the top of the page
 
+Quote Post
AVR
сообщение Mar 7 2017, 10:56
Сообщение #7


фанат Linux'а
****

Группа: Свой
Сообщений: 964
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



На самом деле всё гораздо гораздо проще, говорят нужен какой то контроллер DMA. На самом деле DMA-режим работы можно осуществить без него, если делаете свои TLP пакеты. По сути, на стороне ПК в драйвере выделяется буфер, который будет видеть и ядро и устройство (ну специальным образом выделенная память), его адрес кидается на BAR0 и устройство может тупо слать TLP пакеты на этот адрес и это не сжирает процессор. т.е. устройство само туда пишет, это Bus Mastering. Когда тысячи пакетов накиданы устройством прямо в память (в этот буфер) - делается прерывание (MSI). Скорость будет околосветовая (теор предел линка), загрузка проца ничтожна.

Есть вопросы - пишите, подскажу.


--------------------
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd May 2017 - 17:26
Рейтинг@Mail.ru


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