從事嵌入式軟件開發相關工作至今有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標準庫,標準庫不需要了解的多細,但是知道有哪些標準庫還是有必要的。
結語
算是工作幾年的一點經驗吧,不算多全面,希望能對大家有所幫助。