On 11 October 2015 at 09:34, Yehuda Yitschak <yehu...@marvell.com> wrote: > Hi Laszlo > >> -----Original Message----- >> From: Laszlo Ersek [mailto:ler...@redhat.com] >> Sent: Thursday, October 08, 2015 22:21 >> To: Yehuda Yitschak >> Cc: edk2-devel@lists.01.org; leif.lindh...@linaro.org >> Subject: Re: [edk2] Cross compiling EDK2 for Aarch64 >> >> Obviously I forgot one command (because it need not be reissued every >> time): >> >> On 10/08/15 21:17, Laszlo Ersek wrote: >> > On 10/08/15 10:24, Yehuda Yitschak wrote: >> >> Hello everyone >> >> >> >> I am new to the EDK2 projects and for starters I am trying to cross >> >> compile the project for aarch64 on an x86_64 host >> >> >> >> I looked around in Linaro website and Tiano-core website but couldn't >> >> find any instruction on how to _cross_ compile >> >> >> >> I tried to follow the instruction here: >> >> https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build >> >> but when I try to compile using the "build" command the build script >> >> uses the x86 compiler and naturally it fails I tried working around >> >> this by setting the environment variable GCC48_BIN however then the >> >> build system tries to call "make" from the path in GCC48_BIN which >> >> off course fails >> >> >> >> I also found these instructions >> >> https://github.com/tianocore/tianocore.github.io/wiki/Unix-like_syste >> >> ms#Build_gcc_x64_UEFI_cross_compiler >> >> But I'm not sure they apply to aarch64. >> >> >> >> I appreciate any suggestions you can offer >> > >> > Here's how I do it: >> > >> > - download & install the latest cross-compiler toolchain from Linaro's >> > website, for example: >> > >> > https://releases.linaro.org/15.06/components/toolchain/binaries/4.8/aa >> > rch64-linux-gnu/ >> > >> > The tarball you most probably want is >> > >> > gcc-linaro-4.8-2015.06-x86_64_aarch64-linux-gnu.tar.xz >> > >> > assuming you use Linux. If you use Windows, I guess you need: >> > >> > gcc-linaro-4.8-2015.06-i686-mingw32_aarch64-linux-gnu.tar.xz >> > >> > Now extract this somewhere, and put its "bin" directory on your PATH. >> > Notice that it has filenames like "aarch64-linux-gnu-gcc". >> > >> > Once this is done, you can build ArmVirtQemu.dsc (for getting AARCH64 >> > firmware that runs on "qemu-system-aarch64 -M virt") like this: >> > >> > $ source edksetup.sh >> >> after this: >> >> $ make -C "$EDK_TOOLS_PATH" >> >> Thanks >> Laszlo >> >> > >> > $ export GCC48_AARCH64_PREFIX=aarch64-linux-gnu- >> > >> > $ build \ >> > -a AARCH64 \ >> > -t GCC48 \ >> > -p ArmVirtPkg/ArmVirtQemu.dsc \ >> > -n 8 \ >> > --report-file=.../build.aa64virt.report \ >> > --log=.../build.aa64virt.log \ >> > -b DEBUG \ >> > -D DEBUG_PRINT_ERROR_LEVEL=0x8040004F \ >> > -D SECURE_BOOT_ENABLE >> > >> > (See "build --help" for what's what.) >> > >> > The final firmware image is somewhere under the Build directory, >> > you'll have to consult the FDF file referenced with FLASH_DEFINITION >> > in the DSC file for finding out its name. >> > >> > For example, "ArmVirtPkg/ArmVirtQemu.dsc" references >> > "ArmVirtPkg/ArmVirtQemu.fdf", and the latter has a section called >> > [FD.QEMU_EFI], so the file you'd look for under Build is "QEMU_EFI.fd". >> > >> > For installing and/or running the firmware binary, further actions may >> > be necessary, of course. (In case of QEMU, the QEMU_EFI.fd file needs >> > to be padded to 64MB, etc etc, you can google the instructions in the >> > Linaro and Fedora wikis.) > > I tried following this guide on Linaro's website > https://wiki.linaro.org/LEG/UEFIforQEMU > I built qemu-system-aarch64 myself using qemu-2.4 since it cannot be > installed using apt-get on Ubuntu-14.04. > > I managed to get to the boot phase with the message "the default boot > selection will start in 3 seconds" > But when I press enter to get to the boot menu (or even if don't press > anything) I get: > ASSERT_EFI_ERROR (Status = Not Found) > ASSERT > /home/yehuday/projects/uefi/linaro-edk2/ArmPlatformPkg/Bds/BootMenu.c(1014): > !EFI_ERROR (Status) > Which seems like the bootMenu package is somehow missing or misconfigured
Indeed, you are using the ARM BDS but are missing the LinuxLoader EFI app. This is a known issue, and was fixed here: https://github.com/tianocore/edk2/commit/1c51e601a0514a60dcdf48faba00b89deaff456a > I got a few other error messages. Not sure they are related: > - InstallProtocolInterface: 09576E91-6D3F-11D2-8E39-00A0C969723B > 7B8F2858 > VirtioMmioInit: Warning: The VendorId (0x554D4551) does not match > the VirtIo VendorId (0x1AF4). > - ValidateFvHeader: No Firmware Volume header present > NorFlashFvbInitialize: ERROR - The FVB Header is not valid. > Installing a correct one for this volume. > > I followed the steps on linaro's page one by one except I used my own build > of qemu. > Did I miss any step in the way ? > > Thanks > > Yehuda > >> > >> > Thanks >> > Laszlo >> > _______________________________________________ >> > edk2-devel mailing list >> > edk2-devel@lists.01.org >> > https://lists.01.org/mailman/listinfo/edk2-devel >> > > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel