首页 » 互联网 » ARM与嵌入式Linux的入门建议_硬件_源代码

ARM与嵌入式Linux的入门建议_硬件_源代码

神尊大人 2024-10-20 03:37:23 0

扫一扫用手机浏览

文章目录 [+]

第一、学习基本的裸机编程

对付学硬件的人而言,必须先对硬件的基本利用方法有感性的认识,更必须深刻认识该硬件的掌握办法,如果一开始就学linux系统、学移植那么只会立时就陷入一个很深的漩涡。
我在刚刚开始学ARM的时候是选择ARM7(主张是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,利用ADS去编程,第一个实验便是掌握led.学过一段韶光ARM的人都会笑这样很笨,实际上也不是,我倒是以为有这个过程会好很多,由于无论做多繁芜的系统终极都会落实到这些最底层的硬件掌握,因此对这些硬件的掌握有了感性的认识就好很多了学习裸机的编程的同时要好好理解这个硬件的构架、掌握事理,这些我称他为理解硬件。

ARM与嵌入式Linux的入门建议_硬件_源代码 互联网

所谓的理解硬件便是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行掌握的。
比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash掌握器,这些东西都有一些寄存器来掌握,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么通过寄存器来掌握这些外围设备的运转?还有,norflash内部的每一个单元在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是一样的吗?而与norflash相对应的nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映射在内存空间上进行利用?或者大略地说该当怎么用nandflash?再有,利用ADS进对arm9行编程时都须要利用到一个初始化的汇编文件,这个文件究竟有什么用?他里面的代码是什么意思?不要这个可以吗?

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

不过先声明一下,本人并没有利用ADS对ARM9进行编程,我是学完ARM7后直接就利用ARM9学linux系统的,因此涉及利用ADS对arm9进行编程的问题我很难回答^_^,自己去研究研究吧。

对付这部分不久将供应一份教程,这个教程中的例程并不是我为我们所代理的板子写的,是我在我们学院实验室拿的,英培特为他们自己 的实验箱写的,不过很有借鉴意义,可以作为一份有代价的参考。

第二、利用linux系统进行一

在买一套板子的时候一样平常会供应一些linux的试验例程,好好做一段韶光这个吧,这个过程也是很故意义的,也是为进一步的学习积累感性认识,你能想象一个从没有利用过linux系统的人能学好linux的编程吗?好好按照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点弱智,但是我想很多高手都会经历这个过程。

在这方面我们深蓝科技目前没有操持供应相应的例程,紧张是开拓板的供应商会供应很丰富的例程,我们不做重复事情,只供应他们没有的、最有代价的东西给大家。

第三、研究完全的linu

所谓完全的linux系统包括哪些部分呢?

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

那么这3部分是怎么相互协作来构成这个别系的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的实行流程又是怎么样的呢?搞清楚这个问题你对全体系统的运行就很清楚了,对付下一步制作这个linux系统就打下了另一个主要的根基。
先容这方面的资料网上可以挖掘到几吨,自己好好研究吧。

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

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

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

至于每个部分的移植网上也可以找到好多吨的资料,自己研究研究吧,不过要提醒的是,很多先容自己履历的东西都或多或少有所保留,你按照他说的去做总有一些问题,但是他不会见告你怎么办理,这时就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能担保能办理你的问题,由于我未必碰着过你的问题,不过我相信能给你一点建议,大概有助你办理问题。

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

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

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

Linux的驱动程序可以说是五花八门,linux2.4和linux2.6的编写有相称大的差异,便是同为linux2.6但是不同版本间的驱动程序也有差异,因此编写linux的驱动程序变都不是那么随意马虎的事情,对付最新版本的驱动程序的编写乃至还没有足够的参考资料。
那么我的建议便是利用、移植一个不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。

第六、

造作品做项目除了编写驱动程序,末了还要编写运用程序。
现在的趋势是图形运用程序的开拓,而图形运用程序中用得最多的还是qt/e函数库。
我一贯就利用这个函数库来开拓自己的运用程序,不过我希望你能利用国产的MiniGUI函数库。
盗用周杰伦的广告词便是“支持国产,支持MiniGUI”。
MiniGUI的编程比较相似Windows下的VC编程,比较随意马虎上手,效果该当说是相称不错的,我曾利用过来开拓arm7的程序。
不过MiniGUI最大的不好便是没有像qtopia这样的图形操作平台,这大大限定了他的推广,我曾司理想过与北京飞漫公司(便是MiniGUI的版权拥有者)互助利用MiniGUI函数库开拓像qtopia这样的图形操作平台,不过由于水平有限这只能是抱负了,呵呵。

完成这一步你基本就学完了嵌入式linux的全部内容了。

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

记住,问题是学习的最好机会。

人的办理问题能力就显得非常关键了。
因此我的建议便是一样平常的问题到网上搜索一下,确实找不到答案了就问问高手,还是弗成了就自己去研究,不要一味去等别人帮你办理问题。

记住,问题是学习的最好机会。

标签:

相关文章