因为项目需要,必须要将启动分区写进kernel里,我复制了uboot下的bootargs到kernel的config文件,同时注释掉setup.c中的一行代码,结果后来出现了两个ko加载失败的问题。
定位花了很久,最后发现,使用bootargs方式,是ok的。
找来主任帮看,他找了一台正常的盒子,打印出来uboot的bootargs参数,然后又让我看下kernel启动后,打印出来的 kernel bootcmdline = ‘mem= xxxx’参数,对比一下一看,有不一样的地方
bootargs:
console=ttySAC0,115200 mem=24M frm_buf 0x10000;......
kernel:
console=ttySAC0,115200 mem=24M frm_buf,2,0x61800000,0x10000;
主任说,uboot向kernel传递bootargs参数时,经过了一些转换,这其中,0x61800000是实际地址,uboot帮kernel做了地址偏移。不过frm_buf后米啊紧跟着的2就不知道是啥意思了。
问题留在这里,等待解决。
后来的解决办法是,把bootargs写到uboot里面,然后启动后,打印出转换后的参数,把这行参数,写进kernel的config文件里,就ok了。
网上一篇相关文章,看来要研究kernel代码,才能搞懂我的问题。
http://blog.chinaunix.net/space.php?uid=9863638&do=blog&id=1996379