Hi Timur,
welcome to the list! It's great to see 'base-hw' getting picked up. :-)
On 08/30/2012 08:25 PM, Timur wrote:
I want to add support of i.mx53 to base-hw. I encounter a problem while turning on MMU. Problem appears when i want to write a system control register with setted mmu bit in enable_mmu function :
Sctlr::access_t sctlr = Sctlr::read(); Sctlr::M::set(sctlr); Sctlr::I::clear(sctlr); Sctlr::C::clear(sctlr); -->Sctlr::write(sctlr);
after this string system freezes.
It is quite difficult to guess what exactly goes wrong. For certain, enabling the MMU is the first critical point. It is important that the page directory base is correctly initialized. As 'base-hw' uses the high exception entry table at 0xffff0000, the exception handling will rely on a proper mapping at this location.
I suppose you are using the cortex-a9 code as blue print? I think there are subtile differences with regard to accessing the control registers (i.e., cp15) between cortex-a8 (i.MX53) and cortex-a9. It is worthwhile to double-check all 'mcr/mrc' instructions used in the assembler code paths of 'base-hw'.
Cheers Norman