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