<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在32位MCU平臺間移植

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-08-25 16:25 ? 次閱讀

過去數年,關于單內核平臺標準化的討論不計其數,目的是讓設計從一家MCU供貨商的產品移植到另一家的產品變得容易。有趣的是,所有討論均從未涉及外設。然而,外設恰恰就是將應用從一家MCU供貨商移植至另一家的真正核心。

一切歸于外設

工程師在著手新設計之前,通常會先審視一下功能需求。希望系統做什么?用戶怎樣與之交互? 諸如此類的一些問題。據此決定要采用什么電路以及控制這些電路所需的MCU片內外設。例如,工業級的HMI(人機界面)設備將需要支持LCD、按鈕和/或觸摸屏,與機器的通信、LED,以及揚聲器/蜂鳴器等。所有這些功能將需要MCU上的某些外設,如:CAN控制器用于通信、ADC用于觸摸屏及PWM定時器用于蜂鳴器等。外設具有的功能越多,所需的外部電路就越少。在某些情況下,還會減少需要編寫的代碼量。例如,使用特殊的蜂鳴器模式比為達到同樣目的而不得不設置PWM要簡單得多。

內核需求通常是顯而易見的。雖然內核很重要,但對于設計人員來說,關系不大。事實上,內核必須滿足兩個基本條件。速度是否足以執行創建最佳用戶體檢所需的所有軟件任務? 是否能高效執行所有任務?只要滿足這兩點性能要求, 內核的類型無關緊要。

當然,內核還與固件/軟件相關。既有代碼是工程師必須考慮的一個問題。使用現成代碼能節省多少工作量?這個問題并非與內核直接相關,而與外設有關。因為大多數32位MCU代碼用C語言編寫,因此可重新編譯至任何內核。每家 MCU生產商的外設特性及編程模型均特定于其自家的產品,而與所采用的內核無關,這便是代碼難以移植的原因所在。

固件庫

為了給工程師提供便利,每家MCU生產商均提供一個固件庫,其中包含設置和使用各種MCU片內外設的代碼。由于不同廠家實現其外設的方式各不相同,甚至具有不同的特性,將應用程序從一種MCU移植至另一種MCU并非輕而易舉。

ARM一直以來都在為簡化應用程序的移植努力著,它定義了一種稱為Cortex?單片機軟件接口標準(CMSIS)的固件抽象層標準。采用Cortex-M系列內核的MCU生產商的固件庫均已采納了這一標準。遺憾的是,這個標準仍不能克服移植外設遇到的困難,對于變量或函數也未制定標準的命名約定。因此,將代碼從一種固件庫移植到另一種固件庫沒有捷徑,必須做大量工作。事實上,對于在ARM MCU供貨商之間移植應用程序,該標準幾乎沒有什么幫助。畢竟,對于MCU生產商來說,將應用程序輕而易舉移植到其他供應商的產品一點好處也沒有。

設計時考慮可移植性

由于MCU生產商不愿簡化其產品到其他供應商產品的可移植性,因此只能由設計工程師來使設計具有可移植性。通過實現一個抽象層,由該層創建硬件(即MCU外設)和應用程序代碼之間的標準編程接口即可實現這一點。至少可用以下兩種方法:

開發一個中介層或包裝器,從而實現在MCU生產商外設庫和您的代碼之間轉換。這可能是最快速高效的解決方案,但會在命令和數據路徑中添加較多代碼。

定義一個標準的函數和變量命名機制,并將其應用于所有外設庫。不必添加代碼,但卻很費時,具體取決于外設用法的復雜度。

實現移植性是個大工程,貫穿開發過程的始終。除了固件/軟件兼容性,還有引腳兼容的問題。將應用從一個MCU供應商的產品移植到另一個往往要重新布置PCB,而且可能還需要不同的外部器件,比如電容和穩壓器。

總結

無論使用何種內核,在32位MCU供應商的產品間移植均相當復雜。一切都取決于外設和相關的固件庫。每家MCU生產商均提供固件庫和應用筆記,盡力使設計過程盡可能地簡單。他們也將努力減輕其器件在其系列間移植的工作。但是他們卻不愿意使移植到競爭對手的解決方案變得過于容易。這是設計工程師要解決的問題,應該在每個項目開始時評估這樣做的成本和好處。
審核編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電路
    +關注

    關注

    170

    文章

    5485

    瀏覽量

    169633
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16024

    瀏覽量

    343727
  • 控制器
    +關注

    關注

    112

    文章

    15245

    瀏覽量

    171264
  • 代碼
    +關注

    關注

    30

    文章

    4557

    瀏覽量

    66835
收藏 人收藏

    評論

    相關推薦

    32MCU平臺移植

    過去數年,關于單內核平臺標準化的討論不計其數,目的是讓設計從一家MCU供貨商的產品移植到另一家的產品變得容易。有趣的是,所有討論均從未涉及外設。然而,外設恰恰就是將應用從一家MCU供貨
    發表于 07-02 08:17

    mcu和編譯器移植

    1、如果可以的話少用庫函數,便于不同的mcu和編譯器移植 2、選擇合適的算法和數據結構 應該熟悉算法語言,知道各種算法的優缺點,具體資料請參見相應的參考資料,有很多計算機書籍上都有介紹。將比
    發表于 11-23 08:33

    將基于rtthread的項目移植到其他平臺的經驗分享

    和大家分享下將基于rtthread的項目移植到其他平臺的經驗。背景最近做了一個物聯網項目移植。原先的項目使用的硬件平臺為stm32f401+sim800c(
    發表于 02-17 07:57

    如何移植RT-thread官方的系統源碼到STM32F10x特定的MCU平臺中呢

    如何移植RT-thread官方的系統源碼到STM32F10x特定的MCU平臺中呢?求大神解答
    發表于 08-11 09:55

    如何移植RT-thread官方的系統源碼到STM32F10x特定的MCU平臺中?

    如何移植RT-thread官方的系統源碼到STM32F10x特定的MCU平臺中?
    發表于 05-16 10:31

    何在AT32F系列MCU上使用FreeRTOS

    本指導手冊描述了如何在AT32F系列MCU上使用FreeRTOS。FreeRTOS是一款開源的嵌入式實時操作系統,目前在各種嵌入式應用中應用廣泛。本指導手冊包括FreeRTOS系統移植
    發表于 10-24 07:46

    STM32 系列MCU 不同型號的移植步驟解析

    STM32 系列MCU 不同型號的移植!
    的頭像 發表于 01-10 10:45 ?2.9w次閱讀
    STM32 系列<b class='flag-5'>MCU</b> 不同型號的<b class='flag-5'>移植</b>步驟解析

    VSF MCU的基本架構移植技巧淺析

    VSF的MCU移植包括2部分,1是基本構架,2是外設驅動移植。這里先講一下基本構架的移植。
    發表于 10-08 15:07 ?2700次閱讀

    SimpleLink SDK的可移植示例

    1.6 SimpleLink MCU平臺SDK代碼可移植
    的頭像 發表于 04-28 06:20 ?3231次閱讀
    SimpleLink SDK的可<b class='flag-5'>移植</b>示例

    梁克雷老師為 OpenHarmony 移植MCU芯片

    中科院軟件所智能軟件研究中心高級工程師梁克雷老師為OpenHarmony移植MCU芯片的經驗分享,以及移植 OpenHarmony 的技術路線介紹。
    發表于 10-29 16:48 ?114次下載
    梁克雷老師為 OpenHarmony <b class='flag-5'>移植</b><b class='flag-5'>MCU</b>芯片

    移植筆記——【MCU程序移植注意事項】

    前言:關于MCU之間的程序移植有很多細節需要關注,以下是做一些記錄,后續想到了注意點再來更。??移植處理總體來說可以分成兩類:第一類是非程序代碼操作的更改,主要是針對不同的MCU設備文
    發表于 10-26 13:20 ?9次下載
    <b class='flag-5'>移植</b>筆記——【<b class='flag-5'>MCU</b>程序<b class='flag-5'>移植</b>注意事項】

    【國產MCU移植】MM32F3270 EVBoard

    【國產MCU移植】MM32F3270 EVBoard
    發表于 12-03 17:21 ?5次下載
    【國產<b class='flag-5'>MCU</b><b class='flag-5'>移植</b>】MM32F3270 EVBoard

    何在機智云平臺創建智能產品

    前言:本文主要介紹如何在機智云平臺創建一個智能產品、定義功能數據點、生成MCU代碼包并附上修改好的代碼、生成APP代碼編譯附上參考代碼。
    的頭像 發表于 04-14 08:14 ?1568次閱讀

    AN023 如何在GD平臺移植Letter shell

    AN023 如何在GD平臺移植Letter shell
    發表于 02-27 18:25 ?1次下載
    AN023 如<b class='flag-5'>何在</b>GD<b class='flag-5'>平臺</b><b class='flag-5'>移植</b>Letter shell

    何在AT32 MCU上使用FPU功能

    何在AT32 MCU上使用FPU功能
    的頭像 發表于 11-01 17:18 ?3659次閱讀
    如<b class='flag-5'>何在</b>AT32 <b class='flag-5'>MCU</b>上使用FPU功能
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>