天天看點

一個成熟的嵌入式開發工程師需要掌握哪些技術?

我也不太确定自己熟不熟,硬着頭皮來分享一波吧!

畢竟是站在個人的經曆角度分享,如有缺失敬請諒解。

  • 【基本武器】:
  • (1)C語言編碼能力(資料結構,常用算法,指針和數組,結構體和位域等)
  • (2)MCU的理論知識(記憶體,中斷,GPIO,功能外設(uart,iic,dma等)等)
  • (3)MCU的編碼方式(寄存器/庫函數),編譯下載下傳過程(根據題主選擇的MCU來學習)
  • (4)基本的電路連線圖能看懂(MCU的管腳如何連接配接到外界器件等)
  • (5)實時作業系統編碼能力(freertos)
  • (6)業務場景知識(根據題主嵌入式産品場景而定)
  • 【更新武器】:
  • (1)軟體架構設計能力
  • (2)示波器,邏輯分析儀使用(調試通信器件使用)
  • (3)讀取反彙編能力(定位Bug時候可能用到)
  • (4)掌握通信協定(序列槽232通信,485通信,iic協定,spi協定,can協定等等)
一個成熟的嵌入式開發工程師需要掌握哪些技術?

其實嵌入式開發也不一定要你全都會,大緻會分幾個方向,要有自己拿手的地方!

嵌入式物聯網需要學的東西真的非常多,千萬不要學錯了路線和内容,導緻工資要不上去!無償分享大家一個資料包,差不多150多G。裡面學習内容、面經、項目都比較新也比較全!某魚上買估計至少要好幾十。

點選這裡找小助理0元領取:點選文中的藍色字型領取吖

一個成熟的嵌入式開發工程師需要掌握哪些技術?
一個成熟的嵌入式開發工程師需要掌握哪些技術?

嵌入式的開發大緻需要這麼從下到上四類工程師:嵌入式硬體開發、嵌入式驅動開發、嵌入式系統開發、嵌入式軟體開發。

  1. 嵌入式硬體開發這是硬體工程師來做,一般出身為自動化,電子,通信等專業,他們要求熟悉電路等知識,非常熟悉各種常用元器件,掌握模拟電路和數字電路設計的開發能力,熟悉硬體開發模式和設計模式,熟悉各種晶片及外圍裝置,熟悉8位16位32位處理器嵌入式硬體平台開發。有的要求有FPGA的開發經驗,精通常用的硬體設計工具:Protel/PADS(PowerPCB)/Cadence/OrCad。一般要有4~8層高速PCB設計經驗。
  1. 嵌入式驅動開發這個可以硬體工程師來做,也可以軟體工程師來做,主要還是取決于裝置。目前驅動開發,除非是簡單的裝置驅動,實際上很多時候都是移植,是以更多的是需要掌握目标平台的硬體和系統特性。是以至少得掌握一些作業系統、系統結構、計算機組成原理、資料結構相關知識。熟悉嵌入式ARM/MIPS/PowerPC架構。具有單片機、某種或多種32位嵌入式處理器的移植開發能力,熟悉bootloader過程,具有紮實的硬體知識,了解硬體原理圖,能獨立完成相關硬體驅動調試,能夠根據晶片手冊編寫軟體驅動程式。如果涉及到網絡裝置,或許還要掌握很多高層的網絡協定的原理。個人感覺這一塊雖然大部分不是很難,但卻是極為重要的。當然如果要在這一層次提供對上層的多線程支援,某些驅動也是很難寫的。
  1. 嵌入式系統開發這個沒聽說硬體工程師來做的。做這塊,熟悉作業系統的原理是必不可少的,比如記憶體管理,比如線程排程,比如檔案系統等等;還要精通處理器體系結構、指令集、尋址方式、調試、彙編和混合程式設計等方面的内容;熟悉作業系統啟動流程。對于linux,要熟悉Linux配置檔案的修改,掌握核心裁減、核心移植、交叉編譯、核心調試、啟動程式Bootloader編寫、根檔案系統制作和內建部署Linux系統等整個流程。這一塊要是真寫起來,困難程度那是相當恐怖的,好在大多都是移植,很少聽說有公司要去開發個作業系統的,沒Google的實力啊。
  1. 嵌入式軟體開發這個嘛,沒有作業系統的話,程式一般不會特别複雜,如果有作業系統的支援,又和一般的軟體開發很接近,是以盡可以看作是搞桌面開發。這個要求就是熟悉系統的API,精通C語言的進階程式設計知識,包括函數與程式結構、指針、數組、常用算法、庫函數的使用等知識、資料結構的基礎内容;掌握面向對象程式設計的基本思想,以及C++語言的基礎内容;精通嵌入式Linux下的程式設計,精通嵌入式Linux開發環境,包括系統程式設計、檔案I/O、多程序和多線程、網絡程式設計、GUI圖形界面程式設計、資料庫;熟悉常用的圖形庫的程式設計,如QT、GTK、miniGUI、fltk、nano-x等,掌握各種應用層的網絡協定使用,以及各種音視訊技術等。

繼續閱讀