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.

内核引导失败,死在Starting kernel ...



## Booting kernel from Legacy Image at c0700000 ...
   Image Name:   Linux-2.6.32-rc6
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1933912 Bytes =  1.8 MB
   Load Address: c0008000
   Entry Point:  c0008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

 

现象描述一下: uboot和uImage 我同样下载到参考板可以正常引导]内核,但是下载到自己的板子上,就死在这里;请问下可能什么原因?

2个板子的操作动作时一样的的

1、显示通过串口烧录 uboot,都能常常启动,都有提示符号出来;

2、然后通过tftp下载uImage,都能成功,写入nandflash,然后我在uboot下用nand read.e 0xc0700000 0x 200000 0x250000,然后用md 可以显示出内存0xc0700000的内容比较了下,和uImage是一样的;

为什么我的板子bootm 0xc0700000   执行就死在上面的位子呢?

首先参考板上uboot和uImage能起来并正常输出,是否能说明我这个内核和uboot是正常的吧;我看到网上说有可能 uboot和uImage配置有问题,串口不是同一个,或是CPU的频率不一样,这个问题应该能排除吧

另外我的板子和参考板的区别在于ddr2不一样,我用的三星的,参考板是镁光的;其他的CPU和nandflash都是一样的。难道内核还要重新初始化ddr2?

请指点下,下步该怎么去排除问题?

谢谢!

 

,

 

  • 你好,看看下面三点是否对你有帮助:

    1、DDR2不一样的话,那需要看一下两个芯片的频率是否是一样的,如果不一样也是需要修改的;

    2、看启动参数设置的串口是否与实际使用的串口一样;

    3、因为默认是串口1,如果实际使用的不是默认的话,就需要修改uboot和内核文件。

  • 你好,关于你说的的串口问题应该可以排除,因为参考能正常启动,而自己的板子和参考板的串口都有一样的;uboot启动的时候我的板子uboot也是有信息输出的;你说的第一条的意思我没明白,uboot在初始化ddr2后,linux里面是不是有个宏定义可以关掉ddr2的初始化?  如果我uboot能正常启动,那说明ddr2的配置应该没问题吧;你说修改是指什么?

  • 自己顶起来,   现在还是一筹莫展,请指教!

  • 你这个一般都是串口配置出错的问题。留个邮箱,我给你传一份uImage,运气好的话,可能就起来了。

    同一个uImage,不是说参考板能跑起来。你自己的板子就能跑起来。

    我写过一篇文章wenku.baidu.com/.../d1cef2e9102de2bd97058804.html  你参考下.

  • 好的,我的邮箱:   isdingtao@126.com

  • 谢谢上面那位,你给的uInage下载进去有进展,现在卡在

    ## Booting kernel from Legacy Image at c0700000 ...

      Image Name:   Linux-2.6.32-rc6

      Image Type:   ARM Linux Kernel Image (uncompressed)

      Data Size:    1933912 Bytes =  1.8 MB

      Load Address: c0008000

      Entry Point:  c0008000

      Verifying Checksum ... OK

      Loading Kernel Image ... OK

    OK

    Starting kernel ...

    Uncompressing Linux... done, booting the kernel.

  • 在uboot控制台下,输入pri,贴出来,让我看下你的env设置。

  • > printenv

    bootargs=mem=128M console=ttyS2,115200n8 root=/dev/ram0 rw initrd=0xc1180000,4M ip=dhcp

    bootcmd=

    bootdelay=3

    baudrate=115200

    bootfile="uImage"

    ethaddr=0a:c1:a8:15:fa:c0

    ipaddr=192.168.1.108

    serverip=192.168.1.100

    stdin=serial

    stdout=serial

    stderr=serial

    ver=U-Boot 2009.01 ( 5鏈?03 2012 - 09:43:31)

  • bootcmd?????

  • U-Boot > pri

    baudrate=115200

    bootfile="uImage"

    ethaddr=00:00:68:23:0b:c1

    bootdelay=3

    filesize=301DA2

    fileaddr=C1180000

    ipaddr=192.168.1.200

    serverip=192.168.1.66

    bootargs=mem=128M console=ttyS2,115200n8 root=/dev/ram

    bootcmd=nand read.e 0xc0700000 0x200000 0x230000;nand read.e 0xc0a00000 0x500000 0x1000000;bootm 0xc0700000 0xc0a00000

    stdin=serial

    stdout=serial

    stderr=serial

    ver=U-Boot 2009.11 (Nov 09 2011 - 07:48:52)

  •  前几天有事,耽误了一阵,上面那个仁兄;   bootcmd  也可以在uboot启动后,手动输入吧,先读:nand read.e 0xc0700000 0x200000 0x230000;然后在执行 bootm 0xc0700000 0xc0a00000   ;这样会有区别吗?

  • 我看你的env,明显是用的ramdisk,那么只读nand read.e 0xc0700000 0x200000 0x230000,你觉得可以吗?

  • 你好,我改成nfs文件系统启动,也是一样的,下面是过程

    founder.dt > pri

    bootcmd=

    bootdelay=3

    baudrate=115200

    bootfile="uImage"

    ethaddr=0a:c1:a8:15:fa:c0

    ipaddr=192.168.1.108

    serverip=192.168.1.100

    machid=0x7d9

    bootargs=console=ttyS2,115200n8 noinitrd rw ip=192.168.1.108 root=/dev/nfs nfsroot=192.16

    8.1.101:/opt/nfs,nolock mem=128M

    stdin=serial

    stdout=serial

    stderr=serial

    ver=U-Boot 2009.01 ( 5鏈?03 2012 - 09:43:31)

    Environment size: 347/131068 bytes

    founder.dt > nand read.e 0xc0700000 0x200000 0x200000

    NAND read: device 0 offset 0x200000, size 0x200000

    2097152 bytes read: OK

    founder.dt > bootm 0xc0700000

    ## Booting kernel from Legacy Image at c0700000 ...

      Image Name:   Linux-2.6.37

      Image Type:   ARM Linux Kernel Image (uncompressed)

      Data Size:    1423928 Bytes =  1.4 MB

      Load Address: c0008000

      Entry Point:  c0008000

      Verifying Checksum ... OK

      Loading Kernel Image ... OK

    OK

    Using machid 0x7d9 from environment

    Starting kernel ...

    Uncompressing Linux... done, booting the kernel.

  • 哎...我hold不住了...1.对照你的原理图看看到底哪个是debug uart 。

                                     2.看看machid是不是有问题?  看这情况,应该没问题。

                                     3.加打印慢慢来吧,看看到底在哪里停下来了。

                                     4.试试上电20s之后能不能ping 192.168.1.108 。如果不确定板子IP是不是108的话,那就在/etc/下找个文件执行一个ifconfig eth0 192.168.1.108的脚本。 如果ping不通,至少可以排除串口配置出错的问题。

  • 可以看看uboot的配置ttyS2 对应的是哪个

  • 你好,我也出现楼主的情况,也看过你写的这篇文章,也是移植2.6.37内核(TI官网下的,适合AM37x),只不过没有你文章指示的串口选项(2.6.32是有的),在Kconfig加入,问题还没有解决!请问会是哪里出了问题呢?还是我需要在Makefile里面加入编译串口?

  • 内存的参数需要重新配置

  • 你参考下附件中的xls看看

  • 你好,我也遇到同样的问题,

    请加QQ 316583823,备注TI  chip 讨论。

  • 在这个地方挂住了,多半和内存配置有关系,我建议您把内存再检查下

  • 自己的板子与开发板相比较,是否有些外设的增删?比如USB

  • 您好,硬件的增删会引起内核无法启动码?我们画dm368的板子参照的是dm368ipnc,硬件做了些删减,usb,sd卡等都没用。用appro3.1sdk里的ubl,uboot,就是启动不了它的内核,可以看到ubl,uboot的打印信息,串口配置应该没问题,每次都死在starting kernel...     启动内核时我用示波器测量板子的两个串口,都没有信号,我觉得内核就没有启动。   但是我从网上下载的ubl,uboot就能把appro3.1的kernel启动。    会是因为硬件的改动使内核启动不了吗?但是ubl和uboot怎么没有问题?板子的flash和ddr没有改动,用的和参考板是同一种芯片。

  • Wenzhen Hu 说:

    您好,硬件的增删会引起内核无法启动码?我们画dm368的板子参照的是dm368ipnc,硬件做了些删减,usb,sd卡等都没用。用appro3.1sdk里的ubl,uboot,就是启动不了它的内核,可以看到ubl,uboot的打印信息,串口配置应该没问题,每次都死在starting kernel...     启动内核时我用示波器测量板子的两个串口,都没有信号,我觉得内核就没有启动。   但是我从网上下载的ubl,uboot就能把appro3.1的kernel启动。    会是因为硬件的改动使内核启动不了吗?但是ubl和uboot怎么没有问题?板子的flash和ddr没有改动,用的和参考板是同一种芯片。

    这个要具体看kernel停在什么地方,有些关键的外设去掉了,但是驱动没有做相应的配置,kernel会卡在这里

  • 看board.c里UART初始化和bootargs里的console的关系