新的程序開發(fā)模式出現(xiàn),傳統(tǒng)的嵌入式C語言程序員快要滅絕了?
在2000年前后,嵌入式軟件工程師有著一套非常具體的技能,他們通常是電氣工程師,不僅了解底層硬件的工作原理,還可以再底層編寫匯編代碼或者C語言代碼,以使系統(tǒng)滿足實(shí)時(shí)需求。嵌入式軟件工程師不僅要了解諸如C語言的軟件開發(fā),還要了解硬件。位、字節(jié)、寄存器的世界,正是嵌入式軟件工程師的領(lǐng)域。
但是如今不再那么簡(jiǎn)單了。
在早期,嵌入式開發(fā)人員通常使用 8 位或者16位的體系結(jié)構(gòu),這些結(jié)構(gòu)比較簡(jiǎn)單,因此開發(fā)人員一般在幾個(gè)月的開發(fā)周期內(nèi)便能掌握這些結(jié)構(gòu)。
但是近些年來,許多嵌入式開發(fā)團(tuán)隊(duì)已經(jīng)轉(zhuǎn)向更加復(fù)雜的 32 位體系結(jié)構(gòu),不僅包括一些用于數(shù)據(jù)采集的采樣傳感器,以及外圍的通信設(shè)備,還包括日益繁多的各種協(xié)議,例如 USB、DMA、 TCP/IP、藍(lán)牙等。這些復(fù)雜的體系架構(gòu),或者相關(guān)的通信協(xié)議,開發(fā)人員往往需要數(shù)年才能真正的完全掌握。
嵌入式系統(tǒng)已經(jīng)變得復(fù)雜
顯然,嵌入式系統(tǒng)已經(jīng)變得極其復(fù)雜。將硬件設(shè)備連接到互聯(lián)網(wǎng),以創(chuàng)建物聯(lián)網(wǎng)的巨大需求,在以往傳統(tǒng)的嵌入式C語言程序開發(fā)中是沒有出現(xiàn)過的。所以,這一“巨大需求”導(dǎo)致了一個(gè)真空——相關(guān)公司找不到足夠的嵌入式C語言軟件開發(fā)工程師了。
為了應(yīng)對(duì)“真空”,有些公司并未大力培養(yǎng)嵌入式C語言軟件工程師,而是開始依賴具有Windows應(yīng)用程序或者移動(dòng)設(shè)備程序開發(fā)經(jīng)驗(yàn)的人員來開發(fā)他們的實(shí)時(shí)嵌入式軟件。這會(huì)導(dǎo)致另外一個(gè)較為致命的問題出現(xiàn):這些開發(fā)人員大都只了解公司分配的任務(wù)所需的高層應(yīng)用程序框架,對(duì)底層硬件卻不夠了解。
這樣的公司并不在少數(shù)。因此微控制器制造商目前正在大力推動(dòng)為開發(fā)人員提供高層的軟件框架和工具,真正的硬件底層開發(fā),則由制造商完成。這使得嵌入式軟件開發(fā)人員,甚至應(yīng)用程序開發(fā)人員更容易在更高層上編寫軟件,他們不必再擔(dān)心底層的硬件了,因?yàn)橄嚓P(guān)的“輪子”已經(jīng)“出廠自帶”了。
相關(guān)的“輪子”已經(jīng)“出廠自帶”了
顯然,這樣的嵌入式程序開發(fā)模式更加有利于一些嵌入式公司降低成本,加快產(chǎn)品上市時(shí)間。但是我們也可能發(fā)現(xiàn),關(guān)心位、字節(jié)、寄存器的傳統(tǒng)嵌入式C語言、匯編軟件開發(fā)工程師顯得沒那么重要了,可能很快就會(huì)“滅絕”。
未來的嵌入式軟件工程師將與傳統(tǒng)的前輩們有著不一樣的技能,他們也不再關(guān)心硬件底層,不再關(guān)心位、字節(jié)、寄存器,也不再關(guān)心任務(wù)的實(shí)時(shí)性,事實(shí)上,他們可能不再關(guān)心任何傳統(tǒng)嵌入式程序員需要關(guān)心的東西。未來的嵌入式軟件工程師可能只需要具備應(yīng)用程序開發(fā)技能,知道如何調(diào)用一個(gè) API 讓硬件做事。
但是,他們不知道為什么要這么做,以及 API 到底是怎樣命令硬件做事的,所以他們也不具備實(shí)時(shí)調(diào)試硬件的技能甚至概念,無法深入到寄存器中。這些工程師,更像是遠(yuǎn)離硬件的 Windows 程序員。
了解底層硬件的傳統(tǒng)嵌入式程序開發(fā)人員永遠(yuǎn)都不會(huì)被“淘汰”
未來嵌入式軟件開發(fā)人員不具備底層硬件開發(fā)能力不一定就是***的壞事,至少這樣的開發(fā)模式允許一些缺乏關(guān)鍵技能的開發(fā)團(tuán)隊(duì)或者公司繼續(xù)發(fā)展下去,這一點(diǎn)可以從移動(dòng)設(shè)備領(lǐng)域看出。
了解底層硬件的傳統(tǒng)嵌入式程序開發(fā)人員永遠(yuǎn)都不會(huì)被“淘汰”,否則誰能提供 API,讓上層應(yīng)用程序開發(fā)人員調(diào)用,以控制硬件工作?
然而現(xiàn)實(shí)是,傳統(tǒng)嵌入式程序開發(fā)人員被公司忽略了。很多高科技公司更加青睞機(jī)器視覺、機(jī)器學(xué)習(xí)和其他***研究領(lǐng)域的開發(fā)人員,值得說明的是,這些***人才往往不屑于驅(qū)動(dòng)硬件這類“基礎(chǔ)工作”。但是,如果沒有程序員能夠與硬件設(shè)備溝通,所謂的“機(jī)器”視覺和“機(jī)器”學(xué)習(xí)又怎樣才能實(shí)現(xiàn)呢?