嵌入式学习是一个循序渐进的过程,若果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,大约分3个阶段:
1、嵌入式linux下层应用,包括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的构架,原理,以及其汇编指令,我们在嵌入式开发中,通常极少去写汇编,而且最至少的要求是才能读懂arm汇编。
(5)系统移植的时侯,就须要你从最上层的
bootloader开始,之后内核移植,文件系统移植等。而移植这部份对硬件的依赖是特别大的,其配置步骤也相对复杂,也没有太多详尽资料。
(6)驱动开发
linux驱动程序设计既是个极富于挑战性的领域,又是一个博大精深的内容。
linux驱动程序设计本质是属于linux内核编程范畴的,因此是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,由于每一部份要详尽研究的话足够可以扩充成一本厚书。
以上只不过是大约的框架,在实际的开发中都会涉及好多东西,例如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是须要较强的学习能力和专业造诣。只要能坚持出来一定会取得成功!
文末有学习路线参考!
【文章福利】小编推荐自己的Linux内核技术交流群:【891587639】整理了一些个人认为比较好的学习书籍、视频资料共享在群文件上面,有须要的可以自行添加哦!!!(含视频教程、电子书、实战项目及代码)
嵌入式是一个比较大的概念,有四个分支(主要):
对于我们初学者而言,首先要学习单片机,以51为代表,等你学好51以后,可以深入学习更艰辛的东西;
其实,并不是说你只须要学习单片机;要想学好单片机,你还得学c语言,得学汇编,得学一大堆应用软件;等到单片机能否把握的不错的时侯又须要自己进行原理图、PCB板的设计;还得把握系统设计的工程管理哪些的;比较多。。。。
单片机还是比较简单的,等到学好以后,开始学习arm的时侯,你就接触的多了,哪些操作系统啊、驱动编撰啊、内核移植啊、应用程序的添加啊、上位机的编撰啊,,那种就多了,,不过待会儿你就全晓得了。。。
ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:
从事嵌入式软件开发的用处是:
从事嵌入式软件开发的缺点是:
兴趣的来历:
1、成功观念不同,不蹉跎今生,就是我的成功。
2、喜欢思索,挑战逻辑思维。
3、喜欢C语言
4、喜欢底层开发,厌恶vb类开发工具(并不是说vb不好)。
5、发展前景好,适宜创业,不想自己要死了的时侯还是一个工程师。
方式步骤:
1、基础知识:
目的:能读懂硬件工作原理,但重点在嵌入式软件,非常是操作系统级软件,那将是我的优势。
课目:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散物理。
数据结构和算法、操作系统、软件工程、网络、数据库。
方式:虽课目诸多,但都是较简单的基础嵌入式linux驱动,且大部份已把握。不一定全学,可依照须要必修。
thec++programminglanguage(始终没时间读)、数据结构-C2。
2、学习linux:
目的:深入把握linux系统。
方式:使用linux—〉linxu系统编程开发—〉驱动开发和剖析linux内核。先看深,那主讲原理。看几遍后,看情境剖析,对照深看LINUX虚机,两本交叉,深是纲,情是目。分析则是0.11版,适宜学习。最后深入代码。
主攻书籍:linux内核完全分析、unix环境中级编程、深入理解linux内核、情景剖析和源代。
3、学习嵌入式linux:
目的:把握嵌入式处理器其及系统.
方式:
主攻书籍:毛德操的《嵌入式系统》及其他arm9指南与arm汇编指令等。
4、深入学习:
说明:太多细节未说明,可依照实际情况调整。重点在于1、3,毋须完全依照次序作。对于学习c++嵌入式linux驱动,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是用来显摆得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。
注意:要学会举一反多,有强悍的基础,好多东西简单瞧瞧才能会。想成为合格的程序员,前提是必须熟练起码一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。
不要一味钻研技术,即使挤出时间是很难做到的,但还是要留点余地去建立其他的爱好,例如宇宙,绘画、机械、管理,心理学、游戏、科幻连续剧。还有一些不乐意做但必需要做的!
技术是通过编程编程在编程编下来的。永远不要梦想一步登天,不要做浮躁的人linux嵌入式开发,不要认为路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,虽然成功了发展空间也不一定很大)。
Linux基础
1、《Linux与UnixShell编程手册》
C语言基础
1、《CPrimerPlus,5thEdition》【美】StephenPrata着
2、《TheCProgrammingLanguage,2ndEdition》【美】BrianW.KernighanDav
idM.Rithie(K&R)着
3、《AdvancedProgrammingintheUNIXEnvironment,2ndEdition》(APUE)
4、《嵌入式Linux应用程序开发解读》
学习Linux内核主要从
全方面系统全面的讲解底层原理开发技术:
最新Linux内核大纲
进程管理专题
显存管理专题
网路合同栈专题
设备驱动管理专题
文件系统及内核组件专题
项目实战
适宜于
等等