MPC8572DS板子调试.doc

上传人:工**** 文档编号:556872977 上传时间:2023-09-22 格式:DOC 页数:24 大小:3.32MB
返回 下载 相关 举报
MPC8572DS板子调试.doc_第1页
第1页 / 共24页
MPC8572DS板子调试.doc_第2页
第2页 / 共24页
MPC8572DS板子调试.doc_第3页
第3页 / 共24页
MPC8572DS板子调试.doc_第4页
第4页 / 共24页
MPC8572DS板子调试.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《MPC8572DS板子调试.doc》由会员分享,可在线阅读,更多相关《MPC8572DS板子调试.doc(24页珍藏版)》请在金锄头文库上搜索。

1、MPC8572DS调试记录5月板子从Freescale寄来了,搞了近一个星期的板子没装上IP,后来才被告知是厂方的问题,板子上电后进入的控制台是开发板子用的,不是Uboot控制台,原来板子出厂的时候忘在里面刷上Uboot了,所以我们把板子寄回去了.到6月份中旬左右板子寄过来了,上电启动后进入了Uboot的控制台,一切正常.于是,等我和士宾一考完所有的科目,便开始部署开发环境.6月22日我和士宾都考完了,我们打算在胡蝶来苏州之前把开发环境先部署完。现在主要的工作就是要把Linux 跑起来。昨天和士宾弄了一个晚上,尝试了说明文档里的第二个方法,即从flash启动,结果文件系统的镜像加载不进去,因为

2、rootfs.ext2.gz.uboot有179M,而整个flash也不过128M,分配给文件系统的区域ramdisk只有48M,因此,我觉得这个方法不可行。带着这个想法,我睡着了,并且早上5点半就醒了。今早6点半就到实验室了,机器启动的时候比较吵,所以我们尽量挑大家都还没来的时候调板子。来了之后我们又浏览了一遍文档,比较了上面的5个部署方法,我只看懂了第一个方法,从ramdisk启动,感觉应该可以,因为这个不用提前将rootfs.ext2.gz.uboot装入flash,绕过了第二种方法的瓶颈。结果,还是遇到了跟昨晚相同情况,三个文件检查都OK,可就是不能启动Linux,卡死在那了。我就看了

3、zsb文件夹里三个文件是不是一次编译完成的,结果发现这三个文件都不是一天传进去的,我猜是不是每次加载必须要使用一次编译的,所以我就从自己电脑上把一次编译通过的三个文件传到了主机上,再用第一个方法部署,结果竟然跑起来Linux了,但没有成功,调试信息显示了上述6个图片,kernel spanic,它崩溃,我也崩溃了,不知道问题出在哪。我现在能想到的原因有两个:要么就是内存条有问题;要么就是在镜像编译的时候出了问题。后者的可能性比较大,如果Uboot用的是36位而Linux用的是32位,那么有可能是要出问题的。所以我现在就重新编译Uboot和Linux,用的都是36位,速度真慢,估计又要用1个多小

4、时了。第一种部署方法:setenv ipaddr 192.168.1.2setenv serverip 192.168.1.4setenv gatewayip 192.168.1.1setenv bootargs root=/dev/ram rw console=ttyS0,115200saveenvtftp 1000000 uImagetftp 2000000 rootfs.ext2.gz.uboottftp c00000 mpc8572ds.dtbbootm 1000000 2000000 c00000士宾说不用一条一条命令输入,系统有集成的一条指令,这个在环境参数中可以自己设置。上电后U

5、boot启动时出现的界面:敲入help可以查看所有Uboot命令,敲入printenv可以查看Uboot下的环境参数:以下是用第一种部署方法启动Linux后出现的信息界面:6月23日今天早上针对错误信息在网上查找了大量的相关资料,类似情况还挺多,不过都没有一个固定的解决方案。下午看了这些资料,并针对可能出现的问题一一操作,可都没有解决问题。目前还有三个解决方案没有实践:一个是要用gcc低版本编译内核,高版本编译可能会出现问题;另一个是要对vmlinux进行反汇编,找到错误指令的地址,然后修改;最后一种解决方案比较抽象,是要用第三种方案,即TFTP+NFS。今天做下来豪无进展,比较泄气,一想到k

6、ernel panic就头痛。刚罗哥说,可以用现成的.config拷到自己机器上进行编译,我觉得可能性甚微。6月24-26日张士宾的周报:目前,板子上的使用方法和技巧已经掌握。五种启动内核的方法,我选择的TFTP方式,这种方式最简单,而且方便多人同时使用。启动Linux内核的批处理:run ramboot烧Uboot的:run tftpflash设置环境变量的命令:setenv其中包括 :ipaddr,serverip,gatewayip,bootargs等环境变量和参数可设置多条命令可根据要求,设置成批处理来执行,这样可以提高工作效率。目前的问题还是Linux内核加载的问题。上周遇到的运行F

7、lash内烧的Linux启动不了,到解压成功,然后死掉。这周依旧没有成功启动,遇到的问题是提示关于SMP的内核代码问题。这个问题,王的想法是内核代码有问题,我不这样认为,我认为内容代码出错的可能性比较小。我认为可能的错误是ramdisk_size参数问题。编译时提示ramdis exceeds the old default size of 4096k,所以,把 ramdisk_size设置大一点,可能会解决,但是,实际情况却是:不能解决。我试着设置了不同大小的ramdisk_size,还是错误依旧。Linux内核倒是没遇到问题,问题是加载完成根文件系统后,然后解压内核镜像,就遇到错误了。怎么

8、解决这个错误,还没有想到方法。查网上,有人遇到这样的错误,但是,没有人解决。王查的结果是Freescale的内核源码有问题,少了一个补丁。我并不认同。虽然我们两个 目前都没解决这个问题,但是,都在努力找答案。可能的原因:第一,环境变量ramdisk_size设置大小问题,但是,这个我已经重新设计多个,还是不能解决。第二,内核代码问题,正如王所查找到的一样,内核缺少一个补丁包。这个可能性是有的,但是,他把补丁包打上了,问题依旧。还是不能解决。第三,可能是内存条物理问题,这个不能测试,因为符合要求的内存条就一个,我试着换其他正常使用的内存条,但是,无效。我想在下周的时候把Memtest的代码移植到

9、Uboot里,检测一下内存是不是有问题,这个工作量可能比较大,完成了这个移植,也就相当于完成了内存检测模块的工作,虽然工作量不小,但是,这个难度偏小。第四,还可能存在的原因就是Mpc8572开发板本身存在未知问题,这个可能性是有的,因为第一次寄过来的板子就是本身有问题,我花了很多时间在上面,去没有任何收获。目前不去考虑这方面因素,还是从代码和配置方面找原因。另外一个严重的问题是从Freescale官方下载的BSP并不太好用,因为这个BSP跟开发板实际跑出来的结果并不完全相同,而且很多问题从BSP里找不到答案。至今已经掌握的有,Uboot源码的修改和编译,Uboot的烧写。Ltib开发平台的使用

10、,Linux源码的修改与配置,以及把相关修改的源码打包成补丁,应用新补丁。现在要解决的问题是:启动Linux内核。重要问题:Git 服务器的配置。这个跟Kmon不一样的是,Kmon开发的时候,是一个分散的平台,基本上就是完全依赖GCC,Uboot和Linux的编译是分开的,而且使用的是SVN来版本控制。使用Ltib的时候,在76上面 会建立一个/opt/freescale/文件夹,如果几个人共同开发,都会使用这个文件夹,如果是这样,就不知道怎么来做版本控制了。Litb的安装是有两个主文件夹,一个是*/ltib,另外一个是/opt/freescale,每个人都可以使用自己的*/ltib,但是,主

11、机只有一个/opt/freescale,这样的情况,如何在一台机器上面多个同时开发,就是一个问题了。下周的事情就是根据这些问题,来找答案。王寅冰的周报:这周前两天看了Linux+PowerPC中MMU设置的源代码文件,这些汇编代码阅读起来基本没有问题.周一周二还看了GIT方面的东西,对这个工具有了了解.之后的几天一直在弄板子,对于板子为什么跑不起来,每次跑到一个ioremap函数就死了.周六之前我和张士宾存在较大分歧,他认为是ramdisk_size方面的问题,而我一直都觉得是内核中的一个文件有问题,因为出错的信息提示了出错的函数名.我反汇编了那段出问题的代码,发现其中有个寄存器指错了地址,因

12、而导致系统死了.周六,我给内核的那个文件打了一个补丁(2.6.36中的补丁,我们目前用的是2.6.31),然后重新跑,结果系统成功越过了之前死掉的地方,不过最后又死了,死在挂载根文件系统的部分,只要成功挂载上去,就能成功启动起来Linux.通过这三天的资料查询,我对目前情况的总结是:要成功启动Linux,要分主次,有步骤的解决以下两个问题:1、首先必须必须要更正BSP包!从官网上下载的BSP包有问题,其中内核的的一个文件(/arch/powerpc/platforms/85xx/smp.c)没有更新,导致系统总是很早就死了.在2009年底由freescale的一个工程师提交了补丁,才修复了这个

13、问题.我也总是对自己说:人家放官网上的BSP包怎么可能有问题.可我后来越来越确定,如果不打这个补丁,以个人鄙见,系统将永远死在ioremap这个函数里,因为指针指到了一个根本不存在的地方!2、只有先解决了上面一个问题后,才轮到ramdisk_size的问题。网上有其它PowerPC机上启动Linux的日志,我看了一遍,发现我们离成功启动Linux只有一步之遥.我很奇怪,别人的根文件系统很小,只有20M左右,为什么我们按照说明书操作,生成的根文件系统会有近180M,很大很大,刚刚初步裁减了一下,到130M左右.我和士宾正在努力,而且胡蝶也过来了.很是惭愧,经过大半个星期的调试,板子还是没有能成功

14、跑起来.但我知道,离最后就差那么一点点了.具体的调试日记,我会在调试成功后一起放在论坛上.如果板子跑不起来,日记写的再完美,也不过是一坨废纸.补丁地址:http:/git.tqc.de/cgi-bin/gitweb.cgi?p=linux-2.6-denx.git;a=commitdiff;h=d1d47ec6e62ab08d2ebb925fd9203abfad3adfbf这个补丁可以启动2个CPU。给内核打完上述补丁后,重新启动Linux时出现的信息界面:6月27-29日这几天士宾早出晚归,把所有时间都花在了最后这一个BUG上,并且立下军令状,说这两天一定搞出来,而我则开始看Ltib命令方面

15、的东西。功夫不负有心人,Linux终于起来了。以下是张士宾解决ramdisk_size问题的方法:MPC8572DS的BSP里包含一个根文件系统” rootfs.ext2.gz.uboot”,默认大小为170MB+,相对于网络上其他说法,此根文件系统太大.不经常裁剪,不能成功在板子上加载.本记录主要说明在MPC8572DS的BSP里给定的ramDisk进行裁剪,裁剪过程简单,且有效解决加载问题.网络上说的ramdisk大概都在几MB或者 几十MB之间,但是Freescale的BSP里给的根文件系统却是170MB+,解压后的大小在570MB+,这样的大小只能在1G及其以上内存跑,本开发板配置如下:CPU:E500v2,双核内存:DDR2,512MB,800主板:MPC8572DSFLASH:MBNAND:4096GiB开发板型号:MPC8572DS 下面主要说裁剪步骤及方法:参考网页: http:/ mkdir -p /temp/loop$ cp /usr/loca

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号