2.1 at91bootstrap
The at91bootstrap from Microchip is a lightweight, low-level bootloader specifically designed for Microchip 32-bit MPUs, including the SAM9X60, SAM9X7 Series, SAMA7G5 Series and SAMA7D6 Series devices, which embed OTP memory. It plays a crucial role in the system boot process, especially in bare-metal environments, by initializing the processor and peripheral clocks, setting up DDR memory, and preparing the hardware environment required to load the next-stage bootloader, i.e., the bare-metal application in the case of this application note.
One of the key strengths of at91bootstrap is its hardware-specific optimization. Since at91bootstrap is developed and maintained by Microchip, it supports a wide range of SoC-specific features out of the box. These include configurations for NAND/NOR Flash memories, SD card/e.MMC storage, DDR controllers, and various clock trees. The bootloader is tightly aligned with Microchip’s reference designs, ensuring a high degree of stability and compatibility, which is especially valuable during the early development stages of a custom board.
Another major benefit is its small footprint and fast execution. Minimal in size, at91bootstrap executes very quickly, which can significantly reduce boot time in time-sensitive applications. Its configuration system, based on Kconfig (like the Linux kernel and U-Boot), allows developers to tailor the binary to include only the necessary components, thereby reducing memory usage and complexity.
Furthermore, at91bootstrap is open-source and actively maintained, making it an accessible and reliable choice for developers. It includes robust support for debugging and logging (via UART), and its clear, modular structure makes it relatively easy to understand and customize. Combined with Microchip documentation and ecosystem, at91bootstrap provides a solid foundation for bringing up custom hardware and preparing the system for full operation.
at91bootstrap is characterized by the following:
- Hardware initialization: Configures system clocks, DDR memory and peripheral interfaces for all Microchip MPUs.
- Fast and lightweight: Designed for minimal footprint and quick execution, reducing overall system boot time.
- Bootloader chaining: Loads the next-stage bootloader (e.g., U-Boot, bare-metal applications) or directly boots the Linux kernel, supporting NAND, QSPI NOR, SD and e.MMC.
- Highly configurable: Uses a Kconfig-based build system, allowing selective inclusion of features tailored to your hardware.
- Open source and maintained: Actively supported by Microchip with regular updates, source code access and community/documentation support.
at91bootstrap is used for the following reasons:
- Optimized for Microchip SoCs: at91bootstrap is specifically designed for Microchip 32-bit MPU devices, ensuring tight integration with Microchip's hardware features and reference designs.
- Speeds up boot time: Its minimalist design allows for rapid hardware bring-up and fast transition to higher-level bootloaders or kernels, making it ideal for time-sensitive applications.
- Flexible boot source support: Supports booting from a variety of storage media, including NAND, QSPI NOR, SD, and e.MMC, offering flexibility in system design.
- Highly customizable: With a Kconfig-style configuration system, developers can easily tailor the bootloader to specific board requirements, saving space and reducing complexity.
- Open source with active support: Maintained by Microchip and open to the community, at91bootstrap provides transparency, frequent updates and access to technical resources.
