1.准备edk2
注意,编译时提示uuid.h not found,需要安装uuid-dev
make -C BaseTool V=s
GCC49_AARCH64_PREFIX=~/works/gcc-linaro-aarch64-none-elf-4.9-2014.07_linux/bin/aarch64-none-elf- \
make -f ArmPlatformPkg/Scripts/Makefile EDK2_ARCH=AARCH64 \
EDK2_DSC=ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.dsc \
EDK2_TOOLCHAIN=GCC49 EDK2_BUILD=DEBUG \
EDK2_MACROS="-n 6 -D ARM_FOUNDATION_FVP=1"
编译完成后,BL33文件位于:
Build/ArmVExpress-FVP-AArch64/DEBUG_GCC49/FV/FVP_AARCH64_EFI.fd
2.编译ARM trusted firmware
CROSS_COMPILE=~/works/gcc-linaro-aarch64-none-elf-4.9-2014.07_linux/bin/aarch64-none-elf- \
BL33=~/works/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC49/FV/FVP_AARCH64_EFI.fd \
V=99 DEBUG=1 \
make all fip
编译结果:
Building fvp
long opt (0) : name = bl2
long opt (1) : name = bl30
long opt (2) : name = bl31
long opt (3) : name = bl32
long opt (4) : name = bl33
long opt (5) : name = dump
long opt (6) : name = help
long opt (7) : name = (null)
Firmware Image Package ToC:
---------------------------
- Trusted Boot Firmware BL2: offset=0xB0, size=0x3008
file: './build/fvp/release/bl2.bin'
- EL3 Runtime Firmware BL3-1: offset=0x30B8, size=0x5010
file: './build/fvp/release/bl31.bin'
- Non-Trusted Firmware BL3-3: offset=0x80C8, size=0x280000
file: '/home/manfeel/works/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC49/FV/FVP_AARCH64_EFI.fd'
---------------------------
Creating "build/fvp/release/fip.bin"
Built build/fvp/release/fip.bin successfully
3.运行
~/works/Foundation_v8pkg/models/Linux64_GCC-4.1/Foundation_v8 \
--cores=4 \
--no-secure-memory \
--visualization \
--gicv3 \
--data="/home/manfeel/works/arm-trusted-firmware/build/fvp/debug/bl1.bin"@0x0 \
--data="/home/manfeel/works/arm-trusted-firmware/build/fvp/release/fip.bin"@0x8000000
当前目录需存在BL2,BL3的镜像,fvp利用semi hosting IO来完成载入.