Ладно, от этой темы можно пока отвлечся, т.к. это сейчас для меня не принципиально.
Теперь вопрос по программной части. Мне необходимо из флеш-памяти (CFI) перекопировать в память SDRAM область размером 640х480х2 (всмысле два байта на пиксель).
Далее я ее вывожу на монитор посредством обращения к памяти через шину авалон прямо из проекта квартусовского...
Так вот, вначале делал просто таким образом:
Код
alt_u16 *fff; //указатель на флеш
alt_u16 *ddd; //указатель на сдрам
fff = (alt_u16*)(CFI_FLASH_0_BASE);
ddd = (alt_u16*)(SDRAM_0_BASE);
memcpy(ddd, fff, 614400);
И все вроде работало. Тот же результат, что и при копировании прямо через указатели. Картинка выводилась и т.п.
Но вот дальше обнаружилось что так прокатывает только один раз, далее функции
Код
memcpy, memset
работают уже неправильно, да и через указатели уже не получается.
Начал копать в сторону IOWR:
Код
for (i = 0; i < 307200; i++) {
dst_src = IORD_16DIRECT(CFI_FLASH_0_BASE, i);
IOWR_16DIRECT(SDRAM_0_BASE, i, dst_src);
}
И оказалось что и тут все не так. Копируется, но как-то неправильно, с пропусками. Даже если просто записывать в память 0...
Подскажите, что делать, как правильно сделать все это? Без ДМА.
Господа, простите. Это была паника, просто паника - все работает...