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

 
 
> SGDMA в двумерном режиме, Как то можно извернуться?
alexPec
сообщение May 26 2011, 19:36
Сообщение #1


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Добрый день. Вот такая задача, можно ли такое сделать с помощью ДМА:

Нужно отправлять поток в стрим из памяти, но не линейно а так: есть общий массив, который нужно выкинуть в дма. Допустим длина 20000 байт. В этом массиве будет целое число блоков, в данном случае 4. Располагаются так: байты с индексами 0-4999 это 1 блок, 5000-9999 это 2 блок, 10000-14999 это 3 блок, 15000-19999 это 4 блок. Так вот надо байты выкидывать не попорядку, сначала первые байты всех блоков, затем вторые, затем третие и т.д. Т.е. в таком порядке (указываю индексы батов в исходном массиве):
0,5000,10000,15000,1,50001,10001,15001,2,5002,10002,...,4999,9999,14999,19999.
Вроде как очевидное решение - создать еще один массив и туда переупорядочить байты, чтоб дма попорядку выкидывал, но ниос уже это не успеет сделать. Забивать массив изначально в другом порядке тоже не получается. Может поскажет кто как быть?

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vadimuzzz
сообщение May 27 2011, 00:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



по-моему самый простой вариант - сделать свой компонент DMA, который сможет несколько дескрипторов параллельно обрабатывать и распределять поток на всех. а какого типа память? если SDRAM, то скорость сильно просядет
Go to the top of the page
 
+Quote Post



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

 


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


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