qemu-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

How should I build u-boot for qemu_arm64_defconfig and run it on arm64 q


From: Chan Kim
Subject: How should I build u-boot for qemu_arm64_defconfig and run it on arm64 qemu virt machine?
Date: Mon, 8 May 2023 18:40:31 +0900

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

 

 

Thank you.

 

Chan Kim

 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]