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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

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

雙核MCU:LPC5411x

這款LPC5411x系列MCU集成了Cortex-M4F和Cortex-M0+雙內(nèi)核,主頻高達(dá)100MHz 。因?yàn)镃ortex-M4F內(nèi)核采用Harvard架構(gòu),3級(jí)流水線,支持SIMD,支持單精度浮點(diǎn)運(yùn)算,單個(gè)時(shí)鐘周期就能完成一條乘累加(MAC)指令,所以其處理性能強(qiáng)悍,一般用于處理復(fù)雜的計(jì)算或算法。而Cortex-M0+內(nèi)核結(jié)構(gòu)簡(jiǎn)單,只有2級(jí)流水線,能效高,一般用于實(shí)時(shí)控制、外設(shè)管理、數(shù)據(jù)通信等任務(wù)。

在LPC5411x產(chǎn)品中Cortex-M4F是主核,而Cortex-M0+是從核。從核的主要任務(wù)是協(xié)助主核處理非計(jì)算性的雜務(wù),充分解放主核的運(yùn)算能力,這樣可以達(dá)到整個(gè)系統(tǒng)的最優(yōu)性能。

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

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

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

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

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

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

存儲(chǔ)區(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)化系統(tǒng)整體處理能力,需要讓這兩個(gè)CPU內(nèi)核同時(shí)以最快速度執(zhí)行各自指令, 比如Cortex-M4F上能執(zhí)行單周期的的MAC指令,同時(shí)Cortex-M0+上能執(zhí)行單周期的32位乘法。

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

雙核運(yùn)行的功耗如何?

在回答這個(gè)問(wèn)題之前,讓我們看一下其實(shí)測(cè)的CoreMark動(dòng)態(tài)功耗圖吧:

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

當(dāng)然如果你比較關(guān)心功耗,可以根據(jù)應(yīng)用實(shí)際情況讓一個(gè)CPU內(nèi)核進(jìn)入低功耗模式,另一個(gè)CPU內(nèi)核工作,等到一定條件時(shí)再喚醒另一個(gè)核。

雙核之間怎么通信?

下面這張圖說(shuō)明了倆核之間的通信機(jī)制。

當(dāng)一個(gè)CPU內(nèi)核準(zhǔn)備好數(shù)據(jù)之后,通過(guò)互鎖信號(hào)放在共享RAM中,再通過(guò)郵箱機(jī)制產(chǎn)生中斷事件,通知另一個(gè)CPU內(nèi)核來(lái)處理。另一個(gè)CPU內(nèi)核處理完數(shù)據(jù)后,清理相應(yīng)的中斷標(biāo)志。通過(guò)這種方式可以實(shí)現(xiàn)實(shí)時(shí)性很強(qiáng)的雙核通信和數(shù)據(jù)交換。也可以不用互鎖信號(hào)和共享RAM,直接通過(guò)郵箱機(jī)制傳遞最多32位的數(shù)據(jù)。

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

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

針對(duì)雙核以及多核體系架構(gòu),恩智浦提供了多核SDK開發(fā)庫(kù)(稱為MCSDK), 以及豐富的例程,包含在相應(yīng)多核平臺(tái)的MCUXpresso SDK 開發(fā)包中。 下圖顯示了MCSDK的架構(gòu):

eRPC即嵌入式遠(yuǎn)程過(guò)程調(diào)用(Embedded Remote Procedure Call),是一套實(shí)現(xiàn)調(diào)用另一核上遠(yuǎn)程服務(wù)的透明函數(shù)調(diào)用接口。MCMGR即多核管理器(Multicore Manager),是包含所有CPU內(nèi)核信息及啟動(dòng)從核的函數(shù)調(diào)用接口。RPMsg-Lite即遠(yuǎn)程處理器消息機(jī)制精簡(jiǎn)版(Remote Processor Messaging – Lite),包含了所有處理器間通信的函數(shù)庫(kù)。

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

有了這套多核SDK開發(fā)庫(kù),用戶可以不用關(guān)心硬件底層的通信機(jī)制,直接使用相應(yīng)的例程和調(diào)用接口,幾分鐘內(nèi)便可以實(shí)現(xiàn)雙核間的通信和數(shù)據(jù)交換代碼。

下面這個(gè)例子說(shuō)明如何使用RPMsg-Lite,從一個(gè)CPU內(nèi)核發(fā)送數(shù)據(jù)到另一內(nèi)核:

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

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

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

my_ept = rpmsg_lite_create_ept(my_rpmsg, LOCAL_EPT_ADDR, …);

msg是真正要交換的消息。

REMOTE_EPT_ADDR,LOCAL_EPT_ADDR分別是此消息管道的遠(yuǎn)程端點(diǎn)和本地端點(diǎn)的邏輯地址。

怎么調(diào)試雙核應(yīng)用程序?

在回答這個(gè)問(wèn)題之前,先看一下硬件調(diào)試接口圖:

上圖說(shuō)明,LPC5411x 系列支持對(duì)雙核同時(shí)調(diào)試 ,就像調(diào)試單個(gè)CPU內(nèi)核程序一樣簡(jiǎn)單。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17162

    瀏覽量

    351343
  • 雙核
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    15208

原文標(biāo)題:如果你的設(shè)計(jì)正好需要雙核MCU,請(qǐng)看本文 !

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    非對(duì)稱MCU基礎(chǔ)知識(shí)及間通信

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

    基于MCU提高系統(tǒng)性能

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

    如何采用非對(duì)稱MCU提高系統(tǒng)性能?

    本文系統(tǒng)地介紹了 C2000 Concerto 系列非對(duì)稱 MCU 的基礎(chǔ)知識(shí)和重要特點(diǎn)。
    發(fā)表于 04-02 06:02

    非對(duì)稱MCU的基礎(chǔ)知識(shí)與重要特點(diǎn)

    通信。然后,對(duì)內(nèi)核互斥、初始化流程等一些重要的細(xì)節(jié)展開了論述。最后提出了任務(wù)分工的兩種應(yīng)用模型,并分別舉例。  背景與基本概念在開發(fā)MCU應(yīng)用系統(tǒng)時(shí),如果單顆
    發(fā)表于 11-01 06:29

    MCU Pico的相關(guān)資料分享

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

    DSP MCU,什么是SP MCU

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

    非對(duì)稱MCU基礎(chǔ)知識(shí)及間通信

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

    應(yīng)用非對(duì)稱MCU增強(qiáng)系統(tǒng)性能

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

    就是任性——LPC Xpresso54102開發(fā)板評(píng)測(cè)

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

    非對(duì)稱MCU基礎(chǔ)知識(shí)及間通信

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

    非對(duì)稱MCU基礎(chǔ)知識(shí)及間通信

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

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

    PIO架構(gòu),能否開創(chuàng)MCU市場(chǎng)全新領(lǐng)域,STM,兆易創(chuàng)新,STC,全志,樂(lè)鑫等一票國(guó)產(chǎn)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)向來(lái)是設(shè)計(jì)上的一大挑戰(zhàn),尤其是多核異構(gòu)的設(shè)計(jì)。而MCU作為其中的精簡(jiǎn)版本,憑借其超強(qiáng)的處理性能和便捷開發(fā)的特性,
    的頭像 發(fā)表于 05-10 14:25 ?1675次閱讀
    先楫HPM6000系列<b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>MCU</b>怎么玩?

    如何玩轉(zhuǎn)HPM6000系列MCU?

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

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

    多核的微控制器(MCU)向來(lái)是設(shè)計(jì)上的一大挑戰(zhàn),尤其是多核異構(gòu)的設(shè)計(jì)。而MCU作為其中的精簡(jiǎn)版本,憑借其超強(qiáng)的處理性能和便捷開發(fā)的特性,
    的頭像 發(fā)表于 05-12 10:08 ?3244次閱讀
    玩轉(zhuǎn)<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>怎么玩?答案超乎你想象!