u-boot移植随笔:关于u-boot引导内核出现“Error: unrecognized/unsupported machine ID (r1 = 0x33f4fee8)”的问题

这个问题同样经典,大意是说u-boot传递的machine id不正确。在网上看到的文章几乎如出一辙:有两种方法,一是修改内核的head.S(具体在./arch/arm/kernel目录下),二是修改u-boot代码。可惜,第二种方法中出现的源代码文件,在我移植的版本中没有发现。

我的提示信息是这样的:

(注:这里使用的内核是许久以前我第二次移植linux时使用的。——不禁想起那段奋斗的日子。)

 

在u-boot代码(./board/samsung/smdk2440/smdk2440.c)中,赋值machine ID的代码如下:

 

在linux内核(./arch/arm/mach-s3c2440/mach-smdk2440.c)中,代码是这样:

两者是一致的,都是1008(=0x3f0)。

而且,我在u-boot中打印板子信息也能看到这个machine id(第一行arch_number即是):

按理说,既然大家都一致了,能正常引导才是啊。可惜还是不行。

于是修改了head.S文件,可以了。但是,这个应该是不推荐的方法。

 

后来我在cmd_bootm.c文件中的do_bootm_linux函数中添加一行debug信息:

在启动时显示如下:

注意,Starting kernel ...这行是u-boot打印的。

上面的信息证实了,在启动内核之前的那一刻,machine id还是0x3f0,是正常的。至于为什么就是不能引导,我也不清楚。

 

这个问题搞了很久,不过今天下午却能引导起来了。就是不修改head.S文件,不修改u-boot关键代码(加个Debug信息而已),就可以了。

下面是启动信息:

 

这个诡异的问题到底是怎么回事,山人也不明白。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值