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