Starting kernel ...“Synchronous Abort“ handler, esr 0x02000000

记录一下用开发板上已有的uboot启动内核的艰辛

开发板跑的uboot是arm(32位),想让当前的uboot启动64位的内核,开发板的硬件(Core)是支持64位的,那么问题来了,32位的uboot支持64位的linux内核吗,一番搜索也没找到,就姑且认为支持吧。

内核镜像、设备树文件、initrd镜像准备好后,制作its,准备将内核镜像、设备树文件、initrd镜像生成itb在uboot上启动。

将itb加载到内存后,bootm itb进行启动,启动失败,日志如下

Starting kernel ...

"Synchronous Abort" handler, esr 0x02000000

elr: ffffffffe4401000 lr : 0000000060105fb4 (reloc)

elr: 0000000080008000 lr : 00000000fbd0cfb4

x0 : 0000000090000000 x1 : 0000000000000000

x2 : 0000000000000000 x3 : 0000000000000000

x4 : 0000000080008000 x5 : 0000000000000001

x6 : 0000000000000008 x7 : 0000000000000000

x8 : 00000000fbbc3d80 x9 : 0000000001008000

x10: 000000000a200023 x11: 0000000000000002

x12: 0000000000000002 x13: 00000000000102c4

x14: 00000000fbbc3dfc x15: 00000000fbd09318

x16: 0000000000001080 x17: 0000040080000000

x18: 00000000fbbc6d70 x19: 00000000fbdcecb8

x20: 0000000000000000 x21: 0000000080008000

x22: 0000000000000001 x23: 00000000fbbe3bf8

x24: 0000000000000000 x25: 00000000fbdb56c0

x26: 00000000a00000e8 x27: 0000000000000400

x28: 00000000a15c1ddf x29: 00000000fbd0cf7c

Resetting CPU ...

resetting ...

U-Boot

又是一番搜索,然而并没找到解决办法,怀疑是32位的uboot不支持64位的内核镜像,但仅仅是怀疑,想着利用qemu 起 64位的uboot,然后uboot 起64位的内核镜像,要是可以就证实怀疑的观点了,qemu 起64位的uboot 里输入了help ,看到了booti命令,

booti   - boot arm64 Linux Image image from memory

想着是不是必须用booti来启动64位的linux 内核镜像?于是将initrd镜像编译进Linux内核镜像里

这一步需要修改内核配置项以及设置initrd镜像路径

内核配置项做如下修改:

General setup -->

     [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support 

设置路径

General setup -->

     (your_initrd_path) Initramfs source file(s)

然后在uboot命令行加载内核镜像和设备树文件到内存中,下面命令进行启动

booti iamge_adr -  fdt_adr

booti格式     booti addr [initrd[:size]] [fdt]

其中:addr是kernel Image文件所在的memory地址;[initrd[:size]]是initrd在memory中的位置和size,可以不指定,使用“-”代替即可;fdt是flat device tree(就是传说中的dtb文件)在memory中的地址,在ARM64中,它是必选的。

终于进到走进内核启动了。

所以32位的uboot是可以跑64位的内核镜像的,应该是硬件(Core)支持64位的指令集,所以就可以跑。

bootm、booti、bootz 这三个启动内核的命令有待进一步深究才能知道这里错误的原因。

参考文章:X-010-UBOOT-使用booti命令启动kernel(Bubblegum-96平台)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值