[U-Boot] Booting armv8 kernel on uboot

fenghua at phytium.com.cn fenghua at phytium.com.cn
Tue May 27 15:56:10 CEST 2014


Dear Tom, Tiger, 

> 
> hi Tom,
> 
>> On Thu, May 22, 2014 at 10:26:17PM +0800, fenghua at phytium.com.cn wrote:
>>> 
>>> 
>>>> Hi ,
>>>> I have added mmc driver into the vexpress64 board file for uboot and tested
>>>> it on FVP base model. I tried booting a kernel on that but it is aborting
>>>> with the following message:
>>>> Final value for argc=3
>>>> Loading Kernel Image ... OK
>>>> kernel loaded at 0x00080000, end = 0x00827024
>>>> using: FDT
>>>> reserving fdt memory region: addr=80000000 size=10000
>>>> ## initrd_high = 0xffffffffffffffff, copy_to_ram = 1
>>>> ramdisk load start = 0x00000000, ramdisk load end = 0x00000000
>>>> ## device tree at 0000000090008000 ... 000000009000a850 (len=22609 [0x5851])
>>>> Loading Device Tree to 000000009fffa000, end 000000009ffff850 ... OK
>>>> Initial value for argc=3
>>>> Final value for argc=3
>>>> ## Transferring control to Linux (at address 80000)...
>>>> Starting kernel ...
>>>> 
>>>> "Synchronous Abort" handler, esr 0x02000000
>>>> ELR:     80000
>>>> LR:      fff90fc8
>>>> x0 : 000000009fffa000 x1 : 000000001c090000
>>>> x2 : 000000001c090000 x3 : 0000000000000020
>>>> x4 : 00000000fff6b834 x5 : 0000000000000000
>>>> x6 : 00000000fff6bb40 x7 : 00000000ffffffd0
>>>> x8 : 000000000000000f x9 : 000000007ff8e000
>>>> x10: 00000000fffb7188 x11: 0000000000000000
>>>> x12: 0000000000006000 x13: 0000000000000004
>>>> x14: 0000000000000003 x15: 00000000fffc7c20
>>>> x16: 0000000000000000 x17: 0000000000000000
>>>> x18: 00000000fff6beb8 x19: 0000000000080000
>>>> x20: 00000000fffc7a70 x21: 0000000000000000
>>>> x22: 0000000000000000 x23: 00000000fff6d8d8
>>>> x24: 0000000000000000 x25: 00000000fffc2630
>>>> x26: 0000000000000000 x27: 0000000080008000
>>>> x28: 0000000000000000 x29: 00000000fff6bb40
>>>> 
>>>> Can anyone please provide the procedure on how to boot the kernel with
>>>> u-boot on armv8 models ?
>>> I always use mkimage converting kernel to uImage and booting it. It works fine.
>>> Wish this help you.
>> 
>> Which version of the model are you using and which kernel tree?  Thanks!
>> 
> The model is the most recent FVP from linaro website and the kernel is a very old one.
> But mkimage has nothing to do with the kernel. uImage produced
> by mkimage is correctly loaded by u-boot for aarch64. 
> I will make a test with the most recently kernel and give you feedback.
> 
I have made a kernel booting test.

u-boot:  cloned from git tree.
Foundation Model: FM000-KT-00035-r0p8-52rel06.tar, downloaded from arm website.
Linux kernel: linux-3.14.4.tar.xz, stable version from kernel.org

steps:
1. compile u-boot,  replace CONFIG_GICV3 with CONFIG_GICV2 in vexpress_aemv8a.h
    due to GICv3 support has not been upstream to kernel mainline.

2. compile linux kernel, use arch/arm64/boot/configs/defconfig as the default configuration.
    then, 
    mkimage -A arm64 -O linux -C none -T kernel -a 0x80080000 -e 0x80080000 -n 3.14.4 -d Image uImage

3. use linux/arch/arm64/boot/dts/foundation-v8.dts as the device tree, because CONFIG_SYS_TEXT_BASE is          0x80000000 I reconfigure 'cpu-release-addr' as 0x8007fff0.
   then,
   dtc  foundation-v8.dts -O dtb -o u-boot.dtb

4. run foundation model:
    Foundation_v8 --image=u-boot.elf --data=uImage at 0x90000000 --data=u-boot.dtb at 0xa0000000 --cores=4

5. In u-boot command line, type the following command to boot os,
    bootm 0x90000000 - 0xa0000000

I did not test the rootfs yet.

Best regards,
David




More information about the U-Boot mailing list