从事嵌入式软件开发相关工作至今有3年多了吧,总结一下自己理解的嵌入式软件开发吧,有些方面因为做的不多总结的也许不全面,见笑见笑。
嵌入式软件开发主要包括以下几类:
- 单片机开发
- Linux C/C++
- Linux 驱动 & 系统编译
- Android 系统开发
主要需要的知识能力有:
-
单片机开发
- C语言
- 常用外设驱动(GGPIO、UART、IIC、Timer等)
- 多任务系统、UCOS或任意RTOS
- 网络知识,嵌入式TCP、IP协议栈,LWIP协议栈、UIP协议栈
-
Linux C/C++
- C/C++
- Socket网络编程
- 多线程、多进程编程
-
Linux驱动 & 系统编译
- Linux C/C++的能力
- Linux驱动编写、字符驱动、Platform虚拟总线驱动,并在config里增加模块
- Linux系统编译,系统裁剪,增加减少模块,添加厂家提供的ko驱动,增加新外设驱动等
- Shell脚本编写,常用的操作写成脚本,提高效率。
-
Android 系统开发
- Linux驱动 & 系统编译知识
- Android系统编译
- Android系统框架,Linux Driver -> Android Hal
- JNI, C库如何通过JNI给Java调用
-
其他扩展知识
- TCP/IP 深入理解TCP/IP,未来包括现在已经是互联网时代网络知识是必要的。
- HTTP,了解HTTP协议并知道如何通过Socket实现HTTP下载文件,或者调用服务器的HTTP接口。
- 无线通信相关,蓝牙协议、Zigbee、WiFi等主流物联网无线通信技术。
- 程序设计能力,面向对象设计 & 设计模式,C语言开发深入理解Linux Kernel中的面向设计思想是十分有必要的,学习C语言中如何进行面向对象设计
-
书籍推荐
推荐一些自己看过觉得不错的书吧,有些也想不起来了。
- 代码大全,对软件开发方面总结的非常全面
- Linux内核设计与实现, 短小精悍的Linux内核书籍
- C语言深度解剖,总结里C语言的很多奇技淫巧,很多都挺实用的。
- C和指针
- C陷阱与缺陷
- C标准库,标准库不需要了解的多细,但是知道有哪些标准库还是有必要的。
结语
算是工作几年的一点经验吧,不算多全面,希望能对大家有所帮助。