diff options
author | Isla Mitchell <isla.mitchell@arm.com> | 2017-06-26 14:25:44 +0100 |
---|---|---|
committer | Isla Mitchell <isla.mitchell@arm.com> | 2017-06-28 14:15:25 +0100 |
commit | f5f1f9f2360cb97560fc3163d3dee274d49293e2 (patch) | |
tree | 8779504036f836db64c41cd0da7d346688405a63 | |
parent | 38fe380a9a04d0b4356123ed202abf064ec69cbf (diff) |
Add Juno AArch32 and AArch64 User Guide instructions
Updated section 6, building a FIP for Juno and FVP, adding
instructions for AArch32 and AArch64.
Updated section 4.1, summary of build options, to include a
description of the `JUNO_AARCH32_EL3_RUNTIME` build flag.
Change-Id: I4ed006522cab981371c382859063f088fbfcb8f7
Signed-off-by: Isla Mitchell <isla.mitchell@arm.com>
-rw-r--r-- | docs/user-guide.md | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/docs/user-guide.md b/docs/user-guide.md index d5423ca3..1a07954a 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -379,6 +379,12 @@ performed. 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 @@ corrupted binaries. 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 - - # Juno - make PLAT=juno SCP_BL2=scp-fw.bin BL33=nt-fw.bin all fip +3. Build TF images and create a new FIP for FVP - # 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=<path-to-juno-oe-uboot>/SOFTWARE/bl33-uboot.bin \ + SCP_BL2=<path-to-juno-busybox-uboot>/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=<path-to-aarch32-gcc>/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=<path-to-aarch64-gcc>/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=<path-to-juno32-oe-uboot>/SOFTWARE/bl33-uboot.bin \ + SCP_BL2=<path-to-juno32-oe-uboot>/SOFTWARE/scp_bl2.bin SPD=tspd \ + BL32=<path-to-bl32>/bl32.bin all fip + The resulting BL1 and FIP images may be found in: # Juno |