嵌入式学习是一个循序渐进的过程,若果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,大约分3个阶段:
1、嵌入式Linux下层应用基于嵌入式linux的qt图形程序实战开发,包括QT的GUI开发
2、嵌入式Linux系统开发
3、嵌入式Linux驱动
嵌入式目前主要面向的几个操作系统是,Linux,WINCE、VxWorks等等。
Linux是开源免费的,但是其源代码是开放的,愈发适宜我们学习嵌入式。
你可以尝试以下路线:
(1)C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因而必须十分熟练的把握。
推荐书籍:《TheCProgrammingLanguage》这本精典的教材是鬼佬写的,也有中译版本。
(2)操作系统原理,是必需的,假如你是计算机专业结业那也就无所谓了,若果是非计算机专业的就必须找一本比较通俗的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题厘清楚。
(3)Linux操作系统就是用C语言编撰的,所以你也应当先学习下Linux方面的编程,只有你会应用了,能够近一步去了解其内核的真谛。
推荐书籍:《UNIX环境中级编程》(第2版)
(4)了解ARM的构架,原理,以及其汇编指令,我们在嵌入式开发中,通常极少去写汇编linux 下载工具,而且最至少的要求是才能读懂arm汇编。
(5)系统移植的时侯,就须要你从最上层的
bootloader开始,之后内核移植,文件系统移植等。而移植这部份对硬件的依赖是特别大的,其配置步骤也相对复杂,也没有太多详尽资料。
(6)驱动开发
linux驱动程序设计既是个极富于挑战性的领域,又是一个博大精深的内容。
linux驱动程序设计本质是属于linux内核编程范畴的,因此是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,由于每一部份要详尽研究的话足够可以扩充成一本厚书。
以上只不过是大约的框架linux命令chm,在实际的开发中都会涉及好多东西,例如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是须要较强的学习能力和专业造诣。只要能坚持出来一定会取得成功!
嵌入式是一个比较大的概念,有四个分支(主要)
1.微控制器(单片机为例)
2./微处理器(arm为例)
3.dsp(数字讯号处理)
4.soc(片上系统)
对于初学者而言,首先要学习单片机,以51为代表,等你学好51以后,可以深入学习更艰辛的东西;其实,并不是说你只须要学习单片机;要想学好单片机,你还得学c语言,得学汇编,得学一大堆应用软件;等到单片机能否把握的不错的时侯又须要自己进行原理图、PCB板的设计;还得把握系统设计的工程管理哪些的;比较多......
单片机还是比较简单的,等到学好以后,开始学习arm的时侯,你就接触的多了,哪些操作系统啊、驱动编撰啊、内核移植啊、应用程序的添加啊、上位机的编撰啊,那种就太多了
ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:
(1)把握主流嵌入式微处理器的结构与原理(初步定为arm9)
(2)必须把握一个嵌入式操作系统(初步定为uclinux或Redhatlinux,版本待定)
(3)必须熟悉嵌入式软件开发流程并起码做一个嵌入式软件项目。
从事嵌入式软件开发的用处是:
(1)目前国外外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是由于这一领域较新,目前发展太快,大多数人无条件接触。
(2)与企业估算等应用软件不同,嵌入式领域人才的工作硬度一般低一些(但收入不低)。
(3)哪天倘若创业,搞自已的产品,嵌入式不像应用软件那样容易被偷版。硬件设计通常都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就弄成自己的产品了。
(4)兴趣所在,这是最主要的。
从事嵌入式软件开发的缺点是:
(1)入门起点较高,所用到的技术常常都有一定难度,若软硬件基础不好,非常是操作系统级软件功力不深,则可能不适于此行。
(2)这方面的企业数目要远多于企业估算类企业。
(3)有少数公司常常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
(4)平台依托强,换平台比较辛苦。
方式步骤:
1、基础知识
目的:能读懂硬件工作原理,但重点在嵌入式软件,非常是操作系统级软件,那将是我们的优势。
课目:数字电路、计算机组成原理、嵌入式微处理器结构、汇编语言、C/C++、编译原理、离散物理、数据结构和算法、Linux操作系统、软件工程、网络、数据库。
方式:虽课目诸多,但都是较简单的基础,且大部份已把握。不一定全学,可依照须要必修。如thec++programminglanguage(仍然没时间读)、数据结构-C2。
2、学习linux
目的:深入把握linux系统。
方式:使用linux—〉linxu系统编程开发—〉驱动开发和剖析linux内核。看几遍后,看情境剖析,对照深看,两本交叉,深是纲,情是目。分析则是0.11版,适宜学习,最后深入代码。
主攻书籍:linux内核完全分析、unix环境中级编程、深入理解linux内核、情景剖析和源代。
3、学习嵌入式linux
目的:把握嵌入式处理器其及系统。
方式:
(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
(2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。
(3)必须有块开发板(arm9以上),有条件可出席培训(进步快,能认识些同学)
主攻书籍:毛德操的《嵌入式系统》及其他arm9指南与arm汇编指令等。
4、深入学习
A、数字图象压缩技术:主要是应把握MPEG、mp3等编解码算法和技术。
B、通信合同及编程技术:TCP/IP合同、802.11,Bluetooth,GPRS、GSM、CDMA等。
C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:DigitalSignalProcess,DSP处理器通过硬件实现数字讯号处理算法。
说明:太多细节未说明,可依照实际情况调整。重点在于1、3,毋须完全依照次序作。对于学习C++基于嵌入式linux的qt图形程序实战开发,理由是C++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是用来显摆得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。
注意:要学会举一反多,有强悍的基础,好多东西简单瞧瞧才能会。想成为合格的程序员,前提是必须熟练起码一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。有好的老师带你,你学会这种的时间会减短三分之二。
永远不要梦想一步登天,不要做浮躁的人,不要认为路途漫上。等机会来了再创业(不要相信有奇迹发生,盲目创业很难成功,虽然成功了发展空间也不一定很大)。