過去數(shù)年,關(guān)于單內(nèi)核平臺標(biāo)準(zhǔn)化的討論不計其數(shù),目的是讓設(shè)計從一家MCU供貨商的產(chǎn)品移植到另一家的產(chǎn)品變得容易。有趣的是,所有討論均從未涉及外設(shè)。然而,外設(shè)恰恰就是將應(yīng)用從一家MCU供貨商移植至另一家的真正核心。
一切歸于外設(shè)
工程師在著手新設(shè)計之前,通常會先審視一下功能需求。希望系統(tǒng)做什么?用戶怎樣與之交互? 諸如此類的一些問題。據(jù)此決定要采用什么電路以及控制這些電路所需的MCU片內(nèi)外設(shè)。例如,工業(yè)級的HMI(人機(jī)界面)設(shè)備將需要支持LCD、按鈕和/或觸摸屏,與機(jī)器的通信、LED,以及揚聲器/蜂鳴器等。所有這些功能將需要MCU上的某些外設(shè),如:CAN控制器用于通信、ADC用于觸摸屏及PWM定時器用于蜂鳴器等。外設(shè)具有的功能越多,所需的外部電路就越少。在某些情況下,還會減少需要編寫的代碼量。例如,使用特殊的蜂鳴器模式比為達(dá)到同樣目的而不得不設(shè)置PWM要簡單得多。
內(nèi)核需求通常是顯而易見的。雖然內(nèi)核很重要,但對于設(shè)計人員來說,關(guān)系不大。事實上,內(nèi)核必須滿足兩個基本條件。速度是否足以執(zhí)行創(chuàng)建最佳用戶體檢所需的所有軟件任務(wù)? 是否能高效執(zhí)行所有任務(wù)?只要滿足這兩點性能要求, 內(nèi)核的類型無關(guān)緊要。
當(dāng)然,內(nèi)核還與固件/軟件相關(guān)。既有代碼是工程師必須考慮的一個問題。使用現(xiàn)成代碼能節(jié)省多少工作量?這個問題并非與內(nèi)核直接相關(guān),而與外設(shè)有關(guān)。因為大多數(shù)32位MCU代碼用C語言編寫,因此可重新編譯至任何內(nèi)核。每家 MCU生產(chǎn)商的外設(shè)特性及編程模型均特定于其自家的產(chǎn)品,而與所采用的內(nèi)核無關(guān),這便是代碼難以移植的原因所在。
固件庫
為了給工程師提供便利,每家MCU生產(chǎn)商均提供一個固件庫,其中包含設(shè)置和使用各種MCU片內(nèi)外設(shè)的代碼。由于不同廠家實現(xiàn)其外設(shè)的方式各不相同,甚至具有不同的特性,將應(yīng)用程序從一種MCU移植至另一種MCU并非輕而易舉。
ARM一直以來都在為簡化應(yīng)用程序的移植努力著,它定義了一種稱為Cortex?單片機(jī)軟件接口標(biāo)準(zhǔn)(CMSIS)的固件抽象層標(biāo)準(zhǔn)。采用Cortex-M系列內(nèi)核的MCU生產(chǎn)商的固件庫均已采納了這一標(biāo)準(zhǔn)。遺憾的是,這個標(biāo)準(zhǔn)仍不能克服移植外設(shè)遇到的困難,對于變量或函數(shù)也未制定標(biāo)準(zhǔn)的命名約定。因此,將代碼從一種固件庫移植到另一種固件庫沒有捷徑,必須做大量工作。事實上,對于在ARM MCU供貨商之間移植應(yīng)用程序,該標(biāo)準(zhǔn)幾乎沒有什么幫助。畢竟,對于MCU生產(chǎn)商來說,將應(yīng)用程序輕而易舉移植到其他供應(yīng)商的產(chǎn)品一點好處也沒有。
設(shè)計時考慮可移植性
由于MCU生產(chǎn)商不愿簡化其產(chǎn)品到其他供應(yīng)商產(chǎn)品的可移植性,因此只能由設(shè)計工程師來使設(shè)計具有可移植性。通過實現(xiàn)一個抽象層,由該層創(chuàng)建硬件(即MCU外設(shè))和應(yīng)用程序代碼之間的標(biāo)準(zhǔn)編程接口即可實現(xiàn)這一點。至少可用以下兩種方法:
開發(fā)一個中介層或包裝器,從而實現(xiàn)在MCU生產(chǎn)商外設(shè)庫和您的代碼之間轉(zhuǎn)換。這可能是最快速高效的解決方案,但會在命令和數(shù)據(jù)路徑中添加較多代碼。
定義一個標(biāo)準(zhǔn)的函數(shù)和變量命名機(jī)制,并將其應(yīng)用于所有外設(shè)庫。不必添加代碼,但卻很費時,具體取決于外設(shè)用法的復(fù)雜度。
實現(xiàn)移植性是個大工程,貫穿開發(fā)過程的始終。除了固件/軟件兼容性,還有引腳兼容的問題。將應(yīng)用從一個MCU供應(yīng)商的產(chǎn)品移植到另一個往往要重新布置PCB,而且可能還需要不同的外部器件,比如電容和穩(wěn)壓器。
總結(jié)
無論使用何種內(nèi)核,在32位MCU供應(yīng)商的產(chǎn)品間移植均相當(dāng)復(fù)雜。一切都取決于外設(shè)和相關(guān)的固件庫。每家MCU生產(chǎn)商均提供固件庫和應(yīng)用筆記,盡力使設(shè)計過程盡可能地簡單。他們也將努力減輕其器件在其系列間移植的工作。但是他們卻不愿意使移植到競爭對手的解決方案變得過于容易。這是設(shè)計工程師要解決的問題,應(yīng)該在每個項目開始時評估這樣做的成本和好處。
審核編輯:彭菁
-
電路
+關(guān)注
關(guān)注
173文章
6014瀏覽量
174178 -
mcu
+關(guān)注
關(guān)注
146文章
17734瀏覽量
358560 -
控制器
+關(guān)注
關(guān)注
114文章
16854瀏覽量
182357 -
代碼
+關(guān)注
關(guān)注
30文章
4882瀏覽量
70050
發(fā)布評論請先 登錄
芯科科技推出新的8位MCU系列產(chǎn)品,擴(kuò)展其強(qiáng)大的MCU平臺

32位MCU平臺間的移植
mcu和編譯器間的移植
如何在AT32F系列MCU上使用FreeRTOS
VSF MCU的基本架構(gòu)移植技巧淺析
【國產(chǎn)MCU移植】移植RT-Thread到國產(chǎn)芯片HC32F460PETB

【國產(chǎn)MCU移植】移植RT-Thread到國產(chǎn)芯片F(xiàn)M33LC026

從8位AVR到32位SAM D21 MCU的應(yīng)用程序移植

從8位PIC18F到32位SAM D21 MCU的應(yīng)用程序移植

STM8S和STM32 MCU:一致的8/32位產(chǎn)品線實現(xiàn)輕松移植

評論