嵌入式Linux入门六部曲

嵌入式Linux入门六部曲
常常在论坛有一些Linux初学者会询问:Linux如何入门?笔者对此给出建议:嵌入式Linux入门六部曲,希linux

望能帮助到你们。
 第一,学习基本的裸机编程
  对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深入认识该硬件的控制方式,若是一开始就学linux系统、学移植那么只会立刻就陷入一个很深的漩涡。学ARM的时候仍是保持着学51单片机的思惟,对这些硬件的控制有了感性认识就好不少了学习裸机的编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。好比说,s3c2410中有AD转换器,有GPIO(通用IO口),还有andflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么经过寄存器来控制这些外围设备的运转?还有,norflash内部的每个单元在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是同样的吗?而与norflash相对应的nandflash内部的储存单元并非线性排放的,那么s3c2410怎么将nandflash的地址映射在内存空间上进行使用?或者简单地说应该怎么用nandflash?诸如此类都是对硬件的理解,理解了这些东西就对硬件有很深的理解了,这对之后更深一步的学习将有很大的帮助,若是跳过这一步,我相信越日后学越会以为迷茫,越以为这写东西深不可测。由于,你的
根基没打好。
   第二,使用linux系统进行一些基本的实验
  买一套板子的时候通常会提供一些linux的试验例程,好好作一段时间这个吧,这个过程也是颇有意义的,也是为进一步的学习积累感性认识,你能想象一个从没有使用过linux系统的人能学好linux的编程吗?好好按照手册上的例程作一作里面的实验,虽然有点娃娃学走路,有点弱智,可是我想不少高手都会历这个过程。
  因为不少人总问这个问题,因此这里作一个总结文档供你们参考。这里必须先说明,如下的步骤都是针对Linux系统的,并不面向WinCE.也许你会注意到,如今作嵌入式的人中,作linux研究的人远比作WinCE的人多,不少产家提供的资料也是以linux为主。我一直很难理解,其实WinCE的界面比linux的界面好看多了,使用起来也很方便,更为重要的是,WinCE的开发和Windows下的开发基本同样,学起来简单得多,可是学linux或者使用linux作嵌入式的人就是远比WinCE多。在和不少工做的人交流时我了解到,他们公司从没考虑使用WinCE,由于成本高,都是使用linux进行开发,缘由就是开源!固然如今WinCE6.0据说也开源,不过在成本和资源上linux已经有了无人能挡的优点。与此相对应的是,愈来愈多的电子厂商已经开始使用linux开发产品。举个例子,Google近期开发的智能手机操做系统ndroid其实就是使用linux-2.6.23内核进行改进获得的。
  第三,研究完整的linux系统的的运行过程
  所谓完整的linux系统包括哪些部分呢?
  三部分:bootloader、linux kernel(linux内核)、rootfile(根文件系统)。
  那么这3部分是怎么相互协做来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的执行流程又是怎么样的呢?搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制做这个linux系统就打下了另外一个重要的根基。介绍这方面的资料网上能够挖掘到几吨,本身好好研究吧。
  第四,开始作系统移植
  上面说到完整的linux有3部分,并且你也知道了他们之间的关系和做用,那么如今你要作的即是本身动手学会制做这些东西。
  固然我不可能叫你编写这些代码,这不实现。事实上这个3者都能在网下载到相应的源代码,可是这个源代码不可能下载编译后就能在你的系统上运行,须要不少的修改,直到他能运行在你的板子上,这个修改的过程就叫移植。在进行移植的过程当中你要学的东西不少,要懂的相关知识也不少,等你完成了这个过程你会发现你已经算是一个初出茅庐的高手了。
  在这个过程当中若是你颇有研究精神的话你必然会想到看源代码。不少书介绍你怎么阅读linux源代码,我不提倡无目的地去看linux源代码,用许三多的话说,这没有意义。等你在作移植的时候你以为你必须去看源代码时再去找基本好书看看,这里我推荐一本好书倪继利的《linux内核的分析与编程》,这是一本针对linux-2.6.11内核的书,说得很深,建议先提升本身的C语言编程水平再去看。
  至于每一个部分的移植网上也能够找到好多吨的资料,本身研究研究吧,不过要提醒的是,不少介绍本身经验的东西都或多或少有所保留,你按照他说的去作总有一些问题,可是他不会告诉你怎么解决,这时就要靠本身,若是本身都靠不住就找我一块儿研究研究吧。
  这一步的最终目的是,从源代码的官方主页上(都是外国的,悲哀)下载标准的源代码包,而后进行修改,最终运行在板子上。
  盗用阿基米德的一句话:“给我一根网线,我能将linux搞定”。
  第五,研究linux驱动程序的编写
  移植系统并非最终的目的,最终的目的是开发产品,作项目,这些都要进行驱动程序的开发。Linux的驱动程序能够说是五花八门,linux2.4和linux2.6的编写有至关大的区别,就是同为linux2.6可是不一样版本间的驱动程序也有区别,所以编写linux的驱动程序变都不是那么容易的事情,对于最新版本的驱动程序的编写甚至尚未足够的参考资料。那么个人建议就是使用、移植一个不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。这部分的推荐书籍能够参考另外一篇文章《推荐几本学习嵌入式linux的书籍》。
  第六,研究应用程序的编写
  作做品作项目除了编写驱动程序,最后还要编写应用程序。如今的趋势是图形应用程序的开发,而图形应用程序中用得最多的仍是qt/e函数库。
  完成这一步你基本就学完了嵌入式linux的所有内容了。
  记住,问题是学习的最好机会,遇到问题想办法去解决他,这样你的收获是最大的。
技术交流QQ1962426343 电话:15737137972 郭老师
编程