內(nèi)核換代模式之變 MCU將顛覆傳統(tǒng)應(yīng)用模式
天下一統(tǒng) ARM核MCU性能價格優(yōu)勢明顯
ARM7TDMI模式的出現(xiàn),使嵌入式系統(tǒng)開發(fā)逐漸統(tǒng)一到相同MCU內(nèi)核和軟件開發(fā)工具上來,為嵌入式系統(tǒng)走出“不斷地學(xué)習(xí)新內(nèi)核MCU,不斷地放棄老內(nèi)核MCU”的怪圈創(chuàng)造了條件。
相對于普通電子元件,MCU除了電氣特性外,還涉及指令系統(tǒng),不同內(nèi)核的MCU具有不同的指令系統(tǒng)。指令系統(tǒng)的不同,意味著MCU軟件開發(fā)平臺和嵌入式軟件的不同。
30多年里出現(xiàn)近100種MCU內(nèi)核,除了說明MCU技術(shù)進步快之外,還意味著不僅是MCU廠家在不斷“重造車輪”的過程中浪費了大量的人力和財力,更使處于MCU產(chǎn)業(yè)鏈的終端的嵌入式系統(tǒng)苦不堪言。對于嵌入式系統(tǒng)廠家,如果堅守同一內(nèi)核的MCU,則產(chǎn)品性價比差,特別是MCU到了生命期后還會停產(chǎn);如果不堅守同一內(nèi)核的MCU,則需要推翻已成熟的硬件和軟件,因硬件是可視的,不同內(nèi)核MCU的電氣特性相差不大,更新比較容易,而軟件則很困難。更換了不同內(nèi)核的MCU,首先是要重新購買軟件開發(fā)工具,其次軟件人員要重新學(xué)習(xí)指令系統(tǒng)和軟件開發(fā)工具,最后才是將過去的軟件移植到新內(nèi)核MCU上。其實軟件移植也是十分困難的,因為首先遇到的軟件開發(fā)工具存在BUG(軟件開發(fā)工具也是軟件,開發(fā)軟件開發(fā)工具的軟件開發(fā)人員對MCU指令系統(tǒng)的理解程度決定軟件開發(fā)工具的質(zhì)量,并且他們理解MCU指令系統(tǒng)也需要時間);其次是不同內(nèi)核的MCU其軟件架構(gòu)和算法差異性大,軟件移植過程投入的人力物力和重新開發(fā)投入的人力物力能相比擬。因此對于嵌入式系統(tǒng)來說,這30多年里主要精力不是放在讓嵌入式系統(tǒng)更好地服務(wù)于特定應(yīng)用,而是放在不斷地更換不同內(nèi)核的MCU,被迫跟隨MCU廠家陷入“不斷地學(xué)習(xí)新內(nèi)核MCU,不斷地放棄老內(nèi)核MCU”的怪圈。
ARM7TDMI模式的出現(xiàn)使MCU產(chǎn)業(yè)鏈的源頭發(fā)生本質(zhì)性的變化。ARM7TDMI模式是:ARM向各MCU廠家出售ARM7TDMI內(nèi)核,MCU廠家根據(jù)其市場目標(biāo)將購買的ARM7TDMI內(nèi)核與不同外設(shè)集成,形成內(nèi)核相同、外設(shè)不同的MCU,保證了內(nèi)核的一致性;同時ARM協(xié)助第三方編譯廠家開發(fā)軟件開發(fā)工具,如IAR、Keil,而且ARM也推出了相應(yīng)的軟件開發(fā)工具STD和ADS,從而保證了MCU軟件開發(fā)工具的一致性。通過上述的工作,使嵌入式系統(tǒng)開發(fā)逐漸統(tǒng)一到相同MCU內(nèi)核和相同的軟件開發(fā)工具上來,保證了MCU的升級換代不受MCU內(nèi)核的困擾,為嵌入式系統(tǒng)走出“不斷地學(xué)習(xí)新內(nèi)核MCU、不斷地放棄老內(nèi)核MCU”的怪圈創(chuàng)造了條件。
ARM公司在MCU產(chǎn)業(yè)鏈源頭的創(chuàng)新,使基于ARM核的MCU型號迅速增加,以滿足不用應(yīng)用領(lǐng)域的需求。在性能上,基于ARM核的MCU完全超過目前4位、8位、16位和部分32位MCU的性能;在價格上,基于ARM核MCU的價格從5元以下開始,一直延伸到數(shù)百元,完全覆蓋了同時期的4位、8位和16位MCU的價格范疇。性能和價格的優(yōu)勢使基于ARM核MCU一統(tǒng)天下的局面開始形成。
軟件之痛 嵌入式軟件開發(fā)實力比PC弱
嵌入式系統(tǒng)的軟件開發(fā)行業(yè)的整體實力卻比PC行業(yè)弱很多,這是因為開發(fā)體系缺乏、開發(fā)工具缺乏、軟件開發(fā)要求低、開發(fā)人員不適應(yīng)嵌入式系統(tǒng)之變。
直到2000年,MCU的性能還不能令人滿意,業(yè)界廣泛應(yīng)用的MCU,其運行速度低于10MIPS,存儲器和外設(shè)都很少,許多應(yīng)用需要外擴存儲器和外設(shè)。當(dāng)時的嵌入式系統(tǒng)開發(fā)過程,首先最重要的工作是擴展存儲器和外設(shè),其次是編寫MCU與擴展外設(shè)之間的驅(qū)動程序,最后才是為特定應(yīng)用服務(wù)的軟件開發(fā)。因MCU速度低,擴展外設(shè)的驅(qū)動程序占用了不少MCU運行時間,留給特定應(yīng)用程序運行的資源很少,所以特定應(yīng)用服務(wù)的軟件很簡單。因此,當(dāng)時嵌入系統(tǒng)開發(fā)是以硬件及其與硬件直接相關(guān)的軟件開發(fā)為主。
基于ARM核MCU的出現(xiàn),即使不到5元的32位MCU,其運行速度超過40MIPS,而且還集成了豐富的存儲器和各種外設(shè),使MCU不擴展外設(shè)也能滿足大部分需求,從而簡化了硬件開發(fā)工作。ADS、MDK-ARM和IAR Embedded Workbench for ARM軟件開發(fā)工具的不斷完善,確保了嵌入式軟件開發(fā)工具的一致性和連續(xù)性;CMSIS標(biāo)準(zhǔn)庫的推出,使嵌入式軟件外設(shè)驅(qū)動的標(biāo)準(zhǔn)化,增強了嵌入式系統(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)域、人機介面領(lǐng)域的專業(yè)知識。除此之外,它還要求具備較高的軟件架構(gòu)和實時任務(wù)調(diào)度能力。以上表明嵌入式系統(tǒng)對軟件開發(fā)人員的要求并不比PC對軟件開發(fā)人員的要求低,但實際上嵌入式系統(tǒng)的軟件開發(fā)行業(yè)的整體實力卻比PC行業(yè)低很多,這是因為:
1.開發(fā)體系缺乏。PC自Intel和微軟在硬件和操作系統(tǒng)上統(tǒng)一后,PC軟件作為軟件產(chǎn)業(yè)中最大一個分支,從方法、理論、實施到維護升級等方面入手,建立了完整的軟件開發(fā)體系、規(guī)范了軟件產(chǎn)業(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ā)過程中,從需求分析、軟件架構(gòu)、系統(tǒng)建模、代碼生成、代碼分析、人機介面、網(wǎng)絡(luò)通信和任務(wù)調(diào)度都有相應(yīng)的工具支撐,如Windows系統(tǒng)就是PC上集任務(wù)調(diào)度、人機界面和網(wǎng)絡(luò)通信一體的標(biāo)準(zhǔn)化平臺和工具。在嵌入式系統(tǒng)中,受其資源的限制,妨礙了嵌入式軟件開發(fā)工具的產(chǎn)生和發(fā)展,開發(fā)工具的缺乏使嵌入式系統(tǒng)軟件的開發(fā)難度更加困難。[!--empirenews.page--]
3.軟件開發(fā)要求低。嵌入式系統(tǒng)開發(fā)的30多年歷程中,主要工作集中在硬件設(shè)計及硬件驅(qū)動程序上,而真正用于增強用戶體驗、服務(wù)于行業(yè)的軟件無論是工作量還是代碼量都很少,因此對軟件體系的建立和工具的需求要求不明顯。
4.開發(fā)人員不適應(yīng)嵌入式系統(tǒng)之變。MCU廠家的諸侯割據(jù),導(dǎo)致嵌入式系統(tǒng)開發(fā)長期奔波于“重造車輪”的低水平重復(fù);在職業(yè)教育的源頭上,基本上沒有一本專業(yè)的嵌入式軟件開發(fā)的教科書,更談不上設(shè)置專門學(xué)科。目前除了消費電子領(lǐng)域,嵌入式系統(tǒng)軟件開發(fā)人員通常來自電子、電氣和機械等專業(yè),他們基本上沒有受過系統(tǒng)的軟件開發(fā)教育,所以絕大多數(shù)嵌入式軟件開發(fā)人員的認(rèn)識還停止在會不會C語言編程這樣低層次上。完全不適應(yīng)嵌入式軟件從過去以實現(xiàn)為主的開發(fā)模式轉(zhuǎn)化到以服務(wù)和維護為主的開發(fā)模式。
模式之變 重新定義MCU將顛覆傳統(tǒng)應(yīng)用模式
如果定義MCU是一種低價格、低速度且覆蓋面很寬的可編程數(shù)?;旌托屯ㄓ?font class=f14>集成電路,會產(chǎn)生一種新的電子產(chǎn)品開發(fā)模式,這個模式將淡化嵌入式系統(tǒng)概念,顛覆傳統(tǒng)MCU應(yīng)用模式。
曾經(jīng)MCU是嵌入式系統(tǒng)中最貴的元件,1990年以前,一顆2MIPS速度、128 byte RAM、無ROM的8位MCU MCS8031的價格超過當(dāng)時一個才出校門本科畢業(yè)生的月工資,由于價格高且可編程,不僅一個嵌入式系統(tǒng)只有一個MCU,而且為了更好地發(fā)揮MCU的作用,還為它開發(fā)了一系列專用外設(shè)器件,如:可編程輸入/輸出芯片8255,可編程定時/計數(shù)器8253/8254,可編程串行接口芯片8251……,甚至價格比MCU還高的CPLD和FPGA也是為MCU服務(wù)的,所以將MCU定義為 “中央處理器”是名副其實的,因為中央只能有一個,其他芯片都以MCU為中心。
當(dāng)一顆32位MCU價格還不到北京市最低工資標(biāo)準(zhǔn)的半小時工資時,如果我們再在一顆廉價的電子元件周圍配置幾顆價格與它相近或者價格比它更高的芯片為它服務(wù)時,我們就應(yīng)該反思這種模式的正確與否。根據(jù)目前MCU的現(xiàn)狀,筆者將它歸納為以下特點:
一是MCU是普通的集成電路,它不再是中央處理器;二是MCU是可編程的集成電路,它和CPLD和FPGA一樣需要二次開發(fā);三是MCU是低速可編程集成電路,MCU以串行運算為主,CPLD和FPGA以并行運算為主,所以MCU的運算速度比CPLD和FPGA要低;四是MCU是數(shù)?;旌托图呻娐?,MCU不僅具有DI/DO、PWM、通信和計數(shù)等數(shù)字外設(shè),而且還含有比較、A/D等模擬外設(shè);五是MCU是通用集成電路,除了速度的限制外,它不僅能實現(xiàn)市場上所有通用集成電路的邏輯運算和數(shù)學(xué)運算功能外,還能實現(xiàn)它們不能實現(xiàn)的各種復(fù)雜科學(xué)運算;六是MCU的市場覆蓋面很寬,它的價格從5元人民幣以下開始,一直延伸到數(shù)百元人民幣,可以滿足不同應(yīng)用領(lǐng)域的需求。
基于以上方面,我們是否可以這樣重新定義MCU:MCU是一種低價格、低速度且覆蓋面很寬的可編程數(shù)?;旌托屯ㄓ眉呻娐?。如果我們認(rèn)同上述定義,會產(chǎn)生一種新的電子產(chǎn)品開發(fā)模式,這個模式將淡化嵌入式系統(tǒng)概念,顛覆傳統(tǒng)MCU應(yīng)用模式,徹底改變傳統(tǒng)電子產(chǎn)品元件體系和開發(fā)模式。
在傳統(tǒng)的電子產(chǎn)品元件體系和開發(fā)模式中,電子產(chǎn)品通常由多個實現(xiàn)數(shù)字邏輯運算的數(shù)字集成電路、MCU和其他電子元件組成。其開發(fā)模式是:首先是從海量的數(shù)字集成電路和其電子元件中選出滿足系統(tǒng)需求的電子元件,來完成電子產(chǎn)品的硬件開發(fā),接著進行軟件開發(fā),但其難度非常高。在筆者從業(yè)的20多年里,因元件選型不適當(dāng),導(dǎo)致開發(fā)不能順利進行,產(chǎn)品性價比低,產(chǎn)品生命周期短,甚至產(chǎn)品失敗的例子舉不勝舉。
新的電子產(chǎn)品元件體系和開發(fā)模式是:電子產(chǎn)品由多個MCU取代了常規(guī)的數(shù)字集成電路和部分模擬電路,每個MCU通過軟件進行二次定制以實現(xiàn)系統(tǒng)中不同的邏輯運算和數(shù)學(xué)運算,MCU之間通過通信方式進行信息交互。
與傳統(tǒng)電子產(chǎn)品元件體系和開發(fā)模式相比,新模式一是減少了電子產(chǎn)品的元件種類和數(shù)量,減少了開發(fā)過程受元件的約束,激發(fā)了開發(fā)人員的創(chuàng)新激情。二是改變了嵌入式系統(tǒng)的開發(fā)模式,由于在同一產(chǎn)品中,MCU由一個變?yōu)槎鄠€,軟件自然由一個大軟件分解為多個獨立的小軟件,增強了嵌入式軟件開發(fā)人員的專業(yè)性,降低了入門門檻。
筆者在開發(fā)自動變速器控制器時,將自動變速器中的換檔決策控制和換檔過程控制分別由兩個MCU實施,同樣降低了兩個不同專業(yè)背景在同一控制器中的耦合,使不同的開發(fā)人員各司其責(zé),即保證了開發(fā)方向朝各個專業(yè)的縱向發(fā)展,又提高了開發(fā)進度。
多年的實踐經(jīng)驗證明:在嵌入式系統(tǒng)采用多MCU模式是規(guī)避嵌入式系統(tǒng)軟件風(fēng)險(軟件開發(fā)、維護和更新過程風(fēng)險)的一項十分有效的措施,其難點在于根據(jù)開發(fā)團隊的具體情況和服務(wù)對象特性進行多MCU任務(wù)分解,及其MCU之間信息交互模型的建立。
智造之源 基于MCU的ASIC為智造創(chuàng)造條件
嵌入式系統(tǒng)無處不在,投入資金低和技術(shù)門檻低的MCU模式掃清了ASIC市場、資金和技術(shù)障礙,專業(yè)人員只要深入就能找到將知識固化到硅片之中的機會?;贛CU的ASIC模式為全民智造創(chuàng)造了條件。
嵌入式系統(tǒng)是服務(wù)于特定對象的,服務(wù)對象對嵌入式系統(tǒng)的選擇性很小,甚至沒有選擇。要讓嵌入式開發(fā)人員掌握服務(wù)特定對象的專業(yè)知識,或者是具有服務(wù)特定對象專業(yè)知識的人掌握嵌入式知識,確實不是一件容易的事。
如果不考慮嵌入式系統(tǒng)的接口、通信、人機交互、任務(wù)調(diào)度等專業(yè)功能,MCU只用來完成數(shù)據(jù)的輸入、輸出和運算,此時在MCU上進行數(shù)據(jù)運算與在PC上類似,這就能把在PC上運行的專業(yè)程序移植到MCU上運行。嵌入式系統(tǒng)開發(fā)人員只需向這顆MCU輸入和輸出數(shù)據(jù)就能開發(fā)出專業(yè)性強的系統(tǒng)。
如果MCU只運行專業(yè)程序,它就是“一種為專門目的而設(shè)計”的集成電路,與ASIC定義相符合。目前ASIC主要有兩種類型,一種是全定制,它是在半導(dǎo)體廠完成制造。另一種是基于CPLD和FPGA的半定制,由用戶編程實現(xiàn)功能定制。
利用MCU作為ASIC(稱它為“山寨”ASIC也行)的半定制基礎(chǔ)元件,投資數(shù)百元,非電子信息類的專業(yè)人員也能憑將自身的專業(yè)知識固化在MCU之中,以實現(xiàn)知識共享。嵌入式系統(tǒng)無處不在,投入資金低和技術(shù)門檻低的MCU模式根除了ASIC市場、資金和技術(shù)障礙,具備某方面知識的專業(yè)人員只要深入就能尋找到將知識固化到硅片之中的機會?;?strong>MCU的ASIC模式為全民智造創(chuàng)造了條件。[!--empirenews.page--]