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

 
 
> PCI-E и mSGDMA от Altera, Проблемы с программированием mSGDMA
NeStor46
сообщение Aug 4 2014, 20:47
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 29-07-14
Пользователь №: 82 403



Доброго времени суток всем!

Наверное, кто-то разбирался с альтровским mSGDMA и сможет помочь немного разобраться.
При написании драйвера под Windows для платы PCI-E дошел до организации транзакций чтения и записи с использованием mSGDMA и сел. Немного не понятно, как работает этот самый mSGDMA с конфигурацией Memory-Mapped to Memory-Mapped.

Допустим в драйвер поступил запрос на чтение. Выполнив необходимые программные действия дело доходит до программирования устройства и собственно нашего mSGDMA. Заносить в дескрипторы необходимо адреса и длину элементов SGL(scatter-gather list), сформированного ОС, т.е. большое число буферов малой длины (4кБ), или же просто записать в дескриптор mSGDMA адрес откуда читать и длину читаемых данных, а дальше он сам разберется что и как ему делать?
Запуск dma передачи начинается автоматически, как только данные из дескриптора передаются в дескрипторное FIFO при установке контрольного бита Go? а как только передача выполняется выставляется прерывание, которое сообщает о выполнении операции? и нужно ли что-то настраивать, чтобы эти прерывания генерировались?

Пока нашел только пример драйвера для Linux, описывающий работу с этим mSGDMA, но еще не совсем в нем разобрался. Здесь есть и описание управляющего регистра дескриптора для разных видов передачи http://lxr.free-electrons.com/source/drive...tera_msgdmahw.h , но не знаю применимы для они для dma в pci-e.

Откликнитесь, кто-нибудь, пожалуйста. Вопросов, пока много, а понимания мало. Буду благодарен за любую консультацию.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dsmv
сообщение Aug 5 2014, 08:54
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(NeStor46 @ Aug 4 2014, 23:47) *
... т.е. большое число буферов малой длины (4кБ), или же просто записать в дескриптор mSGDMA адрес откуда читать и длину читаемых данных, а дальше он сам разберется что и как ему делать?

DMA канал работает с физической памятью, т.е. надо ему указать цепочку из блоков по 4 кБайта.


Go to the top of the page
 
+Quote Post
NeStor46
сообщение Aug 5 2014, 18:22
Сообщение #3





Группа: Новичок
Сообщений: 8
Регистрация: 29-07-14
Пользователь №: 82 403



Цитата(dsmv @ Aug 5 2014, 12:54) *
DMA канал работает с физической памятью, т.е. надо ему указать цепочку из блоков по 4 кБайта.

Спасибо, т.е. записывать в дескрипторы элементы SGL, сформированные виндой, пока не заполнится дескрипторные фифо, потом заново заполнять дескрипторы и т.д. до тех пор, пока не будут переданы все данные.

Цитата(doom13 @ Aug 5 2014, 01:39) *
Формируете дескриптор (src addr, dst addr, length, флаги нужные выставляете) и подсовываете его Sg-DMA, далее делаете другую работу, пока не придёт прерывание о завершениеи обработки дескриптора. Можно выстроить цепочку дескрипторов.


Спасибо за разъяснение. в dst addr я так понимаю необходимо записывать адрес выделенного пользовательским приложением буфера (приложение, от которого шел запрос на чтение).

Сообщение отредактировал NeStor46 - Aug 5 2014, 18:22
Go to the top of the page
 
+Quote Post
doom13
сообщение Aug 5 2014, 20:19
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(NeStor46 @ Aug 5 2014, 21:22) *
Спасибо за разъяснение. в dst addr я так понимаю необходимо записывать адрес выделенного пользовательским приложением буфера (приложение, от которого шел запрос на чтение).

Да, первый адрес - откуда читать, второй - куда писать. В этой теме был прмер по настройке и работе с Sg-DMA, правда, для Stream To Memory и Memory To Stream, можете ознакомиться.
Go to the top of the page
 
+Quote Post



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

 


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


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