結合嵌入式行業認識,談談嵌入式軟體工程師的發展路徑
談談自己對嵌入式行業的認識以及對當前市場行情、人才需求的看法。
關於嵌入式,它涉及到全社會生活的方方面面,一個嵌入式裝置一般都由嵌入式計算機系統和執行裝置組成,嵌入式計算機系統是整個嵌入式系統的核心,由硬體層、中間層、系統軟體層和應用軟體層組成。執行裝置也稱為被控物件,它可以接受嵌入式計算機系統發出的控制命令,執行所規定的操作或任務。
嵌入式系統是一種專用的計算機系統,作為裝置或裝置的一部分。通常,嵌入式系統是一個控制程式儲存在ROM記憶體中的嵌入式處理器控制板。事實上,所有帶有數字介面的裝置,如手錶、微波爐、錄影機、汽車等,都使用嵌入式系統,有些嵌入式系統還包含作業系統,但大多數嵌入式系統都是由單個程式實現整個控制邏輯。
從應用物件上加以定義,嵌入式系統是把軟體和硬體結合,還可以包含機械的專業知識。國內普遍認同的嵌入式系統定義為:以應用為中心,以計算機技術為基礎,軟硬體可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。
嵌入式開發的相關領域:
當今嵌入式行業內,主要有一些比較流行熱門的領域,這些領域的人才缺口較大,容易受到企業的歡迎:
① 數字影象壓縮技術:這是嵌入式最重要最熱門的應用領域之一,主要是應掌握MPEG編解碼演算法和技術,如DVD、MP3、PDA、高精電視、機頂盒等都涉及MPEG高速解碼問題。
② 通訊協議及程式設計技術:這包括傳統的TCP/IP協議和熱門的無線通訊協議。首先,大多數嵌入式裝置都要連入區域網或Internet,所以首先應掌握 TCP/IP協議及其程式設計,這是需首要掌握的基本技術;其次,無線通訊是目前的大趨勢,所以掌握無線通訊協議及程式設計也是是很重要的。無線通訊協議包括無線 區域網通訊協議802.11系列,Bluetooth,以及行動通訊(如GPRS、GSM、CDMA等)。
③ 網路與資訊保安技術:如加密技術,數字證書CA,以及各種網路安全裝置,包括硬體防火牆,入侵檢測IDS,還有防毒牆,IPS等,中國在這方面還是沒有自己優勢的,我們陳院長好象正在往這方面發展.
④ DSP技術:DSP是Digital Signal Process數字訊號處理的意思,DSP處理器通過硬體實現數字訊號處理演算法,如高速資料採集、壓縮、解壓縮、通訊等。數字訊號處理是電子、通訊等硬體 專業的課程,對於搞軟體的人若能瞭解一下最好。目前DSP人才較缺。如果有訊號與系統、數字訊號處理等課程基礎,對於學習MPEG編解碼原理會有很大幫助。
職位方面,職位有主要有五個方面:
① 系統設計工程師
② 硬體工程師
③ 底層驅動工程師
④ Linux系統工程師
⑤ 應用設計工程師
薪資方面,在嵌入式行業中,具有10年工作經驗的高階嵌入式工程師年薪在30萬元左右。即使是初級的嵌入式軟體開發人員,平均月薪也達到了3000—5000元,中高階的嵌入式工程師月薪平均超過10000元。參考國內招聘網大量的招募資訊,嵌入式硬體工程師普遍在7000元左右,嵌入式軟體工程師在10000元左右。
對於專業知識需求,因所選專業為嵌入式軟體,故廣集招聘網的招聘資訊後,此處只羅列出和嵌入式軟體相關的:
① 關於ARM:ARM A7/A8/9或A57 Cotex-A9 STM8 STM32
② 關於程式語言:精通C/C++語言,熟悉彙編
③ 常用軟體:keil、atmel studio、Candence、PADS、Altium Designer
④ 協議相關:TCP/IP、USB、USART、I2C、SPI等,熟悉基於socket的網路通訊
⑤ 通行通訊介面程式設計:RS232,RS485,乙太網
⑥ 作業系統相關:
1.掌握LINUX或uCOS 、rt-thread某一作業系統的使用與開發
2.能獨立進行核心的移植和驅動編寫。
3.核心系統移植/除錯及應用程式開發工作
⑦ 輔助:
1.能閱讀硬體原理圖和晶片資料手冊
2.可熟練使用示波器等常用嵌入式開發儀器
⑧ 其他:
1.良好的程式碼編寫習慣和文件編寫能力
2.良好的溝通和協調能力
3.能夠閱讀英文技術文件
關於學習之路,結合市場需求和網路上的資料,梳理了一份適合自己的學習路線。
① Linux開發基礎學習
虛擬機器搭建、Linux宿主機安裝、Linux命令、伺服器搭建Samba,NFS、VI編輯器
② Linux程式設計
GCC/GDB、Makefile、交叉編譯環境搭建+C語言強化+Linux系統程式設計
③ 51微控制器/AVR微控制器入門
GPIO、中斷服務程式、定時器、狀態機程式設計、按鍵、OLED
④ ARM體系結構與程式設計
ARM處理器程式設計
⑤ Linux系統核心分析
⑥ Linux驅動程式開發
總結:由薪資和待遇看來,當前市場人才缺口還是較大,需求量逐年上升;但由於嵌入式不像移動互聯開發(如安卓開發、C#開發等)純軟體的開發思維,而是涉及到底層硬體學習又兼顧驅動程式的程式設計,枯燥的硬體電路學習和繁雜的驅動程式編寫,造成了嵌入式入門的困難。在我看來,在當今物聯網的趨勢和政策下,物體與物體的聯絡越來越密切,未來的嵌入式開發勢必佔據IT行業的半壁江山,扭轉現在移動互聯當紅的現狀,形成全民物聯、全民嵌入的風氣,呈現一幅繁榮的景象。但學習嵌入式需要有足夠的耐心和毅力,需要學會舉一反多,並建立牢固的知識基礎,所以,在未來面對求職市場之前,我會堅持學習底層知識,敢於提問,敢於解決問題,多參加電子類比賽,盡最大努力提升自己的實力。最後,寫下自己的座右銘:
讓堅持成為一種習慣,讓放棄成為一種奢侈。