嵌入式Linux操作系统学习计划
ARM LINUX路线侧重于嵌入式LINUX操作系统及其应用软件开发目标:
(1)掌握主流嵌入式微处理器(初步命名为arm9)的结构和原理
(2)必须掌握嵌入式操作系统(最初指定为uclinux或linux,版本待定)
(3)必须熟悉嵌入式软件开发流程,至少做过一个嵌入式软件项目。
嵌入式软件开发的优势在于:
(1)目前国内外该领域人才匮乏。该领域进入门槛较高,非专业IT人员很难进入该领域;另一方面,因为这个领域比较新,目前发展太快,大部分人都无条件接触。
(2)与企业计算等应用软件不同,嵌入式人才的工作强度通常较低(但收入不低)。
(3)如果你想有一天创业,自己做产品,嵌入式软件不像应用软件那么容易被盗版。硬件设计一般由其他公司定制(这叫“OEM”: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->;林旭系统编程开发->;驱动程序来开发和分析Linux内核。先深看,再解释原理。看了几遍,看形势分析,和深度对比。两本书交叉,深度是关键环节,情感是目标。分析是0.11版本,适合学习。最后,深入研究代码。
主要话题:linux内核的完整分析,unix环境的高级编程,对linux内核的深入理解,场景分析和源码生成。
3.了解嵌入式linux:
目的:掌握嵌入式处理器及其系统。
方法:(1)嵌入式微处理器的结构和应用:直接arm原理和汇编就够了,不要重复x86。
(2)嵌入式操作系统类:ucOS/II简单,开源,可用于入门。然后深入研究uClinux。
(3)必须有开发板(arm9以上),有条件可以参加培训(可以快速进步,认识一些朋友)。
主要书籍:《嵌入式系统》的硬芝麻等arm9手册和arm组装说明等。
4.深入研究:
A.数字图像压缩技术:主要是掌握MPEG、mp3等编解码算法和te
12.90.173.*二楼
C.网络与信息安全技术:如加密技术、数字证书CA等。
D.数字信号处理技术:数字信号处理。DSP处理器通过硬件实现数字信号处理算法。
注:太多细节未说明,可根据实际情况调整。重点是1和3,不一定要按顺序做。对于学习C来说,原因是C不仅仅是一种语言,一种工具,更是一种艺术,一种文化,一种哲学思想,而不是可以炫耀的东西。对于linux内核来说,学习编程和阅读一些优秀的代码是很有必要的。
注意:学会举一反三,基础扎实,很多东西很容易看出来。要成为一名合格的程序员,必须精通至少一种编程语言,并具有良好的逻辑思维。我们必须把理论和实践结合起来。
不要盲目学习技术。虽然很难找到时间,但我们还是需要留出一些空间来完善其他爱好,比如宇宙、绘画、机械、管理、心理学、游戏和科幻电影。
还有一些不愿意做但必须要做的!技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。
嵌入式书籍推荐
Linux基础
1、《Linux与Unix Shell 编程指南》
C语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata着
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》辛勤的芝麻 无语的毛豆著
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
5、《Linux高级程序设计》 gxdfj著
硬件基础
1、《ARM体系结构与编程》彩色的钻石着
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》辛勤的芝麻 无语的毛豆着
3、《Building Embedded Linux Systems》
4、《嵌入式ARM系统原理与实例开发》 gxdfj著
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O''Hallaron着
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》
C语言书籍推荐
1. The C programming language 《C程序设计语言》
2. Pointers on C 《C和指针》
3. C traps and pitfalls 《C陷阱与缺陷》
4. Expert C Lanuage 《专家C编程》
5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs
《编程精粹--Microsoft 编写优质无错C程序秘诀》
6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》
7.《C语言嵌入式系统编程修炼》
8.《高质量C++/C编程指南》xbdhl
尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。
这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!