精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

基于Cortex-M的單片機之間能夠互相移植嗎

云深之無跡 ? 來源:云深之無跡 ? 作者:云深之無跡 ? 2022-07-06 16:17 ? 次閱讀

ARM宣布推出 Cortex 微控制器軟件接口標準 (Microcontroller Software Interface Standard,CMSIS)。他們聲稱,對于新器件的軟件開發項目或將現有軟件在不同芯片廠商的基于 Cortex-M 的單片機之間移植時,這項標準可降低軟件設計成本。這聽起來很不錯,但事實確實如此嗎?本文將對這些說法進行研究以確定其真實度。我們先回顧一下典型單片機的元件,然后觀察在典型外設固件庫上添加一個抽象層能夠實現或無法實現什么樣的結果。

根據 ARM 所言,CMSIS 是“適用于 Cortex-M 處理器系列的與廠商無關的硬件抽象層。CMSIS為不同芯片廠商和中間件提供商的處理器提供了簡單一致的軟件接口,這簡化了軟件重用,縮短了開發人員對于新單片機(MCU)的學習過程以及新器件的上市時間。CMSIS的問世使芯片廠商可將資源集中在突出其產品的外設功能上,無需在對單片機進行編程時保持各自不兼容的標準?!?/p>

為聯系本文環境,我們需要了解一下單片機是如何設計的。單片機是高度集成的系統解決方案。實際上,可將其稱為片上系統 (System on Chip, SoC)。與任何 SoC一樣,該芯片的功能是通過與 CPU 內核集成在一起的硬件外設進行定義的。當然,CPU 內核的性能和架構決定了可在芯片上執行的代碼種類,但芯片與系統其他部分的交互要通過外設來進行。單片機外設的靈活性使其成為獨特的 SoC。由于這種靈活性,單片機的設置和控制可能相當復雜。在實際進行任何操作前需要設置大量寄存器。為幫助設計人員完成此任務,芯片廠商提供了可簡化代碼開發的固件庫。這些庫包括了用于設置所有寄存器以及控制單片機各個部分所必需的所有函數。由于各個芯片廠商的單片機具有不同的外設和功能,因此每個廠商都會提供一個獨一無二的庫,以使其產品在競爭對手中脫穎而出。我們來看一下單片機的哪些部分形成了各廠商之間的區別。

每個單片機制造商對實現整體系統集成 (即系統總線、時鐘樹和存儲器)都有自己的方式,即使 CPU 內核相同時也是如此。憑借這些實現方案,各制造商建立了各自的優勢,使自己的單片機成為更適合客戶的解決方案。讓我們來研究每一個系統組成:

? 時鐘樹提供系統的時鐘脈沖,以協調所有其他功能的時序。時鐘樹旨在優化系統速度并使系統實現經濟運行。芯片所含的功能和外設以及芯片旨在解決的問題直接影響著時鐘樹的結構。因此,各家制造商的時鐘樹結構不盡相同。此外,在進行任何操作前,都需要使用適當的值對時鐘樹寄存器進行編程。

? 系統總線的架構定義了所有 MCU 功能的集成方式。有些制造商會使用一條或多條外設總線,具體情況取決于所集成的外設。所有這一切都會改變需要設置的寄存器的種類和數量,以盡可能利用所有可用的功能。

? 盡管所有單片機都同時具有非易失性存儲器(如閃存)和易失性存儲器(如 SRAM),但每家制造商的具體集成方式都不相同。有些制造商將閃存存儲器直接連接到內核與總線矩陣,而其他一些制造商則將其連接到系統總線或總線矩陣。RAM 有時會分布于兩個獨立的存儲器組,以允許內核和外設同時訪問。這些不同的存儲器結構可能會影響代碼的編寫方式,當設計人員從一個制造商轉到另一個時,這通常會對應用程序的性能產生直接影響。每個制造商都在其單片機上提供了一系列標準和專用的硬件外設。

? 標準外設提供通用功能,例如通過 UART 或 SPI 實現串行通信。這些外設也可以是定時器或 PWM。標準外設在所有 MCU 制造商的產品中都很常見,但它們可能會有某些增強功能,為客戶提供更大的靈活性和 / 或更多功能。與單片機的任何其他部分一樣,標準外設有自己的寄存器。盡管標準外設的功能可能相同,但幾乎每個制造商實現標準外設的方式都不相同,進而導致各個 MCU 廠商產品的寄存器結構也各不相同。

? 專用外設適用于某些應用獨有的特定任務。例如,無刷電機控制 PWM、用于音頻回放的 I2S 或加密 / 解密。根據復雜性的不同,這些專用外設可能只有幾個寄存器,也可能有 30 個以上的寄存器。

如前文所述,每個MCU制造商都有自己的外設固件庫,用以幫助客戶實現設計并迅速進入原型設計階段。固件庫包括由芯片制造商開發的代碼,用于設置芯片各部分中 (如時鐘、總線和外設)的所有寄存器。提供可輕松設置各個寄存器的函數調用,以助于開發人員專注于輸入應用程序所需的參數。函數負責將這些參數寫入相應的存儲器位置。通過使用固件庫中的函數,開發人員不必了解所有寄存器及其位置便可使芯片正常運行。這樣可將節省下的時間集中在更特定于應用程序的任務上,例如為應用程序開發適當算法。

外設固件庫還包括用于控制外設 (也通過寄存器完成)的函數。同樣,開發人員無需關注寄存器的位和單元,只需為其代碼選擇正確的函數。抽象層可應用到外設固件庫以幫助簡化代碼開發,這正是 CMSIS 發揮作用的地方。但還有一個疑問:這是否會產生代碼兼容性問題?

現在我們已清楚地了解各個單片機制造商都能提供什么,我們可以看一下抽象層能為設計人員做些什么(如果有的話)。首先,我們來看 CMSIS 聲稱所能提供的功能,同時應記住前文所述的系統架構、外設和固件庫。

對于CMSIS 版本 1.3

1. 內核外設訪問層:包含用于訪問內核寄存器和外設的名稱定義、地址定義和輔助函數。它還定義了一個用于 RTOS 內核的器件無關接口,其中包含調試通道定義。

2. 這些軟件層由芯片合作伙伴通過以下方式進行擴展:

a) 器件外設訪問層,提供所有器件外設的定義;

b) 用于外設的訪問函數(可選):提供用于外設的附加輔助函數。

仔細閱讀此說明后,我們可以看到 CMSIS 提供了一種通用語言,通過它可描述 MCU 的不同元件。接下來,我們看一下兩個不同的 “芯片合作伙伴”(使用 ARM Cortex-M 處理器內核的 MCU 制造商)所生產的 MCU 中包含的部分功能。

pYYBAGLFRT-AHHEnAAB5JSjdU5I368.jpg

顯而易見的是,盡管這兩個 32 位 MCU 制造商都使用Cortex-M3 內核,但主要功能仍有區別。表中列出的功能是單片機最標準的功能,即便如此它們仍有不同。這意味著,即使這兩個制造商使用相同的內核,也需要對軟件進行調整才能運行最基本的程序,例如翻轉 I/O 或使用 UART。如果不進行一定程度的代碼重寫,而只是對基本參數進行調整,則無法在 A 和 B 之間移植軟件。

根據定義,CMSIS 提供了用于訪問內核元素的標準化語言,但芯片合作伙伴 /MCU 制造商必須提供自己的固件才能與器件外設進行交互。任何 MCU 的兩個最基本功能都會涉及 (1)如何使系統架構與外設相關聯,(2)如何設計 MCU 外設的結構以實現所需控制和 / 或功能。這是制造商提供的固件庫能幫助解決的問題,也是代碼兼容性問題的核心所在。向這些庫添加抽象層有助于提高可移植性,但無法解決兩個MCU之間的所有功能差異。任何高級外設功能都無法移植到不存在該功能的另一MCU 上,無論是否有抽象層。單片機制造商實現的這些增強功能有助于使 MCU 從競爭對手中脫穎而出,并幫助設計人員改進解決方案。但這會導致代碼不兼容。

抽象層的概念與操作系統的設計有關。它創建了一種操作系統訪問處理器 (正在運行該操作系統)的標準方式,并且可以簡化更改處理器的過程。必須知道的是,處理器(微處理器單元,MPU)是系統元件集成度最低的內核,這使得各制造商的處理器的相似度要遠大于MCU。此外,處理器上運行的代碼是軟件,而不是固件。也就是說,代碼通常不控制任何硬件。另一方面,單片機是片上系統,這意味著內核與集成外設之間的聯系更為緊密。對于 MCU,如果要運行 RTOS,則抽象層的概念最有意義。另一方面,使用 RTOS 會使應用程序代碼與硬件分離,進而去除單片機應用中常見的嚴格控制。

如果某個應用程序正在RTOS上運行,則可將其移植到任何支持該特定 RTOS 的單片機。在運行 Micrium μCOS II 的 Cortex-M3 單片機上開發的代碼可移植到基于 MIPS M4K 的單片機,因為 μCOS II 在該平臺上也可以運行。應用程序與硬件隔離,并且只要代碼的新部分具有所有相關功能,移植就應該相對很容易。

但在另一方面,如果沒有 RTOS,情況就不是這樣了。如前文所述,每個制造商都會以自己的方式集成內核、存儲器和外設。其中一些差異使得創建一個適用于不同制造商的標準抽象層非常困難,并且還有一個問題:他們想讓這變得簡單嗎?

在大多數單片機應用程序中,在內核上運行的代碼與硬件外設之間的牢固連接非常關鍵。實際上,該連接使得創建任何種類的標準抽象層 (可在不同制造商的 MCU間轉換)都很困難。抽象層可以對標準功能(例如 UART或 SPI)有所幫助。但即使是 UART,如果原始代碼對9 位模式的 UART 使用了固件庫函數,則在新 MCU 沒有 9 位模式的 UART (即沒有用于此用途的庫函數)時,必須重寫代碼。更復雜的是,在大多數情況下設計人員不是通過標準函數來定義 MCU 的值,而是通過其獨特的外設開發最優解決方案。例如,如果能以更高的精度和安全性控制電機,您將從競爭對手中脫穎而出。專用庫正是在這里起作用,而使事情變得更加復雜。

外設固件庫支持指定單片機上的所有外設,包括標準外設和專用外設。但為了更好地支持客戶,某些制造商還為特定應用(如電機控制、圖形和網絡等)提供專用固件庫。這些專用庫總是專有的,在許多情況下包含無法在制造商之間轉移的知識產權。在大多數情況下,所涉及的應用程序都很復雜,設計人員不會愿意從頭開發應用程序。此外,制造商通常將其外設支持的所有特殊功能都集成到庫中,在不對代碼進行較大修改的情況下無法移植到其他制造商的 MCU 上。

在我們的示例中,廠商 A 和 B 的單片機都使用了ARM Cortex-M3 內核,并且都具有符合 CMSIS 標準的固件庫。這是否意味著他們的庫(例如電機控制庫)可以互相移植?其實不見得。這兩個制造商對外設和固件采用了完全不同的方法。廠商 A 使用專用算法庫 (可能由多人經過數年開發而成)來最高效地利用其單片機上的專用外設。而廠商 B 則專注于使用更通用的外設并構建通用外設庫,對于特定應用則使用示例代碼和應用筆記進行說明。這兩種完全不同的方法使得在這兩個制造商的 MCU 之間移植程序(例如電機控制子程序)非常困難,盡管它們使用了相同的內核。此外,庫函數的命名也不相同,這意味著用戶必須重寫代碼中的所有庫函數調用,并且要弄清將哪些變量和值提交給函數。這完全不是所謂的可移植性。

設計人員關注的重點是開發特定最終用途代碼時的速度、效率和可靠性。廠商 A 和 B 采用不同的方法來達到這些目標。廠商 A 使用基于專用硬件的方法,而廠商 B的方法更加專注于通用硬件。廠商 A 針對特定應用提供了經過潛心開發的專用庫,以最大限度地利用其單片機的功能。而廠商 B 只提供基本構件,讓開發人員構建自己的解決方案。在速度和可靠性方面,廠商 A 的方法占據優勢,因為很大一部分的應用程序開發工作已經完成且經過測試,并

集成在其固件庫中。至于效率方面,廠商 A 也有明顯優勢,因為其軟件專為其硬件進行了優化。但是,這些優勢沒有一項與 CMSIS 或可移植性有關。對兩個廠商的MCU 所進行的比較不應基于抽象層,而應該著重于使用某個 MCU 實現其預期最終用途的順利程度。那些針對特定單片機開發了定制固件庫的制造商具有明顯優勢。正在尋找控制器的設計人員可將精力放在比較特定算法對其需求的適用程度上。盡管 CMSIS 這樣的 API對于隱藏硬件復雜性(例如針對 RTOS)很有用,并在二者之間形成無縫接口,但無法保證軟件在各個制造商間的可移植性。

要考慮的最后一點是單片機的基本宗旨。開發 MCU 的目的是為日常設備的控制帶來可編程性和靈活性。通過集成 CPU、非易失性存儲器和外設(模擬和數字),這一目標已經實現。無需那些使計算機變得通用的高級功能,單片機可充分利用少量硬件來實現所需功能。專用于 MCU 特定外設結構的固件庫大幅減少了開發應用程序所需的時間和工作量。如前文所述,向這些庫添加抽象層有助于改進開發過程,對于跨項目重用代碼也更為簡單,但要付出一定代價。使用抽象層時存在代碼變長和性能下降問題。添加抽象層使單片機更類似于計算機。這在某種程度上與形成單片機基本宗旨的特質相反。實際上,它使開發過程更為復雜,因為它要求應用程序遵守 CMSIS 的特定語言要求,而且無法保證代碼兼容性。

審核編輯:劉清

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

    關注

    48

    文章

    7490

    瀏覽量

    151056
  • 單片機
    +關注

    關注

    6032

    文章

    44520

    瀏覽量

    633076
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9054

    瀏覽量

    366827
  • Cortex
    +關注

    關注

    2

    文章

    202

    瀏覽量

    46441

原文標題:32 位單片機的應用可移植性——現實還是神話?

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32單片機的特點介紹

    STM32系列單片機是由ST廠商推出的單片機,基于專為高性能、低成本、低功耗嵌入式應用設計的ARM Cortex-M內核,具備一流的外設配置,使其在功耗和集成度方面表現出色,STM32以其簡單的結構
    的頭像 發表于 09-25 17:19 ?980次閱讀

    stm32單片機用什么軟件編程

    是STMicroelectronics公司推出的一款基于ARM Cortex-M內核的32位微控制器。它具有高性能、低功耗、豐富的外設接口等特點,廣泛應用于工業控制、消費電子、醫療設備等領域。要對STM32單片機進行編程,需要選擇合適的軟件工具。本文將詳細介紹STM32
    的頭像 發表于 09-02 10:16 ?999次閱讀

    stm32單片機引腳介紹及功能

    STM32系列單片機是STMicroelectronics(意法半導體)推出的一款基于ARM Cortex-M內核的32位微控制器。STM32單片機具有高性能、低功耗、豐富的外設和靈活的引腳配置等
    的頭像 發表于 09-02 09:38 ?3819次閱讀

    stm32和51單片機的區別是什么

    架構差異: STM32是基于ARM Cortex-M系列內核的32位微控制器,具有更高效的處理能力和更豐富的外設。 51單片機是基于8051內核的8位微控制器,處理能力相對較低,外設也相對有限
    的頭像 發表于 09-02 09:33 ?638次閱讀

    基于ARM Cortex-M3單片機研發的國產指紋芯片 - P1032BF1

    指紋芯片 - P1032BF1是一款基于ARM Cortex-M3的單片機,專為Wi-Fi /藍牙通信控制而設計;可應用于智能鎖;支持大型程序代碼和擁有大型嵌入式SRAM,也可用于一般的MCU應用。
    的頭像 發表于 07-10 09:22 ?536次閱讀
    基于ARM <b class='flag-5'>Cortex-M</b>3<b class='flag-5'>單片機</b>研發的國產指紋芯片 - P1032BF1

    第二講:單片機STC89C52+RA8889驅動控制彩屏 代碼移植介紹

    介紹51單片機如何移植RA8889的代碼進行彩屏驅動與控制
    的頭像 發表于 06-04 10:36 ?841次閱讀
    第二講:<b class='flag-5'>單片機</b>STC89C52+RA8889驅動控制彩屏 代碼<b class='flag-5'>移植</b>介紹

    stm32單片機學習路線

    ARM體系結構和Cortex-M核:STM32是基于ARM Cortex-M核的單片機,了解ARM體系結構和Cortex-M核的特性和架構可以幫助你更好地理解STM32的工作原理和特點
    發表于 05-10 15:34

    請問cortex-M7核單片機主要應用在哪些領域?

    看到st和nxp的M7核單片機,動不動幾百兆的主頻,有的還要外置DDR,還有的成本低于1刀。想知道這些單片機的目標應用場合是哪些? 單片機發展,從51過渡到
    發表于 04-17 07:49

    市面上很火的32位單片機—PY32F030單片機的產品特性介紹

    PY32F030 系列單片機是采用了高性能的 32 位 ARM? Cortex?-M0+ 內核,寬電壓工作范圍的 MCU。
    的頭像 發表于 03-22 15:29 ?1177次閱讀

    Cortex-M85內核單片機如何快速上手

    2022年4月,Arm推出了全新的MCU級內核Cortex-M85。截止目前(2024年2月),Cortex-M85是最新、最強的Cortex-M內核。
    發表于 02-29 09:35 ?679次閱讀
    <b class='flag-5'>Cortex-M</b>85內核<b class='flag-5'>單片機</b>如何快速上手

    請問mbed物聯網操作系統會成為cortex-m中的android嗎?

    mbed 物聯網操作系統會成為cortex-m中的android嗎?
    發表于 01-17 07:14

    PY32C613單片機簡單介紹

    PY32C613單片機是普冉新推出的高性能的 32 位 ARM Cortex-M0+ 內核,寬電壓工作范圍的 MCU。
    的頭像 發表于 01-16 18:06 ?1026次閱讀
    PY32C613<b class='flag-5'>單片機</b>簡單介紹

    單片機怎么能夠與手機實現遠程通訊呢?

    單片機怎么能夠與手機實現遠程通訊呢? 隨著物聯網的快速發展,單片機作為物聯網應用中最常見的控制器,與手機實現遠程通訊已成為一種趨勢。通過單片機與手機的遠程通訊,可以實現智能家居、智能農
    的頭像 發表于 01-15 14:59 ?2845次閱讀

    STM32單片機的特點和功能是什么

    STM32單片機是一款基于ARM Cortex-M內核的32位閃存微控制器,由STMicroelectronics公司(意法半導體)生產。STM32單片機具有高性能、低功耗、豐富的外設和易于開發
    的頭像 發表于 01-03 15:33 ?1.2w次閱讀

    HOLTEK推出新一代Arm Cortex-M0+直流無刷電機控制單片機

    Holtek推出新一代Arm Cortex-M0+直流無刷電機控制專用整合型單片機HT32F65432A與HT32F65440A,整合MCU、LDO、三相36V P/N Gate-Driver、VDC bus電壓偵測、高壓FG及零待機功耗
    的頭像 發表于 12-26 16:31 ?1036次閱讀