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