Files
lk/docs/fvp-base/internal.md
Mykola Hohsadze ae64e6aa3c Fix typos
2025-05-05 02:45:08 +03:00

3.4 KiB
Executable File
Raw Permalink Blame History

FVP Base platform overview

Boot sequence

FVP Base emulator is typically launched using both a secure flashloader and a normal flashloader. The configuration looks like this:

-C bp.secureflashloader.fname=path/to/arm-trusted-firmware/build/fvp/debug/bl1.bin \
-C bp.flashloader0.fname=path/to/fip.bin

We use Arm Trusted Firmware (ATF) as the secure monitor running at S-EL3. It initializes the system, sets up the secure world, and pass control to the non-secure world.

The boot sequence works in the following way:

  • BL1 (Secure ROM Bootloader) - Initializes trusted components and loads the next stage (BL2).

  • BL2 (Trusted Boot Firmware) - Verifies and loads the next stages: BL31 and BL33.

  • BL31 (EL3 Runtime Firmware) - Provides runtime services at EL3, including PSCI (Power State Coordination Interface) and context switching between secure and non-secure worlds.

  • BL32 (Secure Payload) - optional secure-world component that runs at S-EL1. It is used to provide Trusted Execution Environment (TEE). If not required, this stage can be skipped, and BL31 will directly pass control to BL33. In our case we do not use BL32.

  • BL33 (Non-secure Payload) - The final stage of the boot chain, typically the entry point to the non-secure kernel or bootloader. We use little kernel as BL33.

Memory Usage (bytes) [RAM]

Component Start Limit Size Free Total
BL1 0x4034000 0x4040000 0x7000 0x5000 0xc000
BL2 0x4020000 0x4034000 0x10000 0x4000 0x14000
BL2U 0x4020000 0x4034000 0xa000 0xa000 0x14000
BL31 0x4003000 0x4040000 0x22000 0x1b000 0x3d000

Memory Usage (bytes) [ROM]

Component Start Limit Size Free Total
BL1 0x0000000 0x4000000 0x8bd0 0x3ff7430 0x4000000

To check the memory layout, refer to TF-A Memory Layout Tool Documentation

Little kernel and DTB location

On the FVP platform, DTB start address and the BL33 entry point are both configured in the platforms source files:

  • DTB base address: 0x82000000 (32MB size)
  • BL33 entry address: 0x88000000

You can find these settings in the platform_def.h header file:

DTS for FVP Base you can find at fdts

Peripheral Address Map

The peripheral address map for the FVP Base platform can be found in the following documentation:
Base Platform memory map

Currently, little kernel supports:

  • UART0,PL011
  • GICv2

Interrupt Assignment

The interrupt assignment for the FVP Base platform can be found in the following documentation:
Base Platform interrupt assignments