嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常嵌入式web技术嵌入式系统是一个控制程序存储在rom中的嵌入式处理器控制板。
国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。
学习嵌入式之前,必须学习其他课程,所谓0基础是不可能的!
1、c语言
《c程序设计语言》第二版,徐宝文译,机械工业出版社。你能区分开指针数组和数组指针吗?你知道函数指针吗? 你能区分开定义一个变量时系统给它分配的空间与用malloc()函数给一个变量分配的空间有什么不一样吗?
2、数据结构
《数据结构》c语言版,黄国愉、叶乃青编,清华大学出版社。你能合上书本,用c语言实现书中的单链表、双链表数据结构吗?
3、c++
《实用c++程序设计》第二版,中国电力出版社,steve_oualline著 。此阶段主要是学习其面向对象的编程思想,加深对c语言和数据结构的理解。
4、单片机
《51单片机》你能用51单片机做出一样实际的东西吗?即使它再简单!要注意加深对中断的理解。
5、arm单片机
细读《arm微控制器基础与实战》周立工编写,即使你不用书中的开发板);
细读相关芯片的原版英文文档。如:arm920te.pdf s3c2410_1.2.pdf 。
6、ucos!!操作系统
细读《嵌入式实时操作系统uc/os-!!》第二版,召贝贝译,你能把ucos!!移植到自己的平台上吗?
能编写在ucos!!操作系统环境下运行的针对具体硬件的驱动程序 。
7、linux
熟悉linux环境,学习linux环境编程,学习交叉编程:
细读《linux命令大全.pdf》 ;
细读《gnu make 使用手册(中译版).pdf》 ;
学习创建交叉编程环境。
8、linux操作系统
《unix环境高级编程》 ;
细读《linux内核完全注释》 ;
细读《understanding the linux kernel 2》 ;
利用源代码阅读利器工具"source insight"进行真正的linux内核原码刨析 ;
最后进行内核移植,并能编写在linux操作系统环境下运行的针对具体硬件的驱动程序 。
9、linux设备驱动编写
可参考《linux设备驱动程序》
10、复习c++
学习用qt进行图形界面编程:
细读《qt编程宝典》;
学会通过查看qt电子文档进行qt gui实地编程 ;
学习交叉编程(其实就是把命令qmake变为tmake)。
11、当然,你也可学习一下pcb的制作和设计一个自己的cpu(即软壳)
嵌入式是软硬件结合的技术,搞嵌入式软件的人应对arm处理器工作原理和接口技术有充分了解,包括arm的汇编指令系统。若不了解处理器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬件打交道的)?