Цитата(shreck @ Sep 29 2014, 08:36)

Убрал из idle задачи доступ к ОЗУ, скорость dma возрасла в 2 раза (9ms стало).
Лучшее решение - idle-задача состоящая из одной инструкции WFE в цикле!
Как-то (не помню уже на каком именно CPU) сталкивался с ситуацией, что у меня затыкался DMA (вообще, из-за таймаута доступа к шине)
из-за того, что CPU, ожидая флага о завершении DMA-транзакции крутился в пустом цикле. Размер этого цикла (команд) был очень маленький,
и сам цикл лежал ещё на границе элемента предвыборки инструкций (весь цикл нельзя было загрузить одним prefetch). Из-за этого шина
постоянно была занята непрерывными операциями выборки команд этого цикла и никакой другой bus master не мог получить доступа к ней.
Вроде это было на ком-то из LPC175/6x.
И самое поганое было в том, что при малейшем изменении кода (в любом месте) этот самый цикл сдвигался немного в памяти и всё чудесным образом начинало работать.
Но недолго, до след. модификации.