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