This set of examples shows how to set up the Memory Management Unit (MMU) in a bare metal environment. The examples walk through sets of code, building on the overall explanation of the MMU and translation process that the Memory management guide provides.

The examples are useful if you need to interact with the MMU at a low level, typically in a bare metal environment like bring-up test code. The examples do not cover MMU usage in an operating system.

The virtual address spaces that are constructed here are not intended to be realistic. Instead, the examples demonstrate different ways to configure the MMU. The final example gives a more realistic configuration for a simple bare metal system.

At the end of these examples, you will be able to write or modify a sequence to set up a simple virtual address space.

Before you begin

This set of examples requires you to be familiar with the principles of memory translation and the MMU controls in the processor. These subjects are covered in the Memory management guide.

The examples use A64 assembler. A basic understanding of A64 assembler helps you to follow the descriptions of the code. For an introduction to A64 see our Armv8-A Instruction Set Architecture guide

Example platform 

This set of examples are available as a separate download

The examples were developed for the Base Platform model. Here are details of the physical address maps for the Base Platform model.

To build and run the examples, you need Arm Development Studio. If you do not have a copy of Arm Development Studio, download an evaluation copy.

Building and running the examples

The examples package includes a ReadMe.txt file. This file gives instructions for building and running the examples. The command line arguments to launch the simulator is different for each example. Refer to the ReadMe.txt file for more information.