Merge pull request #1009 from islmit01/im/aarch32_juno

Add Juno AArch32 and AArch64 User Guide instructions
This commit is contained in:
danh-arm 2017-06-28 14:51:37 +01:00 committed by GitHub
commit 6bf3624969
1 changed files with 49 additions and 6 deletions

View File

@ -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
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=<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