On 10/11/15 09:34, Yehuda Yitschak 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

As Ard and Leif explained, you weren't using upstream edk2. The above
error is related to not using the Intel BDS, but that's no longer an
issue if you use upstream.

> 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).

This is a harmless warning, you can ignore it.

>       - ValidateFvHeader: No Firmware Volume header present
>          NorFlashFvbInitialize: ERROR - The FVB Header is not valid. 
> Installing a correct one for this volume.

Also harmless; you see this when the varstore flash chip is not
"formatted" yet (i.e., on the very first run). I got an independent
report about this just before yours, so maybe we should clean this up in
upstream edk2 -- downgrade the error message to INFO (both the text and
the error level).

Thanks
Laszlo

> 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

Reply via email to