How should I build u-boot for qemu_arm64_defconfig and run it on arm64 qemu virt machine?

Simon Glass sjg at chromium.org
Mon May 8 23:23:11 CEST 2023


Hi Chan,

On Mon, 8 May 2023 at 03:41, Chan Kim <ckim at etri.re.kr> wrote:
>
> Hello experts,
>
>
>
> Today I tried this test from scratch.
>
> In my environment, CROSS_COMPILE=aarch64-none-elf.
>
> Under u-boot directory, when I do 'make CROSS_COMPILE=aarch64-none-elf-
> qemu_arm64_defconfig' and 'make -j28', I see this error at the end.
>
>
>
> aarch64-none-elf-ld.bfd: invalid length for memory region .sram
>
>
>
> after examining it, I added in include/configs/qemu-arm.h,
>
>
>
> #define CONFIG_SPL_MAX_SIZE value to 0x400000
>
>
>
> After fixing it, I got another similar error for .sdram and I added in
> include/configs/qemu-arm.h,
>
>
>
> #define CONFIG_SPL_BSS_START_ADDR 0x40800000
>
> #define CONFIG_SPL_BSS_MAX_SIZE 0x100000
>
>
>
> Now I can do 'make -j28' with no error.
>
> But I found I have both 'u-boot' and 'spl/u-boot-spl' generated and I
> realized for this qemu_arm64_defconfig, CONFIG_SPL=y and I get both u-boot
> proper and u-boot spl. (SPL: secondary program loader, proper: main
> bootloader. SPL runs first and the proper runs next).
>
>
>
> Until now I did objcopy of the u-boot(proper) and then extended it to
> 0x400000 byte. (the pflash size of the virt machine which starts at address
> 0x00000000).
>
> $ aarch64-none-elf-objcopy -O binary u-boot.v2022.07/u-boot pflashp.img
>
> $ dd if=/dev/zero of=pflashp.img bs=1c count=1 seek=67108863
>
>
>
> And the qemu command is :
>
> $ qemu-6.2.0/build/aarch64-softmmu/qemu-system-aarch64 -machine
> virt,gic-version=max,secure=on,virtualization=true -cpu max -drive
> if=pflash,file=pflashp.img -m 2G -nographic -device
> loader,file=linux-5.15.68/arch/arm64/boot/Image,addr=0x80200000
>
>
>
> The qemu virt machine has RAM from 0x40000000 until 0xbfffffff.
>
> And I could see u-boot runs and it waits input for 3 seconds and outputs the
> u-boot prompt.
>
> This is running u-boot (proper) from address 0 but since I have u-boot-spl
> too, I should run it from u-boot-spl first, shouldn't I?
>
>
>
> How am I supposed to run u-boot-spl and u-boot on this qemu machine? (from
> lds files, it looks like they both start at address 0).
>
> (qemu machine is arm64 virt machine, qemu 6.2.0).

Have you tried the docs here?

https://u-boot.readthedocs.io/en/latest/board/emulation/qemu-arm.html

Why are you trying to run SPL?

Regards,
Simon


More information about the U-Boot mailing list