更多课程 选择中心

嵌入式培训
达内IT学院

400-996-5531

能否零基础入门嵌入式ARM ?看完你就明白了

  • 发布:嵌入式培训
  • 来源:达内C语言和嵌入式培训
  • 时间:2018-04-09 11:35

由于很多人总问是否可以零基础入门嵌入式ARM,那今天我就来谈谈如何入门嵌入式ARM,供大家参考。这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。也许你会注意到,现在做嵌入式的人中,做Linux研究的人远比做WinCE的人多,很多产家提供的资料也是以Linux为主。我一直很难理解,其实WinCE的界面比Linux的界面好看多了,使用起来也很方便,更为重要的是,WinCE的开发和Windows下的开发基本一样,学起来简单得多,但是学Linux或者使用Linux做嵌入式的人就是远比WinCE多。这是因为在成本和资源上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系统的人能学好Linux的编程吗?那就按照手册上的例程做一做里面的实验,我相信很多高手也都经历过这个过程。

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

所谓完整Llinux系统包括哪些部分呢?

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

那么这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的执行流程又是怎么样的呢?搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制作这个Linux系统也就打下了另一个重要的根基。

第四,开始做系统移植

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

当然我不可能叫你编写这些代码,这不现实。事实上这个3者都能在网下载到相应的源代码,但是这个源代码不可能下载编译后就能在你的系统上运行,需要很多的修改,直到它能运行在你的板子上,这个修改的过程就叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,在这个过程中如果你很有研究精神的话你必然会想到看源代码,等你完成了这个过程你会发现你已经算是一个初出茅庐的高手了。

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

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

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

第六,研究应用程序的编写

做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。完成这一步你基本就学完了嵌入式Linux的全部内容了。

问题是学习的最好机会,但学习前一定要规划好学习内容,有句话说:方向不对,怎么努力都是在逆行。所以,一开始制定好学习的方向,不至于后期把路走偏了。在学习嵌入式Linux的过程中尽量少问人,可以提高自己解决问题的能力,如果你认为自学难度太大,那么来达内,参加嵌入式ARM培训班,遇见嵌入式ARM高手,从0到1系统学习嵌入式ARM知识。

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:如何从单片机开发过度到嵌入式开发?
下一篇:做完这几道题,嵌入式学习就算过关了吗?

嵌入式培训主要学习哪些内容?好学吗?

大学生参加嵌入式培训班好就业吗

学习嵌入式培训有必要报班吗

嵌入式培训主要培训什么

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省