嵌入式软件学习路线图!

嵌入式学习是一个按部就班的过程,若是是但愿向嵌入式软件方向发展的话,目前最多见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段:linux

一、嵌入式Linux上层应用,包括QT的GUI开发c++

二、嵌入式Linux系统开发git

三、嵌入式Linux驱动程序员

 

嵌入式目前主要面向的几个操做系统是,Linux,WINCE、VxWorks等等。算法

 

Linux是开源免费的,并且其源代码是开放的,更加适合咱们学习嵌入式。shell

 

你能够尝试如下路线:数据库

(1) C语言是全部编程语言中的强者,单片机、DSP、相似ARM的种种芯片的编程均可以用C语言搞定),所以必须很是熟练的掌握。编程

 

推荐书籍:《The C Programming Language》 这本经典的教材是老外写的,也有中译版本。安全

 

(2) 操做系统原理,是必需的,若是你是计算机专业毕业那也就无所谓了,若是是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。网络

 

(3)Linux操做系统就是用C语言编写的,因此你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。

推荐书籍:《UNIX环境高级编程》(第2版)

 

(4) 了解ARM的架构,原理,以及其汇编指令,咱们在嵌入式开发中,通常不多去写汇编,可是最起码的要求是可以看懂arm汇编。

 

(5) 系统移植的时候,就须要你从最下层的

bootloader开始,嵌入式学习加意义气呜呜吧久零九易,而后内核移植,文件系统移植等。而移植这部分对硬件的依赖是很是大的,其配置步骤也相对复杂,也没有太多详细资料。

 

(6) 驱动开发

linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。

linux驱动程序设计本质是属于linux内核编程范畴的,于是是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,由于每一部分要详细研究的话足够能够扩展成一本厚书。

 

以上只不过是大概的框架,在实际的开发中还会涉及不少东西,好比:交叉编译、makefile、shell脚本等等,因此说学习嵌入式的周期较长,门槛较高,自学的话更是须要较强的学习能力和专业功底。只要能坚持下来必定会取得成功!

 

嵌入式是一个比较大的概念,有四个分支(主要)

1.微控制器(单片机为例)

2./微处理器(arm为例)

3.dsp(数字信号处理)

4.soc(片上系统)

 

对于咱们初学者而言,首先要学习单片机,以51为表明,等你学好51以后,能够深刻学习更艰难的东西;固然,并非说你只须要学习单片机;要想学好单片机,你还得学c语言,得学汇编,得学一大堆应用软件;等到单片机可以掌握的不错的时候又须要本身进行原理图、PCB板的设计;还得掌握系统设计的工程管理什么的;比较多......

 

单片机仍是比较简单的,等到学好以后,开始学习arm的时候,你就接触的多了,什么操做系统啊、驱动编写啊、内核移植啊、应用程序的添加啊、上位机的编写啊,那个就多了,不过到时候你就全知道了。。。

 

ARM+LINUX路线,主攻嵌入式Linux操做系统及其上应用软件开发目标:

(1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)

(2)必须掌握一个嵌入式操做系统(初步定为uclinux或linux,版本待定)

(3)必须熟悉嵌入式软件开发流程并至少作一个嵌入式软件项目。

 

从事嵌入式软件开发的好处是:

(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,因此非专业IT人员很难切 入这一领域;另外一方面,是由于这一领域较新,目前发展太快,大多数人无条件接触。

(2)与企业计算等应用软件不一样,嵌入式领域人才的工做强度一般低一些(但收入不低)。

(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计通常 都是请其它公司给订作(这叫“贴牌”:OEM),都是通用的硬件,咱们只管设计软件就变成本身的产品了。

(4)兴趣所在,这是最主要的。

 

从事嵌入式软件开发的缺点是:

(1)入门起点较高,所用到的技术每每都有必定难度,若软硬件基础很差,特别是操做系统级软件功底不深,则可能不适于此行。

(2)这方面的企业数量要远少于企业计算类企业。

(3)有少数公司常常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并没有此要求,只要有经验便可。

(4)平台依托强,换平台比较辛苦。

 

兴趣的由来:

一、成功观念不一样,不虚度今生,就是个人成功

二、喜欢思考,挑战逻辑思惟

三、喜欢C语言

四、喜欢底层开发,讨厌vb类开发工具(并非说vb很差)

五、发展前景好,适合创业,不想本身要死了的时候仍是一个工程师

 

方法步骤:

 

一、基础知识

目的:能看懂硬件工做原理,但重点在嵌入式软件,特别是操做系统级软件,那将是个人优点。

 

科目:数字电路、计算机组成原理、嵌入式微处理器结构、汇编语言、C/C++、编译原理、离散数学、数据结构和算法、操做系统、软件工程、网络、数据库。

 

方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不必定全学,可根据须要选修。如thec++programminglanguage(一直没时间读)、数据结构-C2。

 

二、学习linux

目的:深刻掌握linux系统。

 

方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习,最后深刻代码。

 

主攻书籍:linux内核彻底剖析、unix环境高级编程、深刻理解linux内核、情景分析和源代。

 

三、学习嵌入式linux

目的:掌握嵌入式处理器其及系统。

 

方法:

(1)嵌入式微处理器结构与应用:直接arm原理及汇编便可,不要重复x86。

(2)嵌入式操做系统类:ucOS/II简单,开源,可供入门。然后深刻研究uClinux。

(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)

主攻书籍:毛德操的《嵌入式系统》及其余arm9手册与arm汇编指令等。

 

四、深刻学习

A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。

B、通讯协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDM A等。

C、网络与信息安全技术:如加密技术,数字证书CA等。

D、DSP技术:DigitalSignalProcess,DSP处理器经过硬件实现数字信号处理算 法。

 

说明:太多细节未说明,可根据实际状况调整。重点在于一、3,没必要彻底按照顺序做。对于学习C++,理由是C++不仅是一种语言,一种工具,她仍是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。

 

注意: 要学会举一反多,有强大的基础,不少东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具备良好的逻辑思惟。必定要理论结合实践。

 

不要一味钻研技术,虽然挤出时间是很难作到的,但仍是要留点余地去完善其余的爱好,好比宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不肯意作但必需要作的!

 

永远不要梦想一步登天,不要作浮躁的人,不要以为路途漫上。等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即使成功了发展空间也不必定很大)。

相关文章
相关标签/搜索