Добрый день. Вот такая задача, можно ли такое сделать с помощью ДМА:
Нужно отправлять поток в стрим из памяти, но не линейно а так: есть общий массив, который нужно выкинуть в дма. Допустим длина 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. Вроде как очевидное решение - создать еще один массив и туда переупорядочить байты, чтоб дма попорядку выкидывал, но ниос уже это не успеет сделать. Забивать массив изначально в другом порядке тоже не получается. Может поскажет кто как быть?
Спасибо!
|