В переменной display все вроде как надо (рис. ниже). 0х1111000 - адрес csr DMA, по даресу в name лежит мой \dev\dma, буфер, который начинается с 0х01000048 - адрес в ssram, она 1мбайт, начинается с 0х01000000.
Дескрипторы похоже правильные (рис. ниже). Байты 0-3 четные - начальный адрес для чтения, нечетные - адрес след. дескриптора, размер блока данных - 0хff00, дескрипторы закольцованы. Сигналтапом прочитал (рис. ниже) - нули на выходе dma. Посмотрел у dma дескриптор рид адрес и дескриптор рид дата (8,9 сигналы сверху) - нули; дескриптор райт адрес (10 сверху) - адрес одного из дескрипторов, дескриптор райт дата (11 сверху) - говорит о том, что передано этим дескриптором 0хff00 байт. Мемори рид адрес указывает на место в дисплейном буфере (12 сверху).
Но вот беда! Данные остаются одни и теже при каждом запуске сигнал тап, т.е. вроде как dma остановлено. После сброса проца данные другие (но правильные, другой дескриптор, другой адрес памяти), но до следующего сброса не меняются.
Такое ощущение, что dma работать начинает, но останавливается, причем случайно. ЧТО ДЕЛАТЬ-ТО ??
Сообщение отредактировал alexPec - Aug 17 2010, 09:37
Эскизы прикрепленных изображений