diff --git a/docs/user-guide.md b/docs/user-guide.md index d5423ca..1a07954 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -379,6 +379,12 @@ and power management operations. This option defaults to 0 and if it is enabled, then it implies `WARMBOOT_ENABLE_DCACHE_EARLY` is also enabled. +* `JUNO_AARCH32_EL3_RUNTIME`: This build flag enables you to execute EL3 + runtime software in AArch32 mode, which is required to run AArch32 on Juno. + By default this flag is set to '0'. Enabling this flag builds BL1 and BL2 in + AArch64 and facilitates the loading of `SP_MIN` and BL33 as AArch32 executable + images. + * `LOAD_IMAGE_V2`: Boolean option to enable support for new version (v2) of image loading, which provides more flexibility and scalability around what images are loaded and executed during boot. Default is 0. @@ -999,17 +1005,54 @@ Note for AArch32, the instructions below assume that nt-fw.bin is a custom Normal world boot loader that supports AArch32. -3. Build TF images and create a new FIP +3. Build TF images and create a new FIP for FVP - # Juno - make PLAT=juno SCP_BL2=scp-fw.bin BL33=nt-fw.bin all fip - - # FVP AArch64 + # AArch64 make PLAT=fvp BL33=nt-fw.bin all fip - # FVP AArch32 + # AArch32 make PLAT=fvp ARCH=aarch32 AARCH32_SP=sp_min BL33=nt-fw.bin all fip +4. Build TF images and create a new FIP for Juno + + For AArch64: + + Building for AArch64 on Juno simply requires the addition of `SCP_BL2` + as a build parameter. + + make PLAT=juno all fip \ + BL33=/SOFTWARE/bl33-uboot.bin \ + SCP_BL2=/SOFTWARE/scp_bl2.bin + + For AArch32: + + Hardware restrictions on Juno prevent cold reset into AArch32 execution mode, + therefore BL1 and BL2 must be compiled for AArch64, and BL32 is compiled + separately for AArch32. + + * Before building BL32, the environment variable `CROSS_COMPILE` must point + to the AArch32 Linaro cross compiler. + + export CROSS_COMPILE=/bin/arm-linux-gnueabihf- + + * Build BL32 in AArch32. + + make ARCH=aarch32 PLAT=juno AARCH32_SP=sp_min \ + RESET_TO_SP_MIN=1 JUNO_AARCH32_EL3_RUNTIME=1 bl32 + + * Before building BL1 and BL2, the environment variable `CROSS_COMPILE` + must point to the AArch64 Linaro cross compiler. + + export CROSS_COMPILE=/bin/aarch64-linux-gnu- + + * The following parameters should be used to build BL1 and BL2 in AArch64 + and point to the BL32 file. + + make ARCH=aarch64 PLAT=juno LOAD_IMAGE_V2=1 JUNO_AARCH32_EL3_RUNTIME=1 \ + BL33=/SOFTWARE/bl33-uboot.bin \ + SCP_BL2=/SOFTWARE/scp_bl2.bin SPD=tspd \ + BL32=/bl32.bin all fip + The resulting BL1 and FIP images may be found in: # Juno