The boot process

Remember the simplicity of x86's boot process? When you turned on the computer, the BIOS would initialize all required components and peripherals (RAM, keyboard and disks). After that, it would iterate through all persistent storage devices (in a configurable order) and pick the first one where a bootloader is detected to be installed in the first 512 bytes sector and continue with the execution from there! The bootloader would, optionally, present a menu to the user to choose an operating system (with a timeout autoselection), load kernel into memory and voila, startup process complete!

Unfortunately, things are not that simple in a ARM ecosystem:

Figure 3: ARM Trusted Firmware booting process.