ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:
(1)把握主流嵌入式微处理器的结构与原理(初步定为arm9)
(2)必须把握一个嵌入式操作系统(初步定为uclinux或linux,版本待定)
(3)必须熟悉嵌入式软件开发流程并起码做一个嵌入式软件项目。
从事嵌入式软件开发的用处是:
(1)目前国外外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是由于这一领域较新arm嵌入式linux系统,目前发展太快,大多数人无条件接触。
(2)与企业估算等应用软件不同,嵌入式领域人才的工作硬度一般低一些(但收入不低)。
(3)哪天倘若创业,搞自已的产品,嵌入式不像应用软件那样容易被偷版。硬件设计通常都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就弄成自己的产品了。
(4)兴趣所在,这是最主要的。
从事嵌入式软件开发的缺点是:
(1)入门起点较高,所用到的技术常常都有一定难度,若软硬件基础不好,非常是操作系统级软件功力不深,则可能不适于此行。
(2)这方面的企业数目要远多于企业估算类企业。
(3)有少数公司常常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
(4)平台依托强,换平台比较辛苦。
兴趣的来历:
1、成功观念不同,不蹉跎今生,就是我的成功。
2、喜欢思索,挑战逻辑思维。
3、喜欢C
C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成句子如下:
相信程序员。
不要制止程序员做这些须要去做的。
保持语言短小精干。
一种方式做一个操作。
致使它运行的够快,虽然它并不能保证将是可移植的。
4、喜欢底层开发,厌恶vb类开发工具(并不是说vb不好)。
5、发展前景好,适宜创业,不想自己要死了的时侯还是一个工程师。
方式步骤:
1、基础知识:
目的:能读懂硬件工作原理,但重点在嵌入式软件,非常是操作系统级软件,那将是我的优势。
课目:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散物理。
数据结构和算法、操作系统、软件工程、网络、数据库。
方式:虽课目诸多,但都是较简单的基础,且大部份已把握。不一定全学,可依照须要必修。
主攻书籍:thec++programminglanguage(仍然没时间读)、数据结构-C2。
2、学习linux:
目的:深入把握linux系统。
方式:使用linux—〉linxu系统编程开发—〉驱动开发和剖析linux内核。先看深,那主讲原理。看几遍后,看情境剖析,对照深看,两本交叉,深是纲,情是目。分析则是0.11版,适宜学习。最后深入代码。
主攻书籍:linux内核完全分析、unix环境中级编程、深入理解linux内核、情景剖析和源代码。
3、学习嵌入式linux:
目的:把握嵌入式处理器其及系统。
方式:
(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
(2)嵌入式操作系统类:ucOS/II简单,开源deepin linux,可供入门。而后深入研究uClinux。
(3)必须有块开发板(arm9以上),有条件可出席培训(进步快,能认识些同学)。
主攻书籍:毛德操的《嵌入式系统》及其他arm9指南与arm汇编指令等。
4、深入学习:
A、数字图象压缩技术:主要是应把握MPEG、mp3等编解码算法和技术。
B、通信合同及编程技术:TCP/IP合同、802.11arm嵌入式linux系统,Bluetooth,GPRS、GSM、CDMA等。
C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:DigitalSignalProcess,DSP处理器通过硬件实现数字讯号处理算法。
说明:太多细节未说明,可依照实际情况调整。重点在于1、3,毋须完全依照次序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是用来显摆得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。
注意:要学会举一反多,有强悍的基础,好多东西简单瞧瞧才能会。想成为合格的程序员,前提是必须熟练起码一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。
不要一味钻研技术,即使挤出时间是很难做到的,但还是要留点余地去建立其他的爱好,例如宇宙linux 版本,绘画、机械、管理,心理学、游戏、科幻连续剧。还有一些不乐意做但必需要做的!
技术是通过编程编程在编程编下来的。永远不要梦想一步登天,不要做浮躁的人,不要认为路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,虽然成功了发展空间也不一定很大)。
嵌入式书籍推荐
Linux基础
1、《Linux与UnixShell编程手册》
C语言基础
1、《CPrimerPlus,5thEdition》【美】StephenPrata着
2、《TheCProgrammingLanguage,2ndEdition》【美】BrianW.KernighanDavidM.Rithie(K&R)着
3、《AdvancedProgrammingintheUNIXEnvironment,2ndEdition》(APUE)
4、《嵌入式Linux应用程序开发解读》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情境剖析》毛德操胡希明著
研制方向
1、《UNIXNetworkProgramming》(UNP)
2、《TCP/IP解读》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
5、《Linux中级程序设计》杨宗德著
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410Datasheet
英文基础
1、《计算机与通讯专业语文》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操胡希明着
3、《BuildingEmbeddedLinuxSystems》
4、《嵌入式ARM系统原理与实例开发》杨宗德著
理论基础
1、《算法简史》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能剖析》
4、《深入理解计算机系统》【美】RandalE.BryantDavidO''Hallaron着
5、《操作系统:真谛与设计原理》
6、《编译原理》
7、《数据通讯与计算机网路》
8、《数据压缩原理与应用》
C语言书籍推荐
1.TheCprogramminglanguage《C程序设计语言》
2.PointersonC《C和表针》
3.Ctrapsandpitfalls《C圈套与缺陷》
4.ExpertCLanuage《专家C编程》
5.WritingCleanCode-----MicrosoftTechiniquesforDevelopingBug-freeCPrograms
《编程精萃--Microsoft编撰优质无错C程序绝招》
6.ProgrammingEmbeddedSystemsinCandC++《嵌入式系统编程》
7.《C语言嵌入式系统编程修练》
8.《高质量C++/C编程手册》林锐
尽可能多的编码,要学好C,不能只重视C本身。算法,构架形式等都很重要。
玩转单片机
投稿、合作、赞助,请短信: