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

Reply via email to