軟件之痛 嵌入式軟件開發(fā)實(shí)力比PC弱
直到2000年,MCU的性能還不能令人滿意,業(yè)界廣泛應(yīng)用的MCU,其運(yùn)行速度低于10MIPS,存儲(chǔ)器和外設(shè)都很少,許多應(yīng)用需要外擴(kuò)存儲(chǔ)器和外設(shè)。當(dāng)時(shí)的嵌入式系統(tǒng)開發(fā)過程,首先最重要的工作是擴(kuò)展存儲(chǔ)器和外設(shè),其次是編寫MCU與擴(kuò)展外設(shè)之間的驅(qū)動(dòng)程序,最后才是為特定應(yīng)用服務(wù)的軟件開發(fā)。因MCU速度低,擴(kuò)展外設(shè)的驅(qū)動(dòng)程序占用了不少M(fèi)CU運(yùn)行時(shí)間,留給特定應(yīng)用程序運(yùn)行的資源很少,所以特定應(yīng)用服務(wù)的軟件很簡(jiǎn)單。因此,當(dāng)時(shí)嵌入系統(tǒng)開發(fā)是以硬件及其與硬件直接相關(guān)的軟件開發(fā)為主。
基于ARM核MCU的出現(xiàn),即使不到5元的32位MCU,其運(yùn)行速度超過40MIPS,而且還集成了豐富的存儲(chǔ)器和各種外設(shè),使MCU不擴(kuò)展外設(shè)也能滿足大部分需求,從而簡(jiǎn)化了硬件開發(fā)工作。ADS、MDK-ARM和IAR Embedded Workbench for ARM軟件開發(fā)工具的不斷完善,確保了嵌入式軟件開發(fā)工具的一致性和連續(xù)性;CMSIS標(biāo)準(zhǔn)庫(kù)的推出,使嵌入式軟件外設(shè)驅(qū)動(dòng)的標(biāo)準(zhǔn)化,增強(qiáng)了嵌入式系統(tǒng)特定應(yīng)用軟件的可移植性。ARM及其MCU廠家的共同努力,通過上述3方面的工作宣告“重造車輪”式的嵌入式開發(fā)模式的結(jié)束,使嵌入式開發(fā)由以硬件及其與硬件直接相關(guān)的軟件開發(fā)為主轉(zhuǎn)移到以開發(fā)為特定應(yīng)用服務(wù)的軟件上來(lái)。
嵌入式系統(tǒng)是為特定系統(tǒng)定制的,這就要求開發(fā)人員除了具備軟件開發(fā)能力,還應(yīng)具備服務(wù)對(duì)象、硬件領(lǐng)域、通信與網(wǎng)絡(luò)領(lǐng)域、人機(jī)介面領(lǐng)域的專業(yè)知識(shí)。除此之外,它還要求具備較高的軟件架構(gòu)和實(shí)時(shí)任務(wù)調(diào)度能力。以上表明嵌入式系統(tǒng)對(duì)軟件開發(fā)人員的要求并不比PC對(duì)軟件開發(fā)人員的要求低,但實(shí)際上嵌入式系統(tǒng)的軟件開發(fā)行業(yè)的整體實(shí)力卻比PC行業(yè)低很多,這是因?yàn)椋?/p>
1.開發(fā)體系缺乏。PC自Intel和微軟在硬件和操作系統(tǒng)上統(tǒng)一后,PC軟件作為軟件產(chǎn)業(yè)中最大一個(gè)分支,從方法、理論、實(shí)施到維護(hù)升級(jí)等方面入手,建立了完整的軟件開發(fā)體系、規(guī)范了軟件產(chǎn)業(yè)的全過程,從而保證了整個(gè)PC軟件行業(yè)沿正確的方向發(fā)展。而嵌入式系統(tǒng)30多年里,由于不斷“重造車輪”,沒有條件也沒有時(shí)間建立完整的嵌入式系統(tǒng)軟件開發(fā)體系。
2.開發(fā)工具缺乏。嵌入式系統(tǒng)無(wú)論從MCU的運(yùn)行速度,還是其它資源都比PC少。例如:目前PC的速度是以G為單位,而MCU的速度是以M為單位,它們之間相差了1000倍,PC強(qiáng)大的資源保證了PC軟件開發(fā)能運(yùn)用各種軟件開發(fā)工具。目前在PC軟件開發(fā)過程中,從需求分析、軟件架構(gòu)、系統(tǒng)建模、代碼生成、代碼分析、人機(jī)介面、網(wǎng)絡(luò)通信和任務(wù)調(diào)度都有相應(yīng)的工具支撐,如Windows系統(tǒng)就是PC上集任務(wù)調(diào)度、人機(jī)界面和網(wǎng)絡(luò)通信一體的標(biāo)準(zhǔn)化平臺(tái)和工具。在嵌入式系統(tǒng)中,受其資源的限制,妨礙了嵌入式軟件開發(fā)工具的產(chǎn)生和發(fā)展,開發(fā)工具的缺乏使嵌入式系統(tǒng)軟件的開發(fā)難度更加困難。
3.軟件開發(fā)要求低。嵌入式系統(tǒng)開發(fā)的30多年歷程中,主要工作集中在硬件設(shè)計(jì)及硬件驅(qū)動(dòng)程序上,而真正用于增強(qiáng)用戶體驗(yàn)、服務(wù)于行業(yè)的軟件無(wú)論是工作量還是代碼量都很少,因此對(duì)軟件體系的建立和工具的需求要求不明顯。
4.開發(fā)人員不適應(yīng)嵌入式系統(tǒng)之變。MCU廠家的諸侯割據(jù),導(dǎo)致嵌入式系統(tǒng)開發(fā)長(zhǎng)期奔波于“重造車輪”的低水平重復(fù);在職業(yè)教育的源頭上,基本上沒有一本專業(yè)的嵌入式軟件開發(fā)的教科書,更談不上設(shè)置專門學(xué)科。目前除了消費(fèi)電子領(lǐng)域,嵌入式系統(tǒng)軟件開發(fā)人員通常來(lái)自電子、電氣和機(jī)械等專業(yè),他們基本上沒有受過系統(tǒng)的軟件開發(fā)教育,所以絕大多數(shù)嵌入式軟件開發(fā)人員的認(rèn)識(shí)還停止在會(huì)不會(huì)C語(yǔ)言編程這樣低層次上。完全不適應(yīng)嵌入式軟件從過去以實(shí)現(xiàn)為主的開發(fā)模式轉(zhuǎn)化到以服務(wù)和維護(hù)為主的開發(fā)模式。