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

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

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

玩轉(zhuǎn)先楫HPM6000系列雙核(下)

先楫半導(dǎo)體HPMicro ? 2023-05-15 10:22 ? 次閱讀

在《玩轉(zhuǎn)MCU雙核(上)》文章里,我們給大家介紹了先楫HPM6000系列雙核的特性、使用方法以及工程編譯與調(diào)試。本文緊接上篇內(nèi)容,給大家詳細(xì)闡述雙核的通信方式、資源分配以及雙核應(yīng)用eRPC架構(gòu)。如果大家在練手過(guò)程中,有其他的建議和想法,歡迎給我們留言互動(dòng)。

a720ccd0-f0a6-11ed-ba01-dac502259ad0.png

雙核的通信方式

Communication

HPM雙核通信方式有那些?這里列舉如下:

A. 通信外設(shè)通信

如enet/uart/spi/can/i2c/gpio等等。Core0和Core1可通過(guò)通信外設(shè)相互之間發(fā)送消息來(lái)通信。

( 注意:此方案會(huì)浪費(fèi)對(duì)應(yīng)的通訊外設(shè),且需要硬件上支持。)


B. 共享內(nèi)存RAM通信

Core0和Core1通過(guò)訪問(wèn)同一片內(nèi)存RAM來(lái)達(dá)到通信。如:一個(gè)核寫,另一個(gè)和讀。

共享RAM要點(diǎn)

1. 雙核下的共享RAM區(qū)域地址及大小必須相同。

2. 為防止CPU cache的影響,共享的RAM區(qū)域在雙核下均要設(shè)置為nocache區(qū)域或者在訪問(wèn)前后強(qiáng)制刷新cache。

注意:如果設(shè)置為nocache區(qū)域,core0和core1中均要調(diào)用初始化PMP。


例如:

HPM-SDK雙核例程下,雙核linker文件中,均已分配了SHARE_RAM區(qū)域。

Core0 linker文件中的SHARE_RAM區(qū)域分配:

a7c7e9c0-f0a6-11ed-ba01-dac502259ad0.png

Core1 linker文件中的SHARE_RAM區(qū)域分配:

a7dc43fc-f0a6-11ed-ba01-dac502259ad0.png

工程中定義共享RAM區(qū)域,并訪問(wèn)讀寫。

Core0工程下設(shè)定nocache區(qū)域,并初始化PMP。

Core1工程下同樣設(shè)定為nocache區(qū)域,并初始化PMP。

如下:

Core0工程

a7f64914-f0a6-11ed-ba01-dac502259ad0.png

Core1工程

a809da6a-f0a6-11ed-ba01-dac502259ad0.png

通過(guò)debug調(diào)試,在core1中打斷點(diǎn),core1中寫共享區(qū)域。

通過(guò)串口發(fā)送數(shù)據(jù),在core0中讀取共享區(qū)域。

運(yùn)行結(jié)果如下:

a81d794e-f0a6-11ed-ba01-dac502259ad0.png

從運(yùn)行結(jié)果看,core1中寫入的共享區(qū)域的數(shù)據(jù)和core0中讀取的共享區(qū)域的數(shù)據(jù)是一致的。

C. 通信信箱MBX通信

HPM支持獨(dú)有的通信信箱MBX來(lái)進(jìn)行處理器核間通信。主要特性如下:

● 支持 2 個(gè)寄存器訪問(wèn)接口

● 每個(gè)接口支持 TX FIFO 和 RX FIFO

● 支持標(biāo)志位反映 TX FIFO 和 RX FIFO 狀態(tài)

● 支持生成中斷

雙核MBX通信,參考HPM-SDK例程drivers/mbx。

(注意:當(dāng)然也支持讀寫Flash來(lái)通信,考慮到并發(fā)讀寫Flash帶來(lái)的異常,此通信方案不推薦使用。)

在這里,推薦大家結(jié)合B和C方案,通過(guò)MBX做雙核間的消息傳遞,通過(guò)共享RAM的方式來(lái)達(dá)到大數(shù)據(jù)的通信。


當(dāng)然通過(guò)雙核通信來(lái)實(shí)現(xiàn)雙核間的同步和互斥。例如:通過(guò)MBX通信,實(shí)現(xiàn)類似OS互斥鎖和信號(hào)量的功能。

雙核的資源分配

Resources


HPM雙核資源,除了以下資源是Core0和Core1各自私有的,其余資源均需要合理分配。

● CPU 自身的指令/數(shù)據(jù)本地存儲(chǔ)器 ILM / DLM 為私有

● FGPIO 為私有

● 平臺(tái)中斷控制器 PLIC 為私有

● 軟件中斷控制器 PLICSW 為私有

● 機(jī)器定時(shí)器 MCHTMR 為私有

A:雙核Flash 資源分配要點(diǎn)

防止Core0和Core1并發(fā)同時(shí)訪問(wèn)同一個(gè)flash。例如:結(jié)合MBX通信,實(shí)現(xiàn)互斥鎖來(lái)避免并發(fā)訪問(wèn)。并且考慮到flash_xip(非xip的除外) 片上運(yùn)行,同時(shí)應(yīng)在訪問(wèn)flash前后,禁止和使能全局中斷。

B:雙核RAM 資源分配要點(diǎn)

1. 除了共享ram區(qū)域和各自私有的ILM/DLM區(qū)域。其余sram和sdram在core0和core1的分配中不可重疊,避免出現(xiàn)未知數(shù)據(jù)錯(cuò)誤。

2. Core0和Core1共享RAM區(qū)域的分配,地址及大小必須相同。

C:雙核訪問(wèn)同一外設(shè)要點(diǎn)

通常應(yīng)該避免雙核訪問(wèn)同一個(gè)外設(shè)。如果有需求要同時(shí)訪問(wèn)同一外設(shè),需要注意以下幾點(diǎn):

1. 禁止雙核均初始化同一外設(shè)。如:Core0已經(jīng)初始化相關(guān)外設(shè),Core1無(wú)需再次初始化。

2. 防止Core0和Core1并發(fā)操作同一外設(shè)。例如:結(jié)合MBX通信,實(shí)現(xiàn)雙核互斥鎖來(lái)防止并發(fā)操作。

D:雙核使能同一外設(shè)中斷要點(diǎn)

由于雙核Core0/Core1各自的PLIC平臺(tái)中斷控制器是私有的,如果雙核均使能了同一個(gè)外設(shè)中斷,需注意以下幾點(diǎn):

1. 禁止雙核均初始化同一外設(shè)。如:Core0已經(jīng)初始化相關(guān)外設(shè),Core1無(wú)需再次初始化。

2. 雙核各自的私有PLIC中均要使能當(dāng)前中斷。如:Core0的PLIC中使能了IRQn_GPIO0_Z中斷,Core1的PLIC中同樣也要使能IRQn_GPIO0_Z中斷。

3. 禁止雙核外設(shè)中斷處理接口中均清除中斷標(biāo)識(shí)位。如:Core0中清除了當(dāng)前外設(shè)中斷標(biāo)識(shí)位,Core1中無(wú)需再次清除。如下:

a83bdd30-f0a6-11ed-ba01-dac502259ad0.pnga859c822-f0a6-11ed-ba01-dac502259ad0.png

E:雙核異常要點(diǎn)

由于HPM雙核是兩個(gè)獨(dú)立的CPU,是主從架構(gòu)。

當(dāng)雙核出現(xiàn)異常情況,需要注意以下幾點(diǎn):

1. 其中一個(gè)核出現(xiàn)異常(crash)但未重啟,另一個(gè)核仍能正常運(yùn)行,不受影響。

2. Core0異常重啟,Core1也會(huì)隨之重啟。

主從架構(gòu),Core0為主,Core1為從。當(dāng)復(fù)位發(fā)生時(shí),系統(tǒng)總是由Core0啟動(dòng),而Core1處于待機(jī)狀態(tài),需要Core0裝載啟動(dòng)Core1。

3. Core1異常重啟,Core0仍正常運(yùn)行,不受影響。

推薦結(jié)合看門狗WDG來(lái)合理處理雙核異常情況。

雙核應(yīng)用eRPC架構(gòu)

eRPC Structure

eRPC(Embeded Remote Procedure Call) 是一個(gè)簡(jiǎn)單的、易用的、高效的遠(yuǎn)程調(diào)用框架。

RPC是一種機(jī)制,Client端通過(guò)簡(jiǎn)單的本地函數(shù)調(diào)用,就能使用Server端提供的服務(wù)。對(duì)于Client端而言,使用遠(yuǎn)程服務(wù)就像調(diào)用應(yīng)用程序中內(nèi)置的庫(kù)函數(shù)一樣。

當(dāng)Client端調(diào)用遠(yuǎn)程函數(shù)時(shí),該函數(shù)的標(biāo)識(shí)(identifier)和函數(shù)的參數(shù)(parameters)將被序列化到字節(jié)流中,此字節(jié)流通過(guò)傳輸層的通信通道(IPC、TCP/IP、UART、SPI等)傳至Server端。Server端收到字節(jié)流數(shù)據(jù)后,解析函數(shù)參數(shù)并根據(jù)標(biāo)識(shí)選擇調(diào)用的服務(wù)函數(shù)。若函數(shù)有返回值,則Server端將返回值序列化并發(fā)送回Client端。


以下是RPC架構(gòu)框圖(此圖僅顯示一個(gè)傳輸方向,省略了來(lái)自Server端的回復(fù))。

a870d31e-f0a6-11ed-ba01-dac502259ad0.png

對(duì)應(yīng)多核(MultiCore)應(yīng)用,通過(guò)RPMsg-Lite是作為傳輸層;對(duì)于多芯片(MultiProcessor)應(yīng)用,通過(guò)UART、SPI、TCP/IP等作為傳輸層信號(hào)通道。

HPM6000系列雙核應(yīng)用,將使用RPmsg-Lite作為傳輸層。

RPMsg-Lite(Remote Processor Messaging Lite)是ePRC的傳輸層,RPMsg協(xié)議定義了一個(gè)標(biāo)準(zhǔn)化的二進(jìn)制接口,用于在多核系統(tǒng)中內(nèi)核之間的通信。

RPMsg協(xié)議的分層模型如下:

a882ac06-f0a6-11ed-ba01-dac502259ad0.png

它是實(shí)現(xiàn)eRPC的關(guān)鍵部分,采用的數(shù)據(jù)通訊方式為共享內(nèi)存和消息通知。

詳細(xì)介紹參考GitHub官方網(wǎng)站:

https://github.com/EmbeddedRPC/erpc

https://github.com/nxp-mcuxpresso/rpmsg-lite

HPM-SDK已完成了eRPC的移植,采用RPmsg-Lite作為數(shù)據(jù)傳輸層,采用MBX作為事件通知。

例程:hpm_sdk\samples\multicore\erpc

聲明:本文內(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

    瀏覽量

    351348
  • 先楫半導(dǎo)體
    +關(guān)注

    關(guān)注

    10

    文章

    214

    瀏覽量

    2124
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    HPM6E00技術(shù)日 | 百人研討共話工業(yè)應(yīng)用創(chuàng)新及發(fā)展趨勢(shì)

    、內(nèi)嵌ESC的高性能RISC-V內(nèi)核微控制器系列——HPM6E00產(chǎn)品及其應(yīng)用,由的市場(chǎng)、技術(shù)和方案專家們以及
    發(fā)表于 09-02 10:14

    半導(dǎo)體hpm_apps v1.6.0上線

    半導(dǎo)體hpm_apps v1.6.0上線
    的頭像 發(fā)表于 08-02 08:18 ?832次閱讀
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半導(dǎo)體<b class='flag-5'>hpm</b>_apps v1.6.0上線

    有獎(jiǎng)提問(wèn)!半導(dǎo)體HPM6E00系列新品發(fā)布會(huì)??!

    半導(dǎo)體HPM6E00新品預(yù)覽”的活動(dòng),盛況空前。 自此之后一直收到大家的信息,問(wèn)什么時(shí)候能夠買到HPM6E00,這不,我們來(lái)了~ 半導(dǎo)體在現(xiàn)有的
    發(fā)表于 06-20 11:45

    工業(yè)芯標(biāo)桿,邀您來(lái)圍觀——HPM6E00新品上市在即

    ,EtherCATSlaveController)的高性能MCU產(chǎn)品——HPM6E00系列新品全面上市!一直關(guān)注的小伙伴們應(yīng)該還記得,我們?nèi)ツ?2月12日舉辦了一場(chǎng)“Ether
    的頭像 發(fā)表于 06-13 08:17 ?1151次閱讀
    工業(yè)芯標(biāo)桿,邀您來(lái)圍觀——<b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>HPM</b>6E00新品上市在即

    半導(dǎo)體與您相約嵌入式盛會(huì)embedded world China Conference2024

    》演講。分享半導(dǎo)體從HPM5300到HPM6200,再到即將發(fā)布的HPM6E00系列MCU,
    的頭像 發(fā)表于 06-07 08:17 ?404次閱讀
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半導(dǎo)體與您相約嵌入式盛會(huì)embedded world China Conference2024

    半導(dǎo)體 hpm_sdk v1.5.0 正式發(fā)布

    半導(dǎo)體 hpm_sdk v1.5.0 正式發(fā)布
    的頭像 發(fā)表于 04-12 08:17 ?602次閱讀
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半導(dǎo)體 <b class='flag-5'>hpm</b>_sdk v1.5.0 正式發(fā)布

    引領(lǐng)極致視界——高性能MCU HPM6800系列產(chǎn)品生態(tài)綻放,共鏈未來(lái)

    2024年3月28日,上海-國(guó)產(chǎn)高性能微控制器廠商上海半導(dǎo)體科技有限公司(半導(dǎo)體,HPMicro)攜手生態(tài)合作伙伴芯原、立功科技、順微電子和科宇盛達(dá),于上海浦東成功舉辦《
    的頭像 發(fā)表于 03-30 08:16 ?878次閱讀
    引領(lǐng)極致視界——<b class='flag-5'>先</b><b class='flag-5'>楫</b>高性能MCU <b class='flag-5'>HPM</b>6800<b class='flag-5'>系列</b>產(chǎn)品生態(tài)綻放,共鏈未來(lái)

    高性能MCU HPM6800系列產(chǎn)品生態(tài)綻放,共鏈未來(lái)

    2024年3月28日,上海 - 國(guó)產(chǎn)高性能微控制器廠商上海半導(dǎo)體科技有限公司(半導(dǎo)體,HPMicro)攜手生態(tài)合作伙伴芯原、立功科技、順微電子和科宇盛達(dá),于上海浦東成功舉辦《
    的頭像 發(fā)表于 03-29 18:21 ?1070次閱讀

    毫厘中的絢爛綻放,攜手立功科技發(fā)布HPM6800數(shù)字儀表方案

    上海半導(dǎo)體科技有限公司(半導(dǎo)體,HPMicro)推出了國(guó)產(chǎn)高性能微控制器HPM6800系列
    的頭像 發(fā)表于 03-14 08:16 ?588次閱讀
    毫厘中的絢爛綻放,<b class='flag-5'>先</b><b class='flag-5'>楫</b>攜手立功科技發(fā)布<b class='flag-5'>HPM</b>6800數(shù)字儀表方案

    半導(dǎo)體攜手立功科技推出了國(guó)產(chǎn)高性能微控制器HPM6800系列

    上海半導(dǎo)體科技有限公司(半導(dǎo)體,HPMicro)推出了國(guó)產(chǎn)高性能微控制器HPM6800系列
    的頭像 發(fā)表于 03-13 12:24 ?886次閱讀
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半導(dǎo)體攜手立功科技推出了國(guó)產(chǎn)高性能微控制器<b class='flag-5'>HPM</b>6800<b class='flag-5'>系列</b>

    基于HPM5300 RISC-V內(nèi)核MCU的HPM5361EVK開發(fā)板測(cè)評(píng)效果(二)

    HPM5361EVK是基于HPM5300系列高性能RISC-V內(nèi)核MCU的一款開發(fā)板。
    的頭像 發(fā)表于 03-12 10:30 ?2952次閱讀
    基于<b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>HPM</b>5300 RISC-V內(nèi)核MCU的<b class='flag-5'>HPM</b>5361EVK開發(fā)板測(cè)評(píng)效果(二)

    HPM5361EVK開發(fā)板,網(wǎng)友測(cè)評(píng)效果(二)

    EEWORLD)的支持,本文整理了網(wǎng)友@qinyunti的優(yōu)秀報(bào)告,小伙伴們先睹為快!#1開發(fā)板介紹與視頻HPM5361EVK是基于HPM5300
    的頭像 發(fā)表于 03-12 08:16 ?2139次閱讀
    <b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>HPM</b>5361EVK開發(fā)板,網(wǎng)友測(cè)評(píng)效果(二)

    半導(dǎo)體推出了國(guó)產(chǎn)高性能微控制器HPM6800系列

    上海半導(dǎo)體科技有限公司(半導(dǎo)體,HPMicro)推出了國(guó)產(chǎn)高性能微控制器HPM6800系列
    的頭像 發(fā)表于 03-07 12:30 ?1309次閱讀
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半導(dǎo)體推出了國(guó)產(chǎn)高性能微控制器<b class='flag-5'>HPM</b>6800<b class='flag-5'>系列</b>

    芯原2.5D GPU IP賦能半導(dǎo)體HPM6800系列RISC-V MCU

    芯原股份(股票代碼:688521.SH)與半導(dǎo)體(簡(jiǎn)稱“”)的合作,為高性能圖形處理領(lǐng)域帶來(lái)了新的突破。
    的頭像 發(fā)表于 03-05 09:21 ?998次閱讀

    HPM5361EVK開發(fā)板試用體驗(yàn)】HPM5361EVK開發(fā)板的UART實(shí)踐與測(cè)試

    HPM5361EVK開發(fā)板簡(jiǎn)單給大家介紹一,HPM5300
    發(fā)表于 01-09 22:22