嵌入式Linux学习思路及参考资料(ARM+LINUX路线)
嵌入式人才需求
(1)嵌入式应用工程师:主要面向计算机,软件工程相关专业。其基于某个平台,例如嵌入式Linux 、Vxworks、Symbian、WinCE的上层应用软件开发,开发语言主要采用嵌入式C/C++,主要领域网络、图形、数据库、音频、视频处理等。
(2)嵌入式系统工程师:主要面向电子信息相关专业,基于某个处理器内核,例如ARM、MIPS、PPC等,主要开发语言为汇编语言及嵌入式C语言编程,主要从事BootLoader,操作系统及中间件移植等工作。
(3)嵌入式驱动工程师:主要面向电子信息、计算机相关专业。基于某个处理器,例如2410、2440、6410等平台,开发语言主要为嵌入式C语言,主要从事接口驱动,例如
嵌入式相关课程的学生都具备以下基本能力:
(1)至少一种嵌入式处理器(ARM)。
(2)至少一种嵌入式操作系统(Linux)。
(3)一套嵌入式开发工具(ADS, GCC、嵌入式交叉编译调试环境)。
(4)一类开发语言(ARM汇编、C、C++)。
另外,必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。
从事嵌入式软件开发的好处是:
(1)目前国内外这方面的人都很稀缺。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。
(3)嵌入式不像应用软件那样容易被盗版。
从事嵌入式软件开发的缺点是:
(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。
(2)这方面的企业数量要远少于企业计算类企业。
(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
(4)平台依托强,换平台比较辛苦。
方法步骤:
1、基础知识:数字电路、计算机组成原理、C/C++、数据结构和算法、操作系统、网络、数据库。 特别是嵌入式C。
C参考
1. the c++ programming language
2. Pointers on C 《C和指针》
3. C traps and pitfalls 《C陷阱与缺陷》
4. Expert C Lanuage 《专家C编程》
2. Linux学习:使用linux—〉linxu应用编程开发—〉驱动开发和分析linux内核,先别急着研究内核源代码,那东西没有几个人弄得完全懂。
Linux基础
1、《Linux与Unix Shell 编程指南》
2、《Red Hat Linux 9系统管理与服务器配置》人民邮电出社
linxu应用编程开发
1、《UNIX Network Programming(第3版本)》机械工业出版社(UNP) 网络编程用
2、《UNIX环境高级编程(第2版本)》 清华大学出版社 系统调用及编程工具书
3、《Linux高级程序设计(第2版本)》 人民邮电 杨宗德著 系统调用及编程 有很多示例,初学者很不错
驱动开发和分析linux内核
1、《Linux内核设计与实现》 陈莉君 机械工业出版社
2、《Linux设备驱动开发》(LDD)中国电力出版社
3.ARM+linux嵌入式系统开发
ARM基础学习
1、《嵌入式ARM系统原理与实例开发(第2版本)》 北京大学出社
2、《ARM体系结构与编程》杜春雷
3、S3C2410 Datasheet
嵌入Linux开发
买块板子,调试程序。
其实很多人有误区,觉得学嵌入式要有板子,在后期确实如此,但如果基础达不到,也就把例子拿来跑跑,只有以上基础,基本功达到才能够真正开发。
深入学习(到这个时候,不用上网看帖子,你也知道你应该学习什么了):
A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。
B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。
C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。