This is an old revision of the document!


01. [??p] Creating the Firmware Image Package

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.

[??p] Task A - Trusted Firmware-A (bl31)

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.

Normally, we'd be using the official TF-A but at the moment it seems to have a linker script bug for our platform. Reason why we use the NXP fork of TF-A instead.

  • The default target platform is ARM's Fixed Virtual Platform (FVP), a simulator. That is not our platform…
  • To specify that we don't have a bl32 for it to initialize, pass it SPD=none.
  • You don't have to build everything. Just make … bl31.

[??p] Task B - The firmware

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:

  • lpddr4_pmu_train_1d_dmem.bin
  • lpddr4_pmu_train_1d_imem.bin
  • lpddr4_pmu_train_2d_dmem.bin
  • lpddr4_pmu_train_2d_imem.bin
  • signed_hdmi_imx8m.bin

[??p] Task C - U-Boot (bl2, bl33)

ass/laboratoare/01/tasks/02.1689021787.txt.gz · Last modified: 2023/07/10 23:43 by radu.mantu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0