因为好多人总问这个问题,所以这儿做一个总结文档供你们参考。这儿必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。其实你会注意到,如今做嵌入式的人中,做linux研究的人远比做WinCE的人多,好多产家提供的资料也是以linux为主。我仍然很难理解,或许WinCE的界面比linux的界面好看多了,使用上去也很便捷,更为重要的是,WinCE的开发和Windows下的开发基本一样,学上去简单得多,而且学linux或则使用linux做嵌入式的人就是远比WinCE多。在和好多工作的人交流时我了解到,她们公司从没考虑使用WinCE,由于成本高,都是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部份项目使用vxwork,并且就没有据说过使用WinCE的,缘由就是开源!其实现今WinCE6.0据说也开源,不过在成本和资源上linux早已有了无人能挡的优势。与此相对应的是,越来越多的电子厂商早已开始使用linux开发产品。举个反例,Google近日开发的智能手机操作系统Android似乎就是使用linux-2.6.23内核进行改进得到的。

第一,学习基本的裸机编程。

对于学硬件的人而言,必须先对硬件的基本使用方式有感性的认识,更必须深刻认识该硬件的控制方法,假如一开始就学linux系统、学移植这么只会马上就深陷一个很深的旋涡。我在刚才开始学ARM的时侯是选择ARM7(主意是当时ARM9还很贵),学ARM7的时侯还是保持着学51单片机的思维,使用ADS去编程,第一个实验就是控制led。学过一段时间ARM的人就会笑这样很笨,实际上也不是,我倒是认为有这个过程会好好多,由于无论做空复杂的系统最终就会落实到那些最底层的硬件控制,因而对这种硬件的控制有了感性的认识就好好多了。

学习裸机的编程的同时要好好理解这个硬件的架构、控制原理,这种我称他为理解硬件。所谓的理解硬件就是说,理解这个硬件是如何组织那么多资源的,这种资源又是如何由cpu、由编程进行控制的。例如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这种东西都有一些寄存器来控制,这种寄存器都有一个地址,这么这种地址是哪些意思?又如何通过寄存器来控制那些外围设备的运转?还有,norflash内部的每一个单元在这个芯片的显存中都有一个相应的地址单元,这么这种地址与刚才说的寄存器地址又有哪些关系?她们是一样的吗?而与norflash相对应的nandflash内部的存储单元并不是线性排放的,这么s3c2410如何将nandflash的地址映射在显存空间上进行使用?或则简单地说应当如何用nandflash?再有,使用ADS进对ARM9行编程时都须要使用到一个初始化的汇编文件,这个文件到底有哪些用?他上面的代码是哪些意思?不要这个可以吗?

linux嵌入式开发教程_嵌入式linux开发工具_嵌入式linux开发视频教程

诸这么类都是对硬件的理解,理解了那些东西就对硬件有很深的理解了,这对之后更深一步的学习将有很大的帮助,假如跳过这一步,我相信越往后学越会认为苦恼,越认为这写东西深不可测。由于,你的根基没打好。

不过先申明一下,本人并没有使用ADS对ARM9进行编程linux嵌入式开发教程,我是学完ARM7后直接就使用ARM9学linux系统的,因而涉及使用ADS对ARM9进行编程的问题我很难回答^_^,自己去研究研究吧。

对于这部份不久将提供一份教程,这个教程中的解释器并不是我为我们所代理的板子写的,是我在我们大学实验室拿的,英培特为她们自己的实验箱写的,不过很有借鉴意义linux嵌入式开发教程,可以作为一份有价值的参考。

第二redhat linux 9.0下载,使用linux系统进行一些基本的实验。

嵌入式linux开发工具_linux嵌入式开发教程_嵌入式linux开发视频教程

在买一套板子的时侯通常会提供一些linux的试验解释器,好好做一段时间这个吧,这个过程也是很有意义的linux系统安装,也是为进一步的学习积累感性认识,你能想像一个从没有使用过linux系统的人能学好linux的编程吗?好好根据指南上的类库做一做上面的实验,即使有点娃娃学走路,有点白痴,而且我想好多前辈就会经历这个过程。

在这方面我们浅蓝科技目前没有计划提供相应的解释器,主要是开发板的提供协会提供很丰富的解释器,我们不做重复工作,只提供她们没有的、最有价值的东西给你们。

第三,研究完整的linux系统的的运行过程。

所谓完整的linux系统包括什么部份呢?

嵌入式linux开发视频教程_linux嵌入式开发教程_嵌入式linux开发工具

三部份:bootloader、linuxkernel(linux内核)、rootfile(根文件系统)。

这么这3部份是如何互相协作来构成这个系统的呢?各自有哪些用呢?两者有哪些联系?如何联系?系统的执行流程又是怎样样的呢?认清楚这个问题你对整个系统的运行就很清楚了,对于下一步制做这个linux系统就打下了另一个重要的根基。介绍这方面的资料网上可以挖掘到几吨,自己好好研究吧。

第四,开始做系统移植。

前面说到完整的linux有3部份,并且你也晓得了她们之间的关系和作用,这么如今你要做的便是自己动手学会制做这种东西。

嵌入式linux开发视频教程_嵌入式linux开发工具_linux嵌入式开发教程

其实我不可能叫你编撰这种代码,这不实现。事实上这个3者都能在网下载到相应的源代码,而且这个源代码不可能下载编译后才能在你的系统上运行,须要好多的更改,直至他能运行在你的板子上,这个更改的过程就叫移植。在进行移植的过程中你要学的东西好多,要懂的相关知识也很多,等你完成了这个过程你会发觉你早已算是一个初出茅庐的前辈了。

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

至于每位部份的移植网上也可以找到很多吨的资料,自己研究研究吧,不过要提醒的是,好多介绍自己经验的东西都或多或少有所保留,你根据他说的去做总有一些问题,而且他不会告诉你如何解决,这时就要靠自己,假如自己都靠不住就找我一起研究研究吧,我也不能保证能解决你的问题,由于我未必遇见过你的问题,不过我相信能给你一点建议,其实有助你解决问题。

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

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

第五,研究linux驱动程序的编撰。

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

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

本文原创地址://lrxjmw.cn/lywqrskfdbwh.html编辑:刘遄,审核员:暂无