為什么拓展MCU的潛能需要新的思維方式
恩智浦 Brendon Slade
微控制器(MCU)已經(jīng)歷了無(wú)數(shù)次技術(shù)進(jìn)步,從硬件加密到復(fù)雜的圖形功能,然而在此期間,軟件開(kāi)發(fā)一直難以跟上這種步伐。這篇博文介紹了工程師在MCU平臺(tái)上進(jìn)行軟件開(kāi)發(fā)所面臨的挑戰(zhàn)、恩智浦計(jì)劃如何應(yīng)對(duì)這些挑戰(zhàn),以及為什么選擇能力是未來(lái)MCU必不可少的要素。
硬件能力不斷更新,軟件開(kāi)發(fā)停滯不前
與所有電子器件一樣,自1970年代首批MCU問(wèn)世以來(lái),微控制器已經(jīng)歷了巨大的變化。首款真正具有商業(yè)價(jià)值的微處理器(如無(wú)所不在的8051)基于8位技術(shù),并整合了幾個(gè)計(jì)時(shí)器、UART端口、ADC,以及DAC(少數(shù)產(chǎn)品)。這些器件非常簡(jiǎn)單,易于掌握,指令集非常小,可以輕松地使用低層語(yǔ)言,如匯編語(yǔ)言。
快進(jìn)到2023年,MCU經(jīng)歷了巨大的變化,內(nèi)存更大、CPU更快,擁有多種外設(shè),從高級(jí)電機(jī)控制到機(jī)器學(xué)習(xí)(ML)加速器。然而,MCU最重要的一個(gè)變化是其內(nèi)部架構(gòu)的復(fù)雜性增加了,如果沒(méi)有驅(qū)動(dòng)程序提供對(duì)底層硬件的抽象,從零開(kāi)始為現(xiàn)代MCU編寫(xiě)代碼就非常具有挑戰(zhàn)性。
為了幫助工程師對(duì)現(xiàn)代MCU進(jìn)行編碼,我們提供廣泛的軟件解決方案和工具(包括驅(qū)動(dòng)程序和高級(jí)配置工具),用戶(hù)無(wú)需進(jìn)行寄存器級(jí)編程。雖然這些工具對(duì)于項(xiàng)目實(shí)施至關(guān)重要,但用于MCU編碼的軟件基礎(chǔ)架構(gòu)并未達(dá)到與硬件相同的高度,導(dǎo)致軟件和硬件之間存在巨大的技術(shù)鴻溝。
了解更多。恩智浦開(kāi)啟MCUXpresso生產(chǎn)力新篇章,賦予開(kāi)發(fā)人員更豐富的開(kāi)發(fā)體驗(yàn)
MCU面臨哪些軟件挑戰(zhàn)?
無(wú)論使用哪個(gè)平臺(tái),MCU的軟件開(kāi)發(fā)都面臨著諸多挑戰(zhàn),包括平臺(tái)鎖定、可移植性有限、碎片化、缺乏開(kāi)源支持、開(kāi)發(fā)人員自由受限和缺少標(biāo)準(zhǔn)化等。
首先,大多數(shù)MCU平臺(tái)通常會(huì)將工程師鎖定在固定平臺(tái)上,因?yàn)橐獙⒋a移植到其他平臺(tái)、其他架構(gòu)或供應(yīng)商會(huì)非常耗時(shí),即使平臺(tái)使用了相同的處理器內(nèi)核(如Arm? Cortex-M?)。對(duì)于不使用MCU或其外設(shè)全部功能的簡(jiǎn)單項(xiàng)目而言,這可能是小問(wèn)題,但對(duì)于因硬件需求變化而需要切換到其他制造商的項(xiàng)目來(lái)說(shuō),則可能會(huì)帶來(lái)災(zāi)難性的后果。當(dāng)OEM擁有各種價(jià)格和功率需求不同的產(chǎn)品時(shí),不可避免地要使用多種不同的MCU,因此維護(hù)多代碼基礎(chǔ)的成本可能非常高。
另一個(gè)可能影響工程師的軟件挑戰(zhàn)是IDE差別迥異。工程師通常使用不同制造商的眾多設(shè)備,因?yàn)槊總€(gè)設(shè)備只適用于特定的應(yīng)用。但對(duì)每一個(gè)平臺(tái),工程師都需要了解IDE的工作原理、工具位于何處,以及如何讓項(xiàng)目運(yùn)行。因此,工程師要跟上每個(gè)開(kāi)發(fā)環(huán)境的新變化可能需要耗費(fèi)大量的時(shí)間。
此外,MCU供應(yīng)商很少支持一個(gè)以上免費(fèi)的IDE平臺(tái),并且大部分都基于Eclipse,Eclipse被視為軟件開(kāi)發(fā)行業(yè)的主力。Eclipse作為主流IDE,供應(yīng)商可高效定制,便于使用,但由于它采用基于Java的內(nèi)核,對(duì)CPU和內(nèi)存資源需求要求非常高。相比之下,微軟的Visual Studio Code(VS Code)非常輕量化和快速,因此許多工程師選擇使用VS Code開(kāi)發(fā)環(huán)境。
IAR和Arm Keil是高級(jí)開(kāi)發(fā)工具領(lǐng)域久負(fù)盛名的專(zhuān)家,他們提供的IDE具有自己的專(zhuān)業(yè)調(diào)試功能,以及高性能優(yōu)化編譯器和功能安全認(rèn)證。恩智浦與這兩家白金級(jí)合作伙伴密切合作,通過(guò)MCUXpresso SDK軟件包為他們的工具提供開(kāi)箱即用的支持。甚至這些開(kāi)發(fā)工具巨擘也承認(rèn)Visual Studio Code廣受青睞且具有較高的靈活性,因?yàn)樗С侄喾N編譯器,用戶(hù)可借助該工具采用混合方法進(jìn)行編輯和構(gòu)建,并結(jié)合開(kāi)發(fā)工具領(lǐng)軍企業(yè)的專(zhuān)業(yè)調(diào)試經(jīng)驗(yàn)。
MCUXpresso for Visual Studio Code介紹
恩智浦認(rèn)識(shí)到Visual Studio Code對(duì)于現(xiàn)代開(kāi)發(fā)人員非常重要,現(xiàn)已推出MCUXpresso for VS Code,該擴(kuò)展產(chǎn)品為MCUXpresso軟件驅(qū)動(dòng)程序和中間件提供全面支持,使開(kāi)發(fā)人員能夠使用主流IDE進(jìn)行快速響應(yīng)的編碼。除了比較傳統(tǒng)的MCUXpresso SDK流程外,這款新產(chǎn)品為使用開(kāi)源Zephyr RTOS的開(kāi)發(fā)人員提供全面支持,與現(xiàn)有解決方案相比,提升了用戶(hù)體驗(yàn)。

MCUXpresso for Visual Studio Code功能框圖
MCUXpresso硬件抽象層
為了方便工程師在不同MCU平臺(tái)之間移植代碼,恩智浦即將推出新的硬件抽象層(HAL),為開(kāi)發(fā)人員提供一組適用于i.MX RT、LPC5500和MCX MCU的API。隨著新HAL的推出,恩智浦MCU代碼可以完全移植到廣泛的產(chǎn)品組合中,用戶(hù)可在眾多功率/性能之間進(jìn)行選擇,不存在代碼移植障礙。
盡管HAL的推出本身并不新鮮,但它基于與其他平臺(tái)已使用的開(kāi)源代碼API定義,體現(xiàn)了恩智浦致力于為用戶(hù)提供選擇能力的承諾。通過(guò)這種方法,工程師不僅能夠在不同的恩智浦器件中自由遷移,甚至還可以將他們的代碼傳輸給其他芯片供應(yīng)商。這種靈活性為設(shè)計(jì)人員提供了極大的自由,他們能夠編寫(xiě)不鎖定在某個(gè)硬件平臺(tái)的MCU代碼,從而使固件設(shè)計(jì)更貼近不受設(shè)備局限的未來(lái)。
恩智浦和Open-CMSIS-Pack
在MCU解決方案中使用中間件變得日益重要。由于MCU設(shè)計(jì)和應(yīng)用要求的復(fù)雜性不斷增加,工程師開(kāi)始轉(zhuǎn)向能夠提供高級(jí)功能的軟件庫(kù),例如圖形處理、網(wǎng)絡(luò)協(xié)議棧、USB設(shè)備枚舉、音頻功能,甚至ML/AI。在這些情況下,試圖將其它公司提供的第三方中間件納入項(xiàng)目會(huì)非常具有挑戰(zhàn)性,因?yàn)槟硞€(gè)供應(yīng)商的軟件在形式和風(fēng)格方面可能與其它供應(yīng)商的軟件不同。因此,可能需要手動(dòng)執(zhí)行幾個(gè)步驟,將外部軟件重新構(gòu)建到所需的文件夾并集成編譯命令,并且在供應(yīng)商每次交付新庫(kù)時(shí)都會(huì)出現(xiàn)這些問(wèn)題。
為了幫助工程師將中間件納入其項(xiàng)目中,MCUXpresso生態(tài)系統(tǒng)中的所有IDE現(xiàn)在都支持Open-CMSIS-Pack。這些完整的軟件產(chǎn)品使用特定的標(biāo)準(zhǔn)和形式進(jìn)行封裝,使IDE能夠自動(dòng)識(shí)別內(nèi)容、將所需的文件添加到項(xiàng)目中、配置Build工具,并提供API訪問(wèn)。由于依賴(lài)性已整合到Open-CMSIS-Pack中,工程師不必花費(fèi)數(shù)小時(shí)從不同的位置下載單獨(dú)的文件,也不需要檢查下載的版本是否兼容。
為什么選擇能力會(huì)決定MCU設(shè)計(jì)的未來(lái)
計(jì)算機(jī)行業(yè)朝著統(tǒng)一和開(kāi)放標(biāo)準(zhǔn)發(fā)展,同樣,MCU生態(tài)系統(tǒng)也可以效仿,從而打造新環(huán)境,讓固件工程師編寫(xiě)代碼時(shí)不受硬件的限制。這并不意味著硬件將變得不重要;相反,硬件將繼續(xù)在產(chǎn)品設(shè)計(jì)中發(fā)揮重要作用。變化在于,創(chuàng)建固件的用戶(hù)不必再擔(dān)心代碼可移植性、哪些設(shè)備在執(zhí)行他們的軟件以及軟件如何與硬件對(duì)接等問(wèn)題。
MCU采用統(tǒng)一的行業(yè)標(biāo)準(zhǔn),也將推動(dòng)開(kāi)源軟件的迅速普及。如果MCU軟件具有較高的可移植性,用戶(hù)可輕松共享MCU代碼,因?yàn)樗m用于更多的平臺(tái)。這有助于加速開(kāi)源項(xiàng)目,因?yàn)榕c不同芯片供應(yīng)商合作的工程師都可以使用自己的原生平臺(tái)共同開(kāi)發(fā)互惠互利的軟件解決方案。
在MCU之間引入HAL開(kāi)放標(biāo)準(zhǔn)也有助于鼓勵(lì)新制造商采用這些標(biāo)準(zhǔn),因?yàn)樗麄兊脑O(shè)備將與大多數(shù)(如果不是全部)現(xiàn)有軟件解決方案兼容。因此,新的MCU可以快速普及,從而提高工程師使用先進(jìn)解決方案的速度,而無(wú)需重新在軟件資源方面投入大量資金。
這種選擇能力最終將緩解MCU行業(yè)的碎片化問(wèn)題,這難道不是當(dāng)今開(kāi)發(fā)人員所希望的嗎?
作者
Brendon Slade
恩智浦通用MCU生態(tài)合作體系總監(jiān)
Brendon Slade是通用MCU生態(tài)合作體系團(tuán)隊(duì)總監(jiān)。他在DSP和微控制器行業(yè)擁有超過(guò)25年的經(jīng)驗(yàn),曾在工業(yè)、移動(dòng)、汽車(chē)、語(yǔ)音通信和音頻處理市場(chǎng)方面擔(dān)任設(shè)計(jì)、應(yīng)用和技術(shù)營(yíng)銷(xiāo)職務(wù)。他的團(tuán)隊(duì)專(zhuān)注于支持恩智浦基于Arm? Cortex?-M的MCU,與合作伙伴和恩智浦的內(nèi)部軟件團(tuán)隊(duì)合作,定義并交付互補(bǔ)的開(kāi)發(fā)工具和軟件解決方案。他畢業(yè)于英國(guó)普利茅斯大學(xué)(University of Plymouth),現(xiàn)居加利福尼亞州桑尼維爾,擁有調(diào)試技術(shù)專(zhuān)利。
評(píng)論