Hello all,
Just so you know, both ARM Trusted Firmware (TF) and UEFI have changed.
The 13.03 release has TF code that is pre v0.3. Since v0.3, TF expects to load all other bootloader stages from a "Firmware Image Package" (aka FIP).
This includes UEFI.
Also, the upstream UEFI code for FVP has changed. It is no longer built to run from NOR flash at address zero, but instead, it runs from RAM.
This means that you cannot use the lastest TF with an old UEFI binary and you cannot use the latest UEFI binary with the old TF.
I've updated the CI job for FVP's TF so that it now builds UEFI, then builds TF, then build the FIP blob with the UEFI binary inside it.
Currently the job builds from the release-prep branch of linaro-edk2.git. This actually contains the upstream Tianocore code at the moment, so it will be missing a lot of the features you might want, like ethernet, or Linaro's local-FDT mods.
I'll run another job after release-prep has been updated. And I'll have to update the hwpack to include fip.bin and so on.
You can find the CI job here: https://ci.linaro.org/jenkins/view/components/job/fvp-pre-boot/
With the output binaries here: http://snapshots.linaro.org/components/kernel/fvp-pre-boot/38
And you can find the script here: http://git.linaro.org/ci/fvp-pre-boot.git
The basic commands to build it all distil down to something like:
git clone git://git.linaro.org/uefi/linaro-edk2.git cd linaro-edk2 uefi-build.sh fvp_minimal export BL33=`pwd`/`find . -name FVP_AARCH64_EFI.fd` cd .. git clone git://git.linaro.org/arm/models/arm-trusted-firmware.git cd arm-trusted-firmware CROSS_COMPILE=aarch64-linux-gnu- make PLAT=${platform} all fip
Then you will have bl1.bin and fip.bin in build/fvp/release/.
When you launch the FVP model, you specify the bl1.bin as normal. However, instead of passing the UEFI binary to the NOR Flash arg, you pass fip.bin, eg:
-C bp.flashloader0.fname=<path to>/fip.bin
Hope that all helps.
Cheers, Ryan.