This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAPL138 -linux内核移植,停止在Uncompressing Linux... done, booting the kernel.求助



先说PSP包中的DaVinci-PSP-SDK-03.22.00.06中,内核和uboot使用的是包中的,对于uboot使用的配置文件是da850sdi.h,做的修改主要是DDR的寄存器值修改,串口号的修改为串口1,加入NORflash的支持(我的板子上只有NORFLASH),对于内核只是做了串口的修改,将串口号修改成了串口1,即arch/arm/mach-davinci/include/mach/uncompress.h文件中关于串口定义的全部都修改成了串口1,配置内核使用da850_sdi_defconfig,uboot能够正常工作,但是内核却一直卡在Uncompressing Linux... done, booting the kernel这里,本想根据网上常说的几种方法进行解决,但是途中遇到如下问题不知怎么解决:

machine type 不匹配解决方法时,我在uboot中的da850sdi.h中并没有找到相关定义,而是在arch/arm/include/asm/mach-types.h中找到了相关定义MACH_TYPE_DAVINCI_DA850_SDI 为2596,在linux内核中的MACH_TYPE_DAVINCI_DA850_SDI 也是2596,所以这个地方应该不存在这样的问题

2 串口没有编译到内核,这个问题就没看懂了

内核启动参数设置错误,我的内核启动参数是:bootargs=root=/dev/ram0 rw initrd=0xc1180000,5M ip=Off console=ttyS1,115200n8,不知道这样设置是否有错

问题:

1 、我注意到无论是uboot还是linux内核都有一个SDI和一个EVM的配置文件,请问这是两块不同的开发板吗?这两块板子有各自相应的硬件原理图啊?

2 、以上配置不知道是否存在缺陷,请大神指教

3 、现在遇到这样的问题,不知道如何进行调试分析,请各位大神给点意见吧


  • 好像还是可能是UART号的问题,我没记错的话,Uncompressing Linux... done, booting the kernel还是UBOOT打印的,后面就交给内核打印了,UART不对,所以看不到打印了。

  • 当内核刚启动时,printk还不能将信息输出到串口或LCD,只是将它们记录到log buffer,启始地址为__log_buf(可从System.map得到),然后重启进到uboot,使用md查看buf里的信息。
    例如:

    System.map


    c0363bac b printk_time
     
    c0363bb0 b __log_buf

    c0373bb0 b console_cmdline

     

    u-boot # md 0xc0363bb0
     
    c0363bb0: 4c3a353c 78756e69 72657620 6e6f6973 <5:Linux version

    c0363bc0: 362e3220 2e35332e 620d3231 682d3174 2.6.35.12.bt1-h

    c0363bd0: 30353369 30317635 72282030 40746f6f i3505v100 (root@

    c0363be0: 61636f68 736f686c 6f6c2e74 646c6163 hocalhost.locald

    c0363bf0: 69614d6f 2820296e 20636167 73726576 oMain) (gac vers

    c0363c00: 206e6969 2e352e34 53282032 58694e4f iin 4.5.2 (SONiX

    c0363c10: 43434520 352e342d 5220122e 61656c65 ECC-4.5.. Relea

    c0363c20: 12206573 2d313130 300d1231 29202936 se .011-1..06) )

    c0363c30: 32312320 64655720 63654420 20383220 #12 Wed Dec 28

    c0363c40: 352a3930 38353a33 54520320 31303220 09*53:58 .RT 201

    c0363c50: 343c0a31 5550433e 5241203a 3632394d 1.<4>CPU: ARM926

    c0363c60: 532d4a45 31345b20 32393630 205d3536 EJ-S [41069265]

    c0363c70: 68766572 6e6f6973 28203520 764d5241 revhsion 5 (ARMv

    c0363c80: 4a415435 63202c29 30303d72 31333530 5TAJ), cr=000531

    c0363c90: 3c0a3737 50433e34 56003a55 20545649 77.<4>CPU:.VIVT

    c0363ca0: 61746164 63616320 202c6168 54564956 data cacha, VIVT

    (不停回车,可以继续看后面内容,直到为全为0)

    通过此方法可以查到内核启动停在哪了。

  • 能将加入NORflash支持的代码发给我参考下?方便的话:1206591902@qq.com,谢谢!

  • 我遇到过类似的问题,是因为内核编译时设置的调试串口uart号和实际使用的调试uart号不一致问题。