Boot sequence in ARM-based hardware architectures

When it comes to understanding the boot sequence in ARM-based hardware architectures, it's important to note that ARM-based architectures are not as standardized as their Intel counterparts, with each manufacturer adding their own unique touch. But first, let’s get back to what exactly the boot sequence is.

The boot sequence: definition

A boot sequence is a series of steps that a device goes through when it is powered on.

This sequence is designed to initialize and prepare the system for normal operation, loading essential software components, checking hardware configurations, and ensuring the system’s integrity.

The boot sequence in ARM systems is a fundamental process that largely depends on the microprocessor unit (MPU) and the hardware configuration chosen by the device’s manufacturer. These configurations can vary significantly, making it crucial to delve into the specific details provided.

Example of a boot sequence for a system running on an iMX8

For instance, let’s explore the boot sequence of a system based on the NXP i.MX8 microprocessor.

When the device is powered on, the ROM code within the processor initiates execution. This ROM code seeks further instructions in the first partition of an external memory source, such as an SD card. It copies the discovered code into the processor’s limited internal RAM, which typically measures only 256 kilobytes. This constraint necessitates the careful handling of code sizes.

Next in line is Trust Firmware for ARM (TF-A), a component aiming to standardize certain aspects of ARM systems. TF-A takes over execution and initializes the external RAM, providing more space for larger code operations. In this boot sequence, TF-A retrieves code from a specific partition on the SD card.

Example of a boot sequence for a system running on an iMX8

What’s the difference between a boot sequence and a secure boot?

It’s important to note that the boot sequence and secure boot are not synonymous. Secure boot is a security feature that ensures the authenticity of the code executed during the boot process. While the ROM code itself is immutable, TF-A could potentially be subject to code injection or modification if not adequately protected.

To address this, a secure boot process involves verifying the integrity and authenticity of each component in the boot chain, starting with the ROM code. This process ensures that only code from trusted sources is executed, making it significantly harder for unauthorized code to infiltrate the system.

Check out our article on secure boot to learn more.

Discover more from The Embedded Kit

Subscribe now to keep reading and get access to the full archive.

Continue reading