ARM+LINUX路线,专注于嵌入式Linux操作系统及其应用软件开发目标:
(1)掌握主流嵌入式微处理器(初步定义为ARM9)的结构及原理
(2)必须掌握一种嵌入式操作系统(初步uclinux或者linux,版本待定)

(3)熟悉嵌入式软件开发流程,并完成过至少一个嵌入式软件项目。
从事嵌入式软件开发的好处有:
(1)目前国内外该领域的人才短缺,一方面该领域的准入门槛较高,非专业IT人员很难进入该领域;另一方面由于该领域比较新,目前发展速度过快,大多数人还不具备接触该领域的条件。
(2)不同于企业计算等应用软件,嵌入式领域人才的工作强度通常较低(但收入也不低)。
(3)如果要创业,开发自己的产品,嵌入式系统不像应用软件那么容易被盗版。硬件设计一般都是找其他公司定制(这就叫“OEM”),都是通用硬件,我们只要把软件设计出来,就成了自己的产品。
(4)兴趣最重要。
从事嵌入式软件开发的缺点是:
(1)入行门槛比较高,用到的技术往往比较难,如果你没有很好的软件和硬件基础,尤其是没有很深的操作系统级软件功底,可能不太适合干这一行。
(2)该领域的公司数量远少于企业计算领域的公司数量。
(3)少数公司做嵌入式往往要求硕士以上学历,主要是因为嵌入式比较难,但大部分公司没有这个要求,只要有经验就可以。
(4)平台依赖性强,更换平台困难。
兴趣来源:
1、成功的概念不同,没有浪费生命就是我的成功。
2.喜欢思考并挑战逻辑思维。
3. 像 C
C 是一种突破思维极限的语言。C 精神的某些方面可以用以下简短的句子来概括:
相信程序员。
不要阻止程序员做需要做的事情。
保持语言简短、切中要点。
方法执行一个操作。
使其运行得足够快,尽管不能保证其可移植性。
4、喜欢低级开发,讨厌VB类型的开发工具(并不是说VB不好)。
5、发展前景好,适合创业,不想快要死了才去做工程师。
方法步骤:
1.基础知识:
目的:能够理解硬件的工作原理,但重点关注嵌入式软件,尤其是操作系统级软件,这将是我的优势。
课程内容:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散数学。
数据结构和算法、操作系统、软件工程、网络、数据库。
方法:科目虽然多,但都是比较简单的基础,大部分都掌握了,不需要全部学,可以根据需要选择选修课。
主要书籍:C++编程语言(一直没时间看),数据结构-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、蓝牙、GPRS、GSM、CDMA等。
C.网络与信息安全技术:如加密技术、数字证书CA等。
D.DSP技术:数字信号处理,DSP处理器通过硬件实现数字信号处理算法。
注:太多细节就不解释了,可以根据实际情况调整。重点是1和3,不必严格按照顺序。对于学习C++,原因是C++不仅仅是一种语言,一种工具,更是一门艺术,一种文化,一种哲学,而不是用来炫耀的东西。对于Linux内核,学习编程,阅读一些优秀的代码也是必要的。
注意:一定要学会举一反三,基础扎实,看一看就能学到很多东西。要想成为一名合格的程序员,必须精通至少一门编程语言,有良好的逻辑思维,理论联系实际。
不要只研究技术。虽然挤出时间很难,但你还是应该留出一些空间来发展其他爱好,比如太空、素描、机械、管理、心理学、游戏、科幻电影。还有一些事情你不想做但必须做!
技术是通过编程和编程创造出来的。永远不要梦想一步登天,不要浮躁,不要觉得路很长。而是应该编程、编程,再编程、再编程!
等待机会来临,去创业(不要相信奇迹,盲目创业很难成功,即使成功,发展空间也未必很大)。
嵌入式书籍推荐
Linux 基础
1. Linux 和 Unix Shell 编程指南
C 语言基础
1. C Primer Plus,第 5 版(作者:Stephen Prata)
2.《C 编程语言》,第 2 版,作者:Brian W. Kernighan 和 David M. Rithie(K & R)
3. UNIX环境高级编程,第2版(APUE)
4.《嵌入式Linux应用开发详解》
Linux 内核
1.《深入理解Linux内核》(第3版)
2.《Linux内核源代码情景分析》毛德操、胡希明著
研发方向
1. UNIX 网络编程(UNP)
2. TCP/IP详解
3. Linux内核编程
4. Linux设备驱动程序开发(LDD)
5. 杨宗德的《Linux 高级编程》
硬件基础知识
1. ARM架构与编程(杜春雷著)
2.S3C2410 数据表
英语基础
1.《计算机与通信英语》
系统教程
1.“嵌入式系统 - 架构、编程和设计”
2.《嵌入式系统——使用开源代码和StrongARM/Xscale处理器》作者:毛德操、胡希明
3.构建嵌入式Linux系统
4.杨宗德《嵌入式ARM系统原理与案例开发》
理论基础
1.算法简介
2.数据结构(C语言版)
3. 计算机组织与架构-性能分析
4. Randal E. Bryant 和 David O''Hallaron 合著的《深入理解计算机系统》
5.操作系统的本质与设计原则
6. 编制原则
7.数据通信和计算机网络
8.数据压缩原理及应用
推荐一些C语言方面的书籍
1. C 编程语言
2. C 语言中的指针
3. C 陷阱和隐患
4. Expert C 语言 《Expert C 编程》
5. 编写干净的代码 -----Microsoft 的无 Bug C 程序开发技术
《编程精要——微软编写高质量、无错误 C 程序的秘诀》
6. 使用 C 和 C++ 编写嵌入式系统程序
7.《C语言嵌入式系统编程实践》
8.《高质量C++/C编程指南》作者:林睿
尽可能多地编写代码,学好 C,不要只关注 C 本身。算法、架构等都很重要。
这里很多书都只是推荐,别太当真,关键还是基础,那才是最重要的!
!
!