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

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

3天內不再提示

雙核MCU開發(fā)其實也不難!

5RJg_mcuworld ? 來源:未知 ? 作者:胡薇 ? 2018-10-16 18:04 ? 次閱讀

多核的微控制器(MCU)向來是設計上的一大挑戰(zhàn),尤其是多核異構的設計。恩智浦半導體早在2011年年底,就率先推出了基于Cortex-M4F和Cortex-M0的雙核MCU——LPC43xx/43Sxx系列, 主頻高達204MHz。憑借其超強的處理性能,很快受到業(yè)界的好評。四年之后,MCU雙核精簡版本LPC5411x系列,在廣大LPC發(fā)燒友的期待中,終于露出了一代天驕的本色。

雙核MCU:LPC5411x

這款LPC5411x系列MCU集成了Cortex-M4F和Cortex-M0+雙內核,主頻高達100MHz 。因為Cortex-M4F內核采用Harvard架構,3級流水線,支持SIMD,支持單精度浮點運算,單個時鐘周期就能完成一條乘累加(MAC)指令,所以其處理性能強悍,一般用于處理復雜的計算或算法。而Cortex-M0+內核結構簡單,只有2級流水線,能效高,一般用于實時控制、外設管理、數據通信等任務。

在LPC5411x產品中Cortex-M4F是主核,而Cortex-M0+是從核。從核的主要任務是協助主核處理非計算性的雜務,充分解放主核的運算能力,這樣可以達到整個系統的最優(yōu)性能。

為了實現整體性能最優(yōu),LPC5411x采用了多層AHB矩陣式總線架構,以及多個RAM分塊。下圖是LPC5411x的內部功能框圖,可以看到內部的AHB矩陣式總線架構,Cortex-M4F和M0+都是總線上的master,可以訪問所有的片上資源??偩€訪問的優(yōu)先級可以通過寄存器設定。

Cortex-M4F核在AHB總線上有3個接口:I-code, D-code和System總線。而Cortex-M0+只有一個System總線接口。不同的RAM塊可以被不同的AHB master同時訪問。

雙核MCU的存儲區(qū)分配

I-code總線用于從CODE內存分區(qū)取指令, 地址范圍是:0x0000-0000~0x1FFF-FFFF。D-code總線用于從CODE內存分區(qū)取操作數,地址范圍是:0x0000-0000~0x1FFF-FFFF。

當以上兩條總線同時訪問同一內存單元時,D-code總線訪問優(yōu)先級比I-code高,所以D-code先訪問。對地址范圍從0x2000-0000~0xDFFF-FFFF的訪問是通過System總線進行的,可用于訪問操作數、指令等,數據訪問的優(yōu)先級高于取指令及中斷向量。

各個存儲區(qū)所在的地址區(qū)域如下表:

存儲區(qū) 地址區(qū)域 大小
Flash 0x0000-0000 ~
0x0003-FFFF
256KB
Boot ROM 0x0300-0000 ~
0x0300-7FFF
32KB
SRAMX 0x0400-0000 ~
0x0400-7FFF
32KB
SRAM0 0x2000-0000 ~
0x2000-FFFF
64KB
SRAM1 0x2001-0000 ~
0x2001-FFFF
64KB
SRAM2 0x2002-0000 ~
0x2002-7FFF
32KB

為優(yōu)化系統整體處理能力,需要讓這兩個CPU內核同時以最快速度執(zhí)行各自指令, 比如Cortex-M4F上能執(zhí)行單周期的的MAC指令,同時Cortex-M0+上能執(zhí)行單周期的32位乘法。

因此,存儲區(qū)的合理分配策略是,Flash和RAMX以及SRAM0需要分配給Cortex-M4F內核,分別用于存放指令代碼和操作數(見上圖紅/黃框部分)。而SRAM1/SRAM2這兩塊需要分給Cortex-M0+(見上圖綠色框部分)。 需要注意的是,只要其中一個RAM塊分配給某個CPU核,這個RAM塊就不能分配給另一個CPU核, 否則這兩個CPU核同時訪問同一塊區(qū)域時,就會出現總線爭用,而導致另一個CPU核訪問出現等待周期,從而降低整個系統處理效率。

雙核運行的功耗如何?

在回答這個問題之前,讓我們看一下其實測的CoreMark動態(tài)功耗圖吧:

以代碼放在Flash中運行并且主頻為48MHz為例,Cortex-M4F動態(tài)功耗大約為96uA/MHz,而Cortex-M0+為75uA/MHz。兩者之和為171uA/MHz,也就是說雙核同時運行時的功耗為8.2mA。這個功耗比許多其他廠家的單Cortex-M4F核的MCU還低,但性能要強很多。

當然如果你比較關心功耗,可以根據應用實際情況讓一個CPU內核進入低功耗模式,另一個CPU內核工作,等到一定條件時再喚醒另一個核。

雙核之間怎么通信?

下面這張圖說明了倆核之間的通信機制。

當一個CPU內核準備好數據之后,通過互鎖信號放在共享RAM中,再通過郵箱機制產生中斷事件,通知另一個CPU內核來處理。另一個CPU內核處理完數據后,清理相應的中斷標志。通過這種方式可以實現實時性很強的雙核通信和數據交換。也可以不用互鎖信號和共享RAM,直接通過郵箱機制傳遞最多32位的數據。

另外一種簡單的方法叫作消息隊列機制:直接在共享RAM中創(chuàng)建循環(huán)緩沖器用于消息隊列。當一個CPU內核準備好數據之后,就把數據發(fā)送到這個隊列最后面(隊尾),而另一CPU內核每次從這個隊列的最前面取數據。對每個隊列的訪問是單向的,即一個CPU核只能寫,而另一個CPU內核只能讀。要實現雙向,必須創(chuàng)建至少兩個隊列。 這種方法可以不用互鎖信號,但可以使用中斷機制通知另一個CPU核,以便實現實時通信和數據交換。

雙核的開發(fā)很難嗎?

針對雙核以及多核體系架構,恩智浦提供了多核SDK開發(fā)庫(稱為MCSDK), 以及豐富的例程,包含在相應多核平臺的MCUXpresso SDK 開發(fā)包中。 下圖顯示了MCSDK的架構:

eRPC即嵌入式遠程過程調用(Embedded Remote Procedure Call),是一套實現調用另一核上遠程服務的透明函數調用接口。MCMGR即多核管理器(Multicore Manager),是包含所有CPU內核信息及啟動從核的函數調用接口。RPMsg-Lite即遠程處理器消息機制精簡版(Remote Processor Messaging – Lite),包含了所有處理器間通信的函數庫。

這套庫支持市面上所有主流ARM Cortex-M軟件開發(fā)工具,包括IAR、KEIL、GCC,以及MCUXpresso IDE。

有了這套多核SDK開發(fā)庫,用戶可以不用關心硬件底層的通信機制,直接使用相應的例程和調用接口,幾分鐘內便可以實現雙核間的通信和數據交換代碼。

下面這個例子說明如何使用RPMsg-Lite,從一個CPU內核發(fā)送數據到另一內核:

rpmsg_lite_send(my_rpmsg, my_ept, REMOTE_EPT_ADDR, (char *)&msg,sizeof(msg), …);

其中my_rpmsg是rpmsg_lite_remote_init()或rpmsg_lite_master_init()調用所創(chuàng)建的RPMsg實例;如果是主CPU內核,就用rpmsg_lite_master_init()初始化, 否則就是遠程CPU內核,用rpmsg_lite_remote_init()初始化

my_ept是此消息管道的端點,由rpmsg_lite_create_ept()調用創(chuàng)建的:

my_ept = rpmsg_lite_create_ept(my_rpmsg, LOCAL_EPT_ADDR, …);

msg是真正要交換的消息。

REMOTE_EPT_ADDR,LOCAL_EPT_ADDR分別是此消息管道的遠程端點和本地端點的邏輯地址。

怎么調試雙核應用程序?

在回答這個問題之前,先看一下硬件調試接口圖:

上圖說明,LPC5411x 系列支持對雙核同時調試 ,就像調試單個CPU內核程序一樣簡單。

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

    關注

    146

    文章

    16802

    瀏覽量

    349370
  • 雙核
    +關注

    關注

    0

    文章

    37

    瀏覽量

    15158

原文標題:如果你的設計正好需要雙核MCU,請看本文 !

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    非對稱MCU基礎知識及間通信

    的控制/狀態(tài)通信。然后,對內核互斥、初始化流程等一些重要的細節(jié)展開了論述。最后提出了任務分工的兩種應用模型,并分別舉例。 背景與基本概念 在開發(fā)MCU應用系統時,如果單顆
    發(fā)表于 05-15 14:26

    基于MCU提高系統性能

    界面等。這類方案的存在諸多缺點,首先兩顆 MCU 增加了 PCB 的面積,而且 MCU 之間的通訊的可靠性和數據吞吐率受到限制,另外,功耗將顯著增加,程序
    發(fā)表于 07-04 07:49

    如何采用非對稱MCU提高系統性能?

    本文系統地介紹了 C2000 Concerto 系列非對稱 MCU 的基礎知識和重要特點。
    發(fā)表于 04-02 06:02

    非對稱MCU的基礎知識與重要特點

    通信。然后,對內核互斥、初始化流程等一些重要的細節(jié)展開了論述。最后提出了任務分工的兩種應用模型,并分別舉例?! ”尘芭c基本概念在開發(fā)MCU應用系統時,如果單顆
    發(fā)表于 11-01 06:29

    MCU Pico的相關資料分享

    PIO架構,能否開創(chuàng)MCU市場全新領域,STM,兆易創(chuàng)新,STC,全志,樂鑫等一票國產MCU能否跟上?樹莓派發(fā)布基于M0的MCU近日,樹
    發(fā)表于 11-04 08:51

    DSP MCU,什么是SP MCU

    DSP MCU,什么是SP MCU 各種數字消費產品特別是便攜式數字產品的功能已由單一
    發(fā)表于 03-26 15:00 ?1010次閱讀

    非對稱MCU基礎知識及間通信

    本文從對比兩顆分立MCU與單芯片MCU開始(以LPC4350為例),展開介紹了非對稱
    發(fā)表于 03-26 15:31 ?3574次閱讀
    非對稱<b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>MCU</b>基礎知識及<b class='flag-5'>核</b>間通信

    應用非對稱MCU增強系統性能

    本文從對比兩顆分立MCU與單芯片MCU開始(以LPC4350為例),展開介紹了非對稱
    發(fā)表于 04-11 10:05 ?1020次閱讀
    應用非對稱<b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>MCU</b>增強系統性能

    就是任性——LPC Xpresso54102開發(fā)板評測

    隨著科技的進步,逐漸被淘汰已是時間上的問題,四乃至八核心CPU已不再是什么新奇的事物,不過在微控制器領域,
    發(fā)表于 08-25 11:44 ?11次下載

    非對稱MCU基礎知識及間通信

    本文從對比兩顆分立MCU與單芯片MCU開始(以LPC4350為例),展開介紹了非對稱
    的頭像 發(fā)表于 03-13 15:47 ?5114次閱讀
    非對稱<b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>MCU</b>基礎知識及<b class='flag-5'>核</b>間通信

    非對稱MCU基礎知識及間通信

    通信。然后,對內核互斥、初始化流程等一些重要的細節(jié)展開了論述。最后提出了任務分工的兩種應用模型,并分別舉例?! ”尘芭c基本概念在開發(fā)MCU應用系統時,如果單顆
    發(fā)表于 10-26 09:21 ?11次下載
    非對稱<b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>MCU</b>基礎知識及<b class='flag-5'>核</b>間通信

    樹莓派不講武德,自研MCU Pico,STM32哭暈在廁所!

    PIO架構,能否開創(chuàng)MCU市場全新領域,STM,兆易創(chuàng)新,STC,全志,樂鑫等一票國產MCU能否跟上?樹莓派發(fā)布基于M0的MCU近日,樹
    發(fā)表于 10-28 20:20 ?14次下載
    樹莓派不講武德,自研<b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>MCU</b> Pico,STM32哭暈在廁所!

    先楫HPM6000系列MCU怎么玩?

    多核的微控制器(MCU)向來是設計上的一大挑戰(zhàn),尤其是多核異構的設計。而MCU作為其中的精簡版本,憑借其超強的處理性能和便捷開發(fā)的特性,
    的頭像 發(fā)表于 05-10 14:25 ?1524次閱讀
    先楫HPM6000系列<b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>MCU</b>怎么玩?

    如何玩轉HPM6000系列MCU

    本文通過對先楫HPM6000系列的使用方法、工程編譯與調試、通信方式和資源分配等內容的介紹,全方位給大家介紹
    發(fā)表于 05-10 14:25 ?771次閱讀
    如何玩轉HPM6000系列<b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>MCU</b>?

    玩轉MCU(上) 先楫HPM6000系列怎么玩?答案超乎你想象!

    多核的微控制器(MCU)向來是設計上的一大挑戰(zhàn),尤其是多核異構的設計。而MCU作為其中的精簡版本,憑借其超強的處理性能和便捷開發(fā)的特性,
    的頭像 發(fā)表于 05-12 10:08 ?3057次閱讀
    玩轉<b class='flag-5'>MCU</b><b class='flag-5'>雙</b><b class='flag-5'>核</b>(上) 先楫HPM6000系列<b class='flag-5'>雙</b><b class='flag-5'>核</b>怎么玩?答案超乎你想象!