This is an old revision of the document!
Tasks
Before beginning the tasks, please check out the lecture slides & notes here.
Our aim for this lab is to better understand the boot process and the role of each component making up the firmware of an ARM device.
For this, we will be using a TechNexion PICO-PI-IMX8M featuring a NXP i.MX8M Quad ARM Cortex-A53 + M4 SoC with 2GB DRAM.
The following tasks will walk you through configuring and compiling the whole boot package containing the Secondary Program Loader (BL2) with various firmware binaries embedded within, the ARM Trusted Firmware (BL31) and, of course, the normal OS bootloader (BL33).
When everything is ready, you'll get to fire up the board, upload the firmware image package using NXP's specific serial boot protocol and play with it!
export CROSS_COMPILE = /path/to/your/toolchain/gcc-prefix...- ATF_DIR = imx-atf ATF_MAKE_FLAGS = SPD=none PLAT=TODO... atf: cd "$(ATF_DIR)" && \ make $(ATF_MAKE_FLAGS) UBOOT_DIR = u-boot-tn-imx UBOOT_MAKE_FLAGS = uboot: cd "$(UBOOT_DIR)" && \ make $(UBOOT_MAKE_FLAGS) .PHONY: uboot atf # ... and so on !
Suggestion #2: You can use git and add the third party projects as submodules! But beware though: Linux's repo is quite huge (several GBs – but you'll see it yourself in the next lab)!