第四、开始做系统移植

  上面说到完整的linux有3部分,而且你也知道了他们之间的关系和作用,那么现在你要做的便是自己动手学会制作这些东西。

  当然我不可能叫你编写这些代码,这不实现。事实上这个3者都能在网下载到相应的源代码,但是这个源代码不可能下载编译后能在你的系统上运行,需要很多的修改,直到他能运行在你的板子上,这个修改的过程叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,等你完成了这个过程你会发现你已经算是一个初出茅庐的高手了。

  在这个过程中如果你很有研究精神的话你必然会想到看源代码。很多书介绍你怎么阅读linux源代码,我不提倡无目的地去看linux源代码,用许三多的话说,这没有意义。等你在做移植的时候你觉得你必须去看源代码时再去找基本好书看看,这里我推荐一本好书倪继利的《linux内核的分析与编程》,这是一本针对linux-2.6.11内核的书,说得很深,建议先提高自己的C语言编程水平再去看。

  至于每个部分的移植网上也可以找到好多吨的资料,自己研究研究吧,不过要提醒的是,很多介绍自己经验的东西都或多或少有所保留,你按照他说的去做总有一些问题,但是他不会告诉你怎么解决,这时要靠自己,如果自己都靠不住找我一起研究研究吧,我也不能保证能解决你的问题,因为我未必遇到过你的问题,不过我相信能给你一点建议,也许有助你解决问题。

  这一步的终目的是,从源代码的官方主页上(都是外国的,悲哀)下载标准的源代码包,然后进行修改,终运行在板子上。

  盗用阿基米德的一句话:“给我一根网线,我能将linux搞定”。

  第五、研究linux驱动程序的编写

  移植系统并不是终的目的,终的目的是开发产品,做项目,这些都要进行驱动程序的开发。

  Linux的驱动程序可以说是五花八门,linux2.4和linux2.6的编写有相当大的区别,是同为linux2.6但是不同版本间的驱动程序也有区别,因此编写linux的驱动程序变都不是那么容易的事情,对于新版本的驱动程序的编写甚至还没有足够的参考资料。那么我的建议是使用、移植一个不算很新的版本内核,这样到时学驱动的编程有足够的资料了。

  第六、研究应用程序的编写

  做作品做项目除了编写驱动程序,后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得多的还是qt/e函数库。我一直使用这个函数库来开发自己的应用程序,不过我希望你能使用国产的MiniGUI函数库。盗用周杰伦的广告词是“支持国产,支持MiniGUI”。MiniGUI的编程比较相似Windows下的VC编程,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。不过MiniGUI大的不好是没有像qtopia这样的图形操作平台,这大大限制了他的推广,我曾经幻想过与北京飞漫公司(是MiniGUI的版权拥有者)合作使用MiniGUI函数库开发像qtopia这样的图形操作平台,不过由于水平有限这只能是幻想了,呵呵。完成这一步你基本学完了嵌入式linux的全部内容了。

  还有一个小小的经验想和大家分享。我在学习嵌入式linux的过程中很少问人,客观原因是身边的老师、同学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样做有个好处,是可以提高自己解决问题的能力,因为做这些东西总有很多问题你难以理解,别人也没有这方面的经验,也不是所有问题都有人给你答案,这时必须要自己解决问题,这样,个人的解决问题能力显得非常关键了。因此我的建议是一般的问题到网上搜索一下,确实找不到答案了问问高手,还是不行了自己去研究,不要一味去等别人帮你解决问题。记住,问题是学习的好机会。