因为好多人总问这个问题,所以测试猿课堂这儿做一个总结供你们参考。这儿必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。
第一、测试猿课堂-学习基本的裸机编程
对于学硬件的人而言,必须先对硬件的基本使用方式有感性的认识,更必须深刻认识该硬件的控制方法,倘若一开始就学linux系统、学移植这么只会马上就深陷一个很深的旋涡。在刚才开始学ARM的时侯是选择ARM7(主意是当时ARM9还很贵),学ARM7的时侯还是保持着学51单片机的思维,使用ADS去编程,第一个实验就是控制led。学过一段时间ARM的人就会笑这样很笨,实际上也不是,我倒是认为有这个过程会好好多,由于无论做空复杂的系统最终就会落实到那些最底层的硬件控制,因而对这种硬件的控制有了感性的认识就好好多了学习裸机的编程的同时要好好理解这个硬件的架构、控制原理,这种我称他为理解硬件。
所谓的理解硬件就是说,理解这个硬件是如何组织那么多资源的,这种资源又是如何由cpu、由编程进行控制的。例如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这种东西都有一些寄存器来控制嵌入式linux基础教程 第2版 pdf,这种寄存器都有一个地址,这么这种地址是哪些意思?又如何通过寄存器来控制那些外围设备的运转?还有,norflash内部的每一个单元在这个芯片的显存中都有一个相应的地址单元,这么这种地址与刚才说的寄存器地址又有哪些关系?她们是一样的吗?而与norflash相对应的nandflash内部的存储单元并不是线性排放的,这么s3c2410如何将nandflash的地址映射在显存空间上进行使用?或则简单地说应当如何用nandflash?再有,使用ADS进对ARM9行编程时都须要使用到一个初始化的汇编文件,这个文件到底有哪些用?他上面的代码是哪些意思?不要这个可以吗?诸这么类都是对硬件的理解,理解了那些东西就对硬件有很深的理解了,这对之后更深一步的学习将有很大的帮助,假如跳过这一步,我相信越往后学越会认为苦恼,越觉得这写东西深不可测。由于嵌入式linux基础教程 第2版 pdf,你的根基没打好。
第二、测试猿课堂-使用linux系统进行一些基本的实验
在买一套板子的时侯通常会提供一些linux的试验类库,好好做一段时间这个吧,这个过程也是很有意义的,也是为进一步的学习积累感性认识,你能想像一个从没有使用过linux系统的人能学好linux的编程吗?好好根据指南上的解释器做一做上面的实验,即使有点娃娃学走路,而且我想好多前辈就会经历这个过程。
第三、测试猿课堂-研究完整的linux系统的的运行过程
所谓完整的linux系统包括什么部份呢?
三部份:bootloader、linuxkernel(linux内核)、rootfile(根文件系统)。
这么这3部份是如何互相协作来构成这个系统的呢?各自有哪些用呢?两者有哪些联系?如何联系?系统的执行流程又是怎样样的呢?认清楚这个问题你对整个系统的运行就很清楚了,对于下一步制做这个linux系统就打下了另一个重要的根基。
第四、开始做系统移植
前面说到完整的linux有3部份,并且你也晓得了她们之间的关系和作用,这么如今你要做的便是自己动手学会制做这种东西。
事实上这个3者都能在网下载到相应的源代码,而且这个源代码不可能下载编译后才能在你的系统上运行,须要好多的更改,直至他能运行在你的板子上linux入门,这个更改的过程就叫移植。在进行移植的过程中你要学的东西好多,要懂的相关知识也好多,等你完成了这个过程你会发觉你早已算是一个初出茅庐的前辈了。
在这个过程中假如你很有研究精神的话你必然会想到看源代码。好多书介绍你如何阅读linux源代码,我不倡导无目的地去看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这样的图形操作平台,这大大限制了他的推广,完成这一步你基本就学完了嵌入式linux的全部内容了。
测试猿课堂经验心得分享:在学习嵌入式linux的过程中通常的问题到网上搜索一下,确实找不到答案了就问问大神,还是不行了就自己去研究,不要一味去等他人帮你解决问题。记住,问题是学习的最好机会。