ARM嵌入式开发的六步学习法

发布者:快乐行者最新更新时间:2015-10-08 来源: eefocus关键字:ARM  嵌入式开发  六步学习法 手机看文章 扫描二维码
随时随地手机看文章
学习ARM嵌入式开发,尤其对于初学者而言,不应该过早地、过多地将精力用在嵌入式系统移植、Linux内核的研究和学习上,这些诱人的“热点”很容易使初学者迷失方向,进而忽视对基础知识的深入学习。以下是针对Linux系统的ARM嵌入式开发学习步骤:

 

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

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

    学习裸机的编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由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的编程吗?好好按照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点弱智,但是我想很多高手都会经历这个过程。

在这方面我们深蓝科技目前没有计划提供相应的例程,主要是开发板的提供商会提供很丰富的例程,我们不做重复工作,只提供他们没有的、最有价值的东西给大家。

 

    第三,研究完整的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函数库。我一直就使用这个函数库来开发自己的应用程序,不过我希望你能使用国产的MiniGUI函数库。盗用周杰伦的广告词就是“支持国产,支持MiniGUI”。MiniGUI的编程比较相似Windows下的VC编程,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。不过MiniGUI最大的不好就是没有像qtopia这样的图形操作平台,这大大限制了他的推广,我曾经幻想过与北京飞漫公司(就是MiniGUI的版权拥有者)合作使用MiniGUI函数库开发像qtopia这样的图形操作平台,不过由于水平有限这只能是幻想了,呵呵。

关键字:ARM  嵌入式开发  六步学习法 引用地址:ARM嵌入式开发的六步学习法

上一篇:ARM和单片机有哪些区别
下一篇:ARM初学者切记拿到ARM开发板盲目做实验

推荐阅读最新更新时间:2024-03-16 14:34

基于ARM9上linux系统的bootloader设计
1.引言 在嵌入式开发中其中不可避免的一环就是bootloader的设计 ,它统筹软硬件资源,使得资源最优配置,嵌入式系统对功耗,性能,以及成本要求很苛刻,它要求在达到用户要求的前提下把成本和资源利用降为最低,Booloader不是驱动开发的一部分,但一个好的booloader可以决定该产品在市场上的成败 。 采用Samsung公司的ARM920T 处理器与Linux2.4.18嵌入式操作系统,根据处理速度和效率的不同采用分阶段实现的方法,在具体实现时不拘泥于该处理器和操作系统版本,使之更有普遍性和通用性。 2.bootloader概述 引导加载程序bootloader是系统加电后运行的第一段代码 ,功能类似pc机的BIO
[单片机]
基于<font color='red'>ARM</font>9上linux系统的bootloader设计
ARM发布最新平台安全架构:支持碎片化物联网系统
12月3日消息,世界互联网大会先进科技成果发布会上,ARM全球执行副总裁兼大中华区总裁吴雄昂发布了最新的平台安全架构,通过这样一个安全架构,不光是解决了安全架构的一致性问题,而且能够支持多样化、碎片化的物联网系统。 吴雄昂称,物联网系统的安全不仅仅在于设备,而在于网络、在于云。这里面有上百家芯片公司、上千家系统公司,同时有上百万的开发者,这个安全架构得到了从芯片、安全、系统、软件、云,一百多家科技公司的一致支持。 以下是吴雄昂的演讲: 女士们、先生们,下午好! 首先我代表ARM感谢组委会给我们这个机会,发布ARM最新的平台安全架构。ARM至今为止已经设计了全球应用最广泛的计算技术,今天全球有上千亿个电子设备使用
[网络通信]
ARM Linux各种驱动的中断服务程序工作在ARM的IRQ模式吗?
大家都知道,ARM有IRQ, FIQ, USR,SVC,ABORT等各种模式。当系统收到IRQ的时候,会进入ARM的IRQ模式。那么,ARM Linux各种驱动的中断服务程序工作在ARM的IRQ模式吗? 答案是否定的。 我们加一段汇编来读CPSR: 然后我们随便找一个ARM Linux的中断服务程序去打印CPSR: 然后我们发现打印出来的值是: cpsr:40000193 低8位的二进制是10010011 那么对应ARM CPSR的查询,可以看出CPU处于ARM的SVC模式(低5位是10011),而且I bit被设置(第7位是1),所以是禁止IRQ的。 模式表: 可见,ARM Linux最初进入IRQ模式后,比
[单片机]
<font color='red'>ARM</font> Linux各种驱动的中断服务程序工作在<font color='red'>ARM</font>的IRQ模式吗?
ARM发展史上的十大决定性时刻
据科技网站Android Authority报道,1990年11月27日,如今名满天下的ARM公司(成立时全称为Advanced RISC Machines)正式成立,他们的目标是创立一个世界通用的全新微处理器标准。25年过去了,使用ARM架构的芯片出货量超过750亿片,这些芯片成了传感器、智能手机和服务器的超级大脑,该公司也成了史上最为成功的架构设计公司,为智能手机等设备的兴起立下了汗马功劳。 虽然现在的ARM早就不是成立时那个小公司了,但其改变世界的雄心壮志依然火热,未来他们将为新兴市场提供更多低成本低功耗高性能的芯片。 现在就让我们一起来回顾ARM公司发展史上的十大决定性时刻。 1990 公司初创 1990年
[嵌入式]
C++嵌入式开发
最近突然觉得,C++将是以后嵌入式开发的主流,就此进行一些分析。 暑假的时候在车队帮忙做仪表,顺便玩玩液晶屏。在做界面的时候,突然发现C++的类在开发界面的时候,带来的的优势是C没法比的,把显示的内容作为类的成员变量,界面的生成与修改的函数也放在类里,这样就可以很好的对显示屏上的各个模块进行很好的管理,极大的提高程序的可维护性。 从这个切入点开始考虑,IAR开发环境是带C++编译器的。也就是可以尝试用C++给单片机开发程序。就在考虑,C++会不会是以后单片机开发的主流呢?首先当然大家就会说,性能,C++的效率没有C高。但是由此会思考,现在单片机的性能有了极大的提高,就简单的说,ST公司的STM32单片机,便宜的到10多块一片,32
[单片机]
C++<font color='red'>嵌入式开发</font>
揭秘iMac Pro上那颗神秘芯片:可真不简单
   iMac  Pro来了,经过试用,人们给了它各种各样的评价,但总结起来其实也就是四个字 —— 性能怪兽。这点其实没有疑问,毕竟 iMac  Pro这一上来就是冲着这一点去的。跑分成绩,中端级的 iMac  Pro比高端的Mac Pro还要快45%,可以想见它有多可怕。下面就随嵌入式小编一起来了解一下相关内容吧。   不过老实说,iMac Pro除了那可怕的硬件性能外,真正值得我们去津津乐道的倒反不多。说来说去,配置规格就是高嘛,用来完成专业任务就是更快更顺手嘛。毕竟,iMac Pro可是带着“Pro”的,要多挖出点什么具体的感想,那还得专精某个方向才行。   所以我们倒不如先来聊一聊iMac Pro的那颗T2芯片。我们最早
[嵌入式]
ARM cortex M4异常处理
故障处理 故障处理是异常的子集,故障的产生主要由下列方式: 总线错误:包括去指令和中断向量表装载以及数据存取 内部检测错误,像未定义的指令 在包含MPU的设备上,试图存取操作未托管的区域引起MPU故障。 故障的主要类型可以通过下表清楚的看出: 通常情况下,异常的优先级和异常屏蔽寄存器的值共同决定处理器是否进入异常故障处理,是否一个故障处理异常可以打断另一个故障处理异常。故障状态寄存器表明产生故障的原因。 当处理器执行NMI或者硬件故障处理的时候产生故障就会进入锁死状态,当进入锁死状态,处理器将不会执行任何指令,并保持在锁死态直到产生下列情况: 复位 NMI产生 被调试器终止 需要注意的一点是,如果锁死态产生于
[单片机]
基于ARM的汽车防盗报警系统设计
随着我国汽车工业的高速发展,许多家庭拥有了自己的私家 车,但车库的数量远远满足不了需求,因此,如何有效地防止汽车被盗是车主们最关心的问题。近年来,科学技术迅猛发展,结合各种新技术的新型汽车防盗装备相 继出现。由于目前车载系统的功能正在逐步的增强、增多,采用单片机的控制已越来越无法适应需求。所以在汽车电子中采用嵌入式技术将成为必然。 本文采用嵌入式技术开发车载防盗装置,一方面能增强控制能力,提高汽车防盗的智能化程度。另一方面,缩小了装置的体积,提高了该装置应用的灵活性,同时也为将来进一步增强汽车电子的功能提供了扩展的空间。由于篇幅有限,本文只对硬件电路做介绍。 1 系统硬件组成 系统主要由ARM嵌入式控制器、手机模块、无
[单片机]
基于<font color='red'>ARM</font>的汽车防盗报警系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved