最近在做linux的移植工作

发现实验室有一块2005年的DM2410开发板,于是开始做一些ARM9的实验。

后来发现开发板上面的光盘里面的文件系统不能用。

那么我开始移植文件系统的工作。

我本来打算先从编译交叉工具链开始,发现编译的时候跳出来一大堆的错误,头大啊,百度来百度去,感觉是我的Ubuntu用的是gcc4的版本,不能编译太早期的gcc。

于是就用现成的cross-tools来做了,直接解压缩一下就能用了,真方便!

先做busybox的编译,又是一大堆错误,我先用mini2440的busybox1.13.3版本,gcc2.95.2来编译会出好多错误。

网上说要用busybox-1.00,我一编,还是错误不断。

后来干脆用gcc4来编译busybox,编是能编出来,但好像不能用在2.4的内核上面。

又百度啊百度。

后来发现有人是推荐用gcc3.3.2来编译busybox的较早期版本,试了一下,真的很好用。后来在华清远见的资料上看到,gcc3.3.2是同时支持2.4和2.6内核的。

我用的是gcc3.3.2和busybox1.00,可以用在gc2.95.2编译的2.4.18内核上。

出的一点头痛的状况是busybox1.1以前的版本里面没有.config这个文件,害得我连make menuconfig都出不来,最后手动创建了一个.config文件,竟然可以了。

这里如果出现小错误的话,百度很快就解决了。

文件系统移植好了以后,想做qtopia的移植,同样遇到了很多编译错误,包括由于命令行敲错和环境变量设错引起的错误,比较麻烦的中间还需要小小的修改源代码和makefile文件。

经过多番的尝试,发现最后编译出来的qtopia还是运行不起来,没办法了,于是我打算移植到内核2.6的平台上来,这样就可以用一些比较新的工具链和源代码,相对来说资料也比较全一点。

于是又开始从编译2.6内核开始做起。按照书上的步骤一步一步的,首先就能看到串口传出的启动打印信息了,一下子对这个移植工作充满了信心。

我先挂载nfs文件系统,所以要移植cs8900a网卡的驱动,这一步是比较复杂的了,要修改源码和Kconfig。

现在照书上的例子已经移植好了,但是发现丢包很严重。

一开始老是卡在Freeing init memory: 128K这一句。老是以为我的文件系统有问题。

后来才发现是cs8900a网卡丢包太严重了,速度太慢,所以启动很慢,丢包率有36%以上啊啊啊。

我比较过2.4版本的内核,没那么严重,丢包率只有6%左右。所以可以确定还是网卡驱动的问题,但是目前还不知道怎么改,先将就着用一下吧。

posted @ 2012-08-20 12:38  欢乐小飞  阅读(327)  评论(0编辑  收藏  举报