您的位置:控制工程论坛网论坛 » 嵌入式系统 » Linux-2.6内核移植过程中常见问题及解决方法

caizhengsuo

caizhengsuo   |   当前状态:在线

总积分:3196  2024年可用积分:0

注册时间: 2008-02-22

最后登录时间: 2015-10-16

空间 发短消息加为好友

Linux-2.6内核移植过程中常见问题及解决方法

caizhengsuo  发表于 2008/10/15 8:51:19      824 查看 0 回复  [上一主题]  [下一主题]

手机阅读

Linux-2.6内核移植过程中常见问题及解决方法

Linux-2.6内核移植过程中常见问题及解决方法 1、内核启动后,出现如下提示后停住 Uncompressing Linux........................................................... done, booting the kernel 一般情况下,这个时候内核已经启动了,只不过在控制台console中没有打印信息而已。所以问题主要锁定在串口这一块。首先确定你的板子包括硬件都是没有问题的。可以分以下几种情况,最常见的原因是在内核启动命令行这块cmdline,一般情况下linux-2.4内核中,console=ttyS0,而linux-2.6内核则用console=ttySAC0。还有一个原因,不多见,我当时用的是S3C2410的板子,bootloader用的是u-boot-1.0.0,内核移植的是linux-2.6.16,结果出现这个问题,在网上查了很多资料,最后找出来问题。u-boot把S3C2410的时钟设置为202Mhz,而内核启动时使用的是200Mhz,修改U-Boot中的MPLLCON: clk_power->MPLLCON MPLLCON = 0x0005c040;//MPLL=200Mhz 2、内核编译成功后,启动后出现如下提示后就停住了。。。。。。 Freeing init memory: 72K Warning: unable to open an initial console. 这个也是控制台console的问题,linux-2.6.13以后的内核都支持devfs,而之后版本的内核就把devfs这块去掉了,虽然还能在内核源码中找到对应的源码,你也可以把它加进内核,但是也不是太好用。2.6.13 后的版本改为支持udev了,udev这块我也没太弄懂,正在研究。因此如果你是linux-2.6.13版本一下的内核,编译的时候在Pseudo filesystems添加dev filesystem surpport选项,也就是添加devfs的支持,如果linux-2.6.13之后的版本,你就看看你的rootfs下有没有/dev/console这个文件,没有的话,自己做一个就可以 #mknod console c 5 1 3、内核启动后,打印出一大堆提示信息 Unable to handle kernel xxxx pointer dereference at virtual address xxxxxx …… r10: 00000000 r9 : 00000000 r8 : 00500001 r7 : 00000001 r6 : c011ab50 r5 : c3726c00 r4 : c013e024 r3 : 00000000 r2 : 00000000 r1 : 00000000 r0 : c3726c00 …. <0>Kernel panic - not syncing: Attempted to kill init! 这个提示是内核启动加载驱动时出错,那就只有找到出错的驱动,不加载它,如果必须要用这个驱动,只有自己修改源代码,一般问题都在对硬件的地址操作有问题。一般情况下,芯片出来的时候厂家都会给一个参考设计方案,主要是硬件电路,如果你是用的是开发板的话,大都是参考厂家的那个设计做的。而内核也按参考方案设计的,但是每家的开发板并不能保证硬件电路一样,问题可能就出现了。
1楼 0 0 回复