2 at91bootstrap as a Second-Stage Bootloader
This chapter provides a comprehensive overview of at91bootstrap, a second-stage bootloader developed and maintained by Microchip Technology. at91bootstrap is specifically designed for Arm-based Microchip 32-bit microprocessors.
Steps to obtain the at91bootstrap source code, configure it for a specific board (SAM9X60-Curiosity in the case of this application note), build it and subsequently write the generated at91bootstrap binary image to an external Non-Volatile Memory (NVM) connected to the device are provided.
Additional steps on how to configure the boot sequence to enable booting from specific non-volatile memory devices only are also shown, using the SAM9X60-Curiosity board as an example.
All these steps configure a Microchip 32-bit MPU to boot at91bootstrap successfully.
The content herein relates to at91bootstrap version 4.0.9, which can be fetched from the GitHub repository.
at91bootstrap is used as an intermediary step that facilitates the transition from the initial boot phase, executed by the ROM code, to the loading phase of an operating system or a more advanced/complex application.
Essentially, a bootstrap:
- configures the device clock scheme to maximize performance and/or minimize power consumption,
- initializes external volatile memories such as DDRAM,
- reads the next application from the selected NVM, writes it into the external DDRAM, and transfers code execution there.