zoukankan      html  css  js  c++  java
  • 最近在做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%左右。所以可以确定还是网卡驱动的问题,但是目前还不知道怎么改,先将就着用一下吧。

  • 相关阅读:
    js常用代码整理
    java 序列化时排除指定属性
    FastJson bean序列化属性顺序问题
    用logger在控制台打印信息
    UNITY 内存问题资料收集
    数组指针和指针数组的区别
    inl文件介绍
    C++防止文件重复包含
    VS2017 Intelligense C++ 设置的几个重点
    GPU架构图
  • 原文地址:https://www.cnblogs.com/dolphi/p/2647364.html
Copyright © 2011-2022 走看看