This is an old revision of the document!
This package will contain bl2, bl31 and bl33. The Secure OS (bl32) is outside the scope of this lab; even if we did bother to include it, it would just be there, doing nothing.
Following this exercise, we should be able to reach the first step of the booting sequence that can be interactive; meaning that we'll be able to interact with a shell implemented in bl33.
For this component we'll be using the Trusted Firmware-A project. Although it contains reference implementations for the other bootloaders as well, we are going to use it strictly for bl31. The other have more complete and widely recognized alternatives available.
We recommend reading the documentation moving forward. Take a close look at the build options in particular.
Following a successful build process, you should obtain a bl31.bin.
SPD=none
.make … bl31
.
With bl31 out of the way, we are going to tackle bl2 next. Remember however, that the main role of bl2 is to initialize the hardware using the proprietary firmware offered by the chip manufacturer. Without this firmware, we don't even have access to the DRAM memory.
Remember that bl1 is loaded from ROM in the first half of the available SRAM (aka. On-Chip RAM). That SRAM is just 128KB in size, so there's not much space. bl1 then loads bl2 (but not the remainder of the FIP) in the upper half of SRAM. At this point it's up to bl2 to enable the 2GB of DRAM and finish loading the rest of the FIP in main memory.
For this task, get the latest version of the firmware from here. What we're actually interested in are the following files: