第一阶段:C语言高级编程
在嵌入式领域中大部分开发都会用到C语言。C语言简洁,紧凑,使用方便灵活加上GNU在实际项目开发中所做的拓展,使得c语言在整个嵌入式开发过程中起着至关重要的作用。更重要的是c语言开发的程序在嵌入式平台下可移植性比较强。一个精通c语言程序设计的程序员可以很容易的从事Linux,WinCE,Vxworks,μc/os等嵌入式操作系统下的软件开发工作。
需要掌握的知识:
1. 程序结构设计,数组,函数,预处理
2. 字符串操作,指针
3. 结构体,共用体,宏,枚举,链表
4. 文件I/O操作
5. 数据结构和算法(包含顺序表,链表,队列,栈,树,图,哈希表,查找排序算法及应用及c语言实现过程)
第二阶段:Linux基础
Linux系统是嵌入式发展最为迅速以及占有率最高的嵌入式操作系统,对其掌握的熟练程度直接关系到在嵌入式领域的发展。
需要掌握的知识:
1. 详细介绍Linux下的目录结构,基本命令,常用网络服务管理配置——nfs,ssh,samba
2. 熟练掌握Linux下编辑器,编译器GCC,调试器GDB
3. 熟练掌握Linux下项目管理工具Make以及Makefile工作原理及其编写
4. 熟练掌握Linux下shell脚本相关知识及其编写
5. 熟练进行嵌入式开发环境的基本概念及其搭建——bootloader,kernel,roofs。
第三阶段:Linux系统编程开发
Linux系统提供了许许多多的功能,作为一个软件开发人员必须学会如何编程去使用操作系统提供的功能。
需要掌握的知识:
1. 熟悉Linux系统编程基本概念及编程方法。
2. 精通掌握Linux系统下的IO控制技术
如果是菜鸟呢,学到这些就基本已经完成了Linux基本知识的学习了。
但是光学这些是不够的,用这些知识找到工作基本上是不可能的。由于嵌入式涉及的范围十分广泛,所以从事嵌入式行业的方向也有很多。所以可以参考从事的发展方向来制定相应的学习计划。
1. Linux数据存储技术——数据库
所需知识:数据库概念,数据库类型,常见数据库,SQLite数据库介绍及其安装于移植,SQL数据库语言(数据定义语言,数据操作语言,数据查询语言,数据控制语言),及windows下的图形化数据库管理软件SQLite Expert Professtional。
2. Linux网络编程开发
所需知识:
(1) 熟悉TCP\IP 4层基本协议划分与各层基本功能
(2) 熟悉HTTP,FTP,TCP,UDP,IP,路由器,集线器等基本协议与设备
(3) 熟悉端口号,soctket套接头,B/S,C/S等基本网络概念
(4) 熟悉IPv6与IPv4基本联系与区别,掌握其编程接口
(5) 熟悉网络数据通信过程
(6) 熟悉网络原始套接字概念及编程接口
(7) 熟悉网络路由层基本知识
3. 嵌入式Linux平台开发
所需知识:
(1) 基于B/S架构的网络模型
(2) Web开发技术
(3) Linux数据存储技术
4. 嵌入式Linux设备驱动开发
(1) 嵌入式Linux内核工作原理分析及其移植
(2) 嵌入式Linux根文件系统组成分析及其制作
(3) 嵌入式Bootloader原理分析及其移植
(4) 嵌入式Linux高级驱动程序设计