В применении без внешней RAM есть только 32 килобайта внутренней памяти. Тратить 16 килобайт под таблицу трансляции адресов как-то жаль. Разместил таблицу во FLASH, MMU и DCache (ICache работал и раньше) включил. Вроде живёт.
Вопросы:
1) имеет ли смысл по скорости?
2) как правильно выполнить сброс DCache в SRAM перед DMA записями (не целиком, а только указанный диапазон MVA)
3) как правильно выполнить инвалидацию DCache после операции чтения блока откуда-либо по DMA (указанный диапазон адресов).
Помнится, в Intel 486 это происходило автоматически...
В двух последних вопросах хотелось бы видеть код, сами функции обращения к CP15 есть или могут быть написаны по мере необходимости.
Как я понимаю, нужно учитывать размер строки TLB и выдавать команды для всех требуемых адресов, инкреметируя начало буфера на размер строки?