返回信息流三星2440的cpu,自己画得板子,板子在nor flash和nand flash运行uboot都没有问题,之后也运行过一些裸板程序,这些是不是可以说明硬件没问题?
之后内核烧到nand flash里边,无法启动,错误现象不固定:有时不停的重启,之后会出现很多寄存器的值等信息;有时说压缩格式不对(大概是这个意思);有时就停在uncompressing kernel ...处等。反正是启动不了。
之后用uboot通过串口将内核文件直接copy到内存的某处,bootm和go都不行。经过mkimage处理的zImage也不行,但是可以读出来头40个字节里的信息,但是一到启动内核的时候就挂了,现象也是和上边说的差不多。
弄了很久也不知道哪里有问题,硬件原理图也查了,没发现问题,主要是运行uboot什么的都挺好的,就是不能启动内核。而这个内核在买的开发板上可以启动。大家能帮忙分析一下可能是哪的问题吗?我的嵌入式经验比较浅,希望大家给提醒提醒。自己实在没辙了。,谢谢啊
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #10105同步于 2011/1/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
【请教】无法启动内核
jkice
2011/1/13镜像同步19 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
大致看了一下你的描述,很可能是软件问题,我主要怀疑是uboot和内核不太匹配
有几个解决的思路提醒一下
(1)uboot自带memory测试的命令,可以跑一下,看看你的sdram是否可靠(思路是隔离并试图确定问题,如果硬件测试OK,那就认为是软件的事情)
(2)你的uboot用的是哪个版本,最好能找到对应的内核版本(比如某个相似开发板使用的uboot和内核,如果是上网下载的未裁减的源码包,那就找配对的)
此外,版内以前也有不少帖子是讨论系统移植的(你可以版内搜索uboot或者内核之类的东东)
附上一个以前讨论的帖子
http://forum.byr.edu.cn/wForum/disparticle.php?boardName=Embedded_System&ID=6267&pos=7
多说一句:经验说明,别人只能帮你参谋参谋,一般的,找到问题并最终解决问题还是要靠自己!
还有这些个帖子
http://forum.byr.edu.cn/wForum/queryresult.php?boardNames=Embedded_System&title=u-boot
http://forum.byr.edu.cn/wForum/disparticle.php?boardName=Embedded_System&ID=1065&pos=13
大体看看,找找思路,相信你能很快找到问题所在的!
【 在 hobby 的大作中提到: 】
: 还有这些个帖子
: http://forum.byr.edu.cn/wForum/queryresult.php?boardNames=Embedded_System&title=u-boot
: http://forum.byr.edu.cn/wForum/disparticle.php?boardName=Embedded_System&ID=1065&pos=13
: ...................
恩,感谢版主,我先试试,我这还有天嵌的一个2440的板子,硬件就是按照它那个做的,只是做了写裁剪,试的时候都是用天嵌提供的uboot试的,这套uboot和内核在天嵌的板子上是没有问题的。所以搞得我很疑惑。硬件差不多,人家那个都能运行,我自己做的板子不行。但是运行uboot什么的(我也将uboot直接写入过内存,可以运行)却没问题。唉,这肯定是一个成长的过程。呵呵,对了,我的板子是256M的nand flash的,会不会跟这个有关呢?SDRAM是64M的。
呵呵
乍一看觉得一样所以有些很蹊跷,你仔细分析下一定会找到不同的。
话说这也是嵌入式“好玩”的地方嘛——总是能给你各种各样的惊喜。。。
啥意思,跟flash、内存容量有什么关系?
【 在 jkice 的大作中提到: 】
: 恩,感谢版主,我先试试,我这还有天嵌的一个2440的板子,硬件就是按照它那个做的,只是做了写裁剪,试的时候都是用天嵌提供的uboot试的,这套uboot和内核在天嵌的板子上是没有问题的。所以搞得我很疑惑。硬件差不多,人家那个都能运行,我自己做的板子不行。但是运行uboot什么的(我也将uboot直接写入过内存,可以运行)却没问题。唉,这肯定是一个成长的过程。呵呵,对了,我的板子是256M的nand flash的,会不会跟这个有关呢?SDRAM是64M的。
【 在 hobby 的大作中提到: 】
: 呵呵
: 乍一看觉得一样所以有些很蹊跷,你仔细分析下一定会找到不同的。
: 话说这也是嵌入式“好玩”的地方嘛——总是能给你各种各样的惊喜。。。
: ...................
就是自己做的板子和天嵌那个参考版最大的区别就是nand flash大小不一样,不过一想,直接搞到ram都不行,应该和nand flash没什么关系,呵呵。恩,嵌入式最大的魅力就是成功一刹那的喜悦。不过之前还是要有足够的积累啊,呵呵。
刚才看了一下mtest的使用,网上有个人写的是
mtest 0x38000000 0x3BFFFFFC 0xAAAAAAAA 1
Pattern AAAAAAAA Writing... Reading...Tested 1 iteration(s) without error.
是先把0x38000000--0x3BFFFFC 全写成0xAAAAAAAA, 然后读出来比较, 没有报告错误.
我试了一下提示我用法不对,我写成mtest 0x300080000 x30208000 AA,图片中的过程好像很久都没完。。。。
【 在 jkice 的大作中提到: 】
: : 呵呵
: : 乍一看觉得一样所以有些很蹊跷,你仔细分析下一定会找到不同的。
: : 话说这也是嵌入式“好玩”的地方嘛——总是能给你各种各样的惊喜。。。
: ...................
哦,那个是我这个uboot可能把它简化了,换了一个tekkamanninja编的可以了,呵呵,附上这个人的blog,挺流弊的。。。http://blogold.chinaunix.net/u1/34474/index.html
能运行uboot, 内存基本算正常了
uncompressing kernel .. 之后还有其他信息,若有就说明你的内核需要针对你的板子进行配置,或者之后有一堆打印,检查一下是否有文件系统。
若是没有,首先保证内核镜像是在内存 MEM_BASE + 0x8000 处。试着加点灯代码在内核汇编里加点灯代码.
总之要保证你内核镜像配置正确.
【 在 yihang03 的大作中提到: 】
: 能运行uboot, 内存基本算正常了
: uncompressing kernel .. 之后还有其他信息,若有就说明你的内核需要针对你的板子进行配置,或者之后有一堆打印,检查一下是否有文件系统。
: 若是没有,首先保证内核镜像是在内存 MEM_BASE + 0x8000 处。试着加点灯代码在内核汇编里加点灯代码.
: ...................
就uncompressing kernel...这个地方,有的时候还会不停的重启或者说无效的格式什么的。正在想通过点灯等手段看看进行到了那一步。请问一下ads这玩意怎么用,可以通过jtag单步查看内核启动吗?有没有比较好的教程学习学习,谢谢哈
其实我之前做内核移植的时候,一度卡在这个地方。
就像yihang说的,最后发现问题在uboot到内核的传参问题(uboot传进来的开发板配置信息和内核期望读取到的不一致)。
但是你前面描述,启动时候有的时候停在这儿,有的时候重启什么的,所以我在想启动过程中有什么东西不太稳定,所以直接想到的就是内存访问有错。
不过yihang提到,可以用点灯等调试手段,用于获取进一步的调试信息,我觉得是可取的。
话说你现在是找到可用的稳定版本了,但是还是想研究下到底怎么回事?
【 在 jkice 的大作中提到: 】
: 就uncompressing kernel...这个地方,有的时候还会不停的重启或者说无效的格式什么的。正在想通过点灯等手段看看进行到了那一步。请问一下ads这玩意怎么用,可以通过jtag单步查看内核启动吗?有没有比较好的教程学习学习,谢谢哈