嵌入式软件开发概述

从事嵌入式软件开发相关工作至今有3年多了吧,总结一下自己理解的嵌入式软件开发吧,有些方面因为做的不多总结的也许不全面,见笑见笑。

嵌入式软件开发主要包括以下几类:

  1. 单片机开发
  2. Linux C/C++
  3. Linux 驱动 & 系统编译
  4. Android 系统开发

主要需要的知识能力有:

  • 单片机开发

    1. C语言
    2. 常用外设驱动(GGPIO、UART、IIC、Timer等)
    3. 多任务系统、UCOS或任意RTOS
    4. 网络知识,嵌入式TCP、IP协议栈,LWIP协议栈、UIP协议栈
  • Linux C/C++

    1. C/C++
    2. Socket网络编程
    3. 多线程、多进程编程
  • Linux驱动 & 系统编译

    1. Linux C/C++的能力
    2. Linux驱动编写、字符驱动、Platform虚拟总线驱动,并在config里增加模块
    3. Linux系统编译,系统裁剪,增加减少模块,添加厂家提供的ko驱动,增加新外设驱动等
    4. Shell脚本编写,常用的操作写成脚本,提高效率。
  • Android 系统开发

    1. Linux驱动 & 系统编译知识
    2. Android系统编译
    3. Android系统框架,Linux Driver -> Android Hal
    4. JNI, C库如何通过JNI给Java调用
  • 其他扩展知识

    1. TCP/IP 深入理解TCP/IP,未来包括现在已经是互联网时代网络知识是必要的。
    2. HTTP,了解HTTP协议并知道如何通过Socket实现HTTP下载文件,或者调用服务器的HTTP接口。
    3. 无线通信相关,蓝牙协议、Zigbee、WiFi等主流物联网无线通信技术。
    4. 程序设计能力,面向对象设计 & 设计模式,C语言开发深入理解Linux Kernel中的面向设计思想是十分有必要的,学习C语言中如何进行面向对象设计
  • 书籍推荐

    推荐一些自己看过觉得不错的书吧,有些也想不起来了。

    1. 代码大全,对软件开发方面总结的非常全面
    2. Linux内核设计与实现, 短小精悍的Linux内核书籍
    3. C语言深度解剖,总结里C语言的很多奇技淫巧,很多都挺实用的。
    4. C和指针
    5. C陷阱与缺陷
    6. C标准库,标准库不需要了解的多细,但是知道有哪些标准库还是有必要的。

结语

算是工作几年的一点经验吧,不算多全面,希望能对大家有所帮助。

你可能感兴趣的:(嵌入式软件开发概述)