• Antonio Nino Diaz's avatar
    plat/arm: Introduce ARM_LINUX_KERNEL_AS_BL33 build option · b726c169
    Antonio Nino Diaz authored
    
    
    Normally, BL33 needs to contain a boot loader like U-Boot or UEFI that
    eventually gives control to the OS. However, in some cases, this boot
    sequence may be too slow. For example, when doing tests in a
    cycle-accurate emulator, the user may only be interested in the
    interaction between the Trusted Firmware and the OS, not in the boot
    process itself.
    
    The new option ARM_LINUX_KERNEL_AS_BL33 allows BL33 to contain the Linux
    kernel image by changing the value of registers x0-x3 to the values
    expected by the kernel. This option requires the device tree blob (DTB)
    to be present in memory. Its address must be specified in the newly
    introduced ARM_PRELOADED_DTB_BASE build option. For now, it only supports
    AArch64 kernels.
    
    This option is only available when RESET_TO_BL31=1. For this reason
    the BL33 binary must be preloaded in memory and PRELOADED_BL33_BASE must
    be used.
    
    For example, if the kernel is loaded at 0x80080000 and the DTB is loaded
    at address 0x82000000, the firmware could be built like this:
    
        CROSS_COMPILE=aarch64-linux-gnu-  \
        make PLAT=fvp DEBUG=1             \
        RESET_TO_BL31=1                   \
        ARM_LINUX_KERNEL_AS_BL33=1        \
        PRELOADED_BL33_BASE=0x80080000    \
        ARM_PRELOADED_DTB_BASE=0x82000000 \
        all fip
    
    Change-Id: If9dc847c65ae2d0c27b51f0fd44fc06b28497db9
    Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
    b726c169
user-guide.rst 85.2 KB