This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Modifying MMU tables and debugging MMU operations

Note: This was originally posted on 15th April 2010 at http://forums.arm.com

Hello!

I am writing some software that will hopefully be used in boot-loaders in ARM based systems. The software needs to be able to modify the MMU translation tables. From what I understand, I will probably have to disable the MMU while modifying the translation tables since the addresses in the TTBR0 and TTBR1 registers are the physical addresses. (Unless of course the 1st stage table is mapped as well and we have the virtual address to it. But we will run into the same problem if we need to access the 2nd level tables.) Am I correct?

I have had no way of testing this since my only test device is a Nokia N810 running Maemo linux, and disabling the MMU while in kernel mode crashes the device immediately (I assume that my code is interrupted while the MMU is off which crashes the kernel). What I need is some kind of development board with an MMU, which can be debugged during the boot-sequence. What kind of equipment do I need to be able to do this?

To summarize:
1. In order to modify the translation tables, do I need to disable the MMU (assuming that I do not have a virtual address to the page tables)?

2. Is there any development board with an MMU that will allow me to debug boot-loader code (secondary boot-loader, or rather the code that copies the kernel/firmware from flash to RAM) and what sort of extra equipment and software will I need?

Sorry if these questions have been partially answered elsewhere, but I tried looking at various development boards and how to debug them, but the documentation is not always very clear.

Best regards,
//Leo