57
6437E–ATARM–23-Apr-13
SAM9M11
11. Boot Strategies
The system always boots at address 0x0. To ensure maximum boot possibilities the memory
layout can be changed with two parameters.
REMAP allows the user to layout the internal SRAM bank to 0x0 to ease the development.
This is done by software once the system has boot.
BMS allows the user to layout to 0x0, when convenient, the ROM or an external memory. This
is done by hardware at reset.
Note: All the memory blocks can always be seen at their specified base addresses that are not
concerned by these parameters.
The SAM9M11 manages a boot memory that depends on the level on the BMS pin at reset. The
internal memory area mapped between address 0x0 and 0x000F FFFF is reserved to this effect.
If BMS is detected at 0, the boot memory is the memory connected on the Chip Select 0 of the
External Bus Interface.
Boot on on-chip RC
Boot with the default configuration for the Static Memory Controller, byte select mode, 16-bit
data bus, Read/Write controlled by Chip Select, allows boot on 16-bit non-volatile memory.
For optimization purpose, nothing else is done. To speed up the boot sequence user pro-
grammed software should perform a complete configuration:
Enable the 32768 Hz oscillator if best accuracy is needed
Program the PMC (main oscillator enable or bypass mode)
Program and Start the PLL
Reprogram the SMC setup, cycle, hold, mode timings registers for EBI CS0 to adapt them to
the new clock
Switch the system clock to the new value
If BMS is detected at 1, the boot memory is the embedded ROM and the boot program
described below is executed.
11.1
Boot Program
The Boot Program is contained in the embedded ROM. It is also called: “Rom Code” or “First
level bootloader”. At power on, if the BMS pin is detected at 1, the boot memory is the embed-
ded ROM and the Boot Program is executed.
The Boot Program consists of several steps. First, it performs device initialization. Then it
attempts to boot from external non volatile memories (NVM). And finally, if no valid program is
found in NVM, it executes a monitor called SAM-BA Monitor.