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

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

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

SoC核間通信的實(shí)現(xiàn)機(jī)制之mailbox中斷

jf_EksNQtU6 ? 來(lái)源: TrustZone ? 2023-09-05 17:29 ? 次閱讀

正文

目前很多芯片都會(huì)有幾個(gè)core核,有的是Cortex M0+、M4、M7、A53、A73等等,有的有著2核、3核、4核甚至6核8核,不同的核的主頻支持度不一樣,適用的具體應(yīng)用場(chǎng)景也不同,因此需要IPC(Inter-processor communication)來(lái)核間通信,進(jìn)行數(shù)據(jù)的交互。

核間通信(IPC)的主要目標(biāo)是:充分利用硬件提供的機(jī)制,實(shí)現(xiàn)高效的CORE間通信;給需要CORE間通信的應(yīng)用程序提供簡(jiǎn)潔高效的編程接口。

根據(jù)所使用的硬件特性,核間通信的實(shí)現(xiàn)機(jī)制有:

? ·Mailbox中斷

? ·基于共享內(nèi)存的消息隊(duì)列

cdba5968-382e-11ee-9e74-dac502259ad0.png

在這里插入圖片描述

cdd23a88-382e-11ee-9e74-dac502259ad0.png

在這里插入圖片描述

cdefc864-382e-11ee-9e74-dac502259ad0.png

在這里插入圖片描述

封裝-VRING-解析的過(guò)程:

1、應(yīng)用程序向給定目的地(CPU、端點(diǎn))發(fā)送消息

2、消息首先從應(yīng)用程序復(fù)制到兩個(gè)CPU之間使用的VRING。此后,IPC 驅(qū)動(dòng)程序在硬件郵箱中發(fā)布 VRING ID。

3、這會(huì)觸發(fā)目標(biāo) CPU 上的中斷。在目標(biāo) CPU 的 ISR 中,它提取 VRING ID,然后根據(jù) VRING ID 檢查該 VRING 中的所有消息。

4、如果收到消息,它從VRING中提取消息并將其放入目標(biāo)RPMSG端點(diǎn)隊(duì)列中。然后觸發(fā)在此 RPMSG 端點(diǎn)上阻止的應(yīng)用程序。

5、應(yīng)用程序處理接收到的消息,并使用相同的RPMSG 和VRING 機(jī)制在相反方向回復(fù)發(fā)送方CPU。

Hardware Mailbox

硬件郵箱主要用于提供具有小的 32 位有效負(fù)載的中斷事件通知。

VRING 使用硬件郵箱在目標(biāo) CPU 上觸發(fā)中斷。每個(gè)郵箱包含 16 個(gè)單向 HW 隊(duì)列,最多可連接 4 個(gè)通信用戶或 CPU。

J721E SoC 有 12 個(gè)硬件郵箱實(shí)例。即 12x 16 個(gè)硬件郵箱隊(duì)列。

cdfa71e2-382e-11ee-9e74-dac502259ad0.png

(硬件郵箱的邏輯框圖)

Mailbox and VRING

郵箱本質(zhì)上充當(dāng)一個(gè)非常小的硬件隊(duì)列,其中包含 VRING ID。

VRING 是共享內(nèi)存中的 SW 隊(duì)列,保存兩個(gè) CPU 之間傳遞的實(shí)際消息。當(dāng)收到中斷時(shí),郵箱消息會(huì)告知從哪個(gè) VRING 出列消息。

VRING ID=0 tells to look at the VRING from sender to receiver

VRING ID=1 tells to look at the VRING from receiver to sender

ce1358e2-382e-11ee-9e74-dac502259ad0.png

在這里插入圖片描述

散文

mailbox其實(shí)是多核處理器soc上,核與核之間互相發(fā)中斷的機(jī)制,由于核與核之間可能存在不同的業(yè)務(wù),故硬件上設(shè)計(jì)分配一兩個(gè)中斷已經(jīng)無(wú)法滿足業(yè)務(wù)的需求,軟件拓展起來(lái)很困難,所以mailbox可以理解為軟件可自由定義的中斷模塊。

用于在片上處理器之間通信的一種mailbox隊(duì)列中斷機(jī)制,mailbox隊(duì)列中斷機(jī)制允許軟件通過(guò)一組寄存器和關(guān)聯(lián)的中斷設(shè)置和得到信息在二個(gè)處理之間建立通信渠道。

核間通信的主要目標(biāo)是:充分利用硬件提供的機(jī)制,實(shí)現(xiàn)高效的CORE間通信;給需要CORE間通信的應(yīng)用程序提供簡(jiǎn)潔高效的編程接口。

根據(jù)所使用的硬件特性,核間通信可能的實(shí)現(xiàn)機(jī)制有:

1. Mailbox中斷;

2. 基于共享內(nèi)存的消息隊(duì)列;

3. POW + Group;

4. FAU;支持原子的讀,寫,fetch and add操作。

每個(gè)core有一個(gè)相應(yīng)的32bit的mailbox寄存器,每一位可被單獨(dú)地設(shè)置或清零。這對(duì)于core間的中斷非常有用,任意core可直接通過(guò)其它c(diǎn)ore 的mailbox對(duì)其它c(diǎn)ore發(fā)出中斷。當(dāng)mailbox被置位時(shí),相應(yīng)core的中斷寄存器也同時(shí)被置位,軟件可實(shí)現(xiàn)其中斷處理。

Bootloader支持Octeon_phy_mem_named_block_alloc( ),分配以名字命名的物理內(nèi)存空間,不管是Service Executive應(yīng)用程序還是linux kernel都可以通過(guò)Octeon_phy_mem_named_block_find( )找到這部分內(nèi)存,實(shí)現(xiàn)core之間的共享數(shù)據(jù)。

Linux kernel也提供了共享內(nèi)存的機(jī)制。主要有mmap(),系統(tǒng)V,Posix共享內(nèi)存模型等。系統(tǒng)調(diào)用mmap()通過(guò)映射一個(gè)普通文件實(shí)現(xiàn)共享內(nèi)存。普通文件被映射到進(jìn)程地址空間后,進(jìn)程可以向訪問(wèn)普通內(nèi)存一樣對(duì)文件進(jìn)行訪問(wèn)。系統(tǒng)V共享內(nèi)存指的是把所有共享數(shù)據(jù)放在共享內(nèi)存區(qū)域(IPC shared memory region),任何想要訪問(wèn)該數(shù)據(jù)的進(jìn)程都必須在本進(jìn)程的地址空間新增一塊內(nèi)存區(qū)域,用來(lái)映射存放共享數(shù)據(jù)的物理內(nèi)存頁(yè)面。posix共享內(nèi)存區(qū)首先指定一個(gè)名字參數(shù)調(diào)用shm_open,以創(chuàng)建一個(gè)新的共享內(nèi)存區(qū)對(duì)象或打開(kāi)一個(gè)以存在的共享內(nèi)存區(qū)對(duì)象。然后調(diào)用mmap把這個(gè)共享內(nèi)存區(qū)映射到調(diào)用進(jìn)程的地址空間。傳遞給shm_open的名字參數(shù)隨后由希望共享該內(nèi)存區(qū)的任何其他進(jìn)程使用。

核間通信方案

如下圖所示ARM核和DSP核進(jìn)行mailbox通信,ARM要發(fā)送數(shù)據(jù)給DSP:

? 1 ARM核先往某個(gè)指定的共享內(nèi)存空間buffer寫入數(shù)據(jù),然后MAILBOX觸發(fā)中斷和寫入關(guān)于共享內(nèi)存空間的地址信息給DSP。

? 2 DSP通過(guò)得到mailbox中斷的信息讀取共享內(nèi)存空間ARM核發(fā)送的buffer數(shù)據(jù)。

? 3 DSP核讀取完數(shù)據(jù)后將觸發(fā)mailbox中斷給ARM作為回應(yīng),告訴ARM核你發(fā)送的數(shù)據(jù)我已經(jīng)接受完成了。a

ce2ebab0-382e-11ee-9e74-dac502259ad0.png

在這里插入圖片描述

審核編輯:湯梓紅

聲明:本文內(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)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    456

    文章

    50889

    瀏覽量

    424248
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10873

    瀏覽量

    212022
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    899

    瀏覽量

    41530
  • Cortex
    +關(guān)注

    關(guān)注

    2

    文章

    202

    瀏覽量

    46514
  • IPC
    IPC
    +關(guān)注

    關(guān)注

    3

    文章

    348

    瀏覽量

    51942

原文標(biāo)題:參考資料:

文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SoC通信機(jī)制mailbox介紹

    目前很多芯片都會(huì)有幾個(gè)core,有的是Cortex M0+、M4、M7、A53、A73等等,有的有著2、3、4甚至68
    發(fā)表于 08-11 10:51 ?5831次閱讀
    <b class='flag-5'>SoC</b>的<b class='flag-5'>核</b><b class='flag-5'>間</b><b class='flag-5'>通信</b><b class='flag-5'>機(jī)制</b>—<b class='flag-5'>mailbox</b>介紹

    lpc54114雙通信--中斷

    ,純屬巧合。。。。雙mailbox通信,采用互斥鎖機(jī)制共享變量,同一時(shí)刻只能有一個(gè)核心訪問(wèn)這個(gè)變量,不用擔(dān)心變量被篡改了。還是在昨天研究的hello_world的基礎(chǔ)上更改,先上圖,
    發(fā)表于 04-19 13:58

    lpc54114雙通信--互斥

    本帖最后由 lee_st 于 2018-4-20 07:36 編輯 前個(gè)帖子實(shí)現(xiàn)中斷通信,本帖主要實(shí)現(xiàn)中斷情況下的互斥
    發(fā)表于 04-19 16:29

    關(guān)于AM5728通信方式(共享內(nèi)存)問(wèn)題

    您好,我使用的開(kāi)發(fā)板為AM5728,目前要在兩個(gè)ARM-Cotex-A15和兩個(gè)DSP上都應(yīng)用OS,初步定為都運(yùn)行SYS/BIOS,在這種情況下我們想實(shí)現(xiàn)實(shí)時(shí)、快速、可靠的通信。
    發(fā)表于 05-15 07:34

    關(guān)于C6678IPC通信的問(wèn)題

    測(cè)試C6678的通信,使用的IPC中斷的方式。中間看到在文檔中關(guān)于每個(gè)IPC生成寄存器中包含了28個(gè)源ID,源ID的作用取決于軟件的定義,是不是可以理解為我如果寫其中的源SRCS2
    發(fā)表于 08-03 07:15

    基于IPSoC接口技術(shù)

    是基于的免費(fèi)開(kāi)放的接口協(xié)議,可以根據(jù)不同IP通信要求進(jìn)行配置和擴(kuò)展,能夠實(shí)現(xiàn)硬件集成真正的即插即用,允許系統(tǒng)集成根據(jù)應(yīng)用需要選擇最好的IP
    發(fā)表于 06-11 05:00

    RT-thread內(nèi)核進(jìn)程通信設(shè)計(jì)實(shí)現(xiàn)

    1、RT-thread內(nèi)核進(jìn)程通信特性及使用場(chǎng)合介紹  rt-thread操作系統(tǒng)的IPC(Inter-ProcessCommunication,進(jìn)程同步與
    發(fā)表于 09-01 15:13

    通信(IPC)解決方案

    (Inter-processor Communication)機(jī)制。通信的主要目標(biāo)是,充分利用硬件提供的機(jī)制,
    發(fā)表于 11-03 07:26

    基于raspi 3b上的SMP設(shè)計(jì)實(shí)現(xiàn)

    實(shí)現(xiàn)多核調(diào)度功能:對(duì)于未綁定CPU的新線程開(kāi)始執(zhí)行或者未綁定CPU的線程從某個(gè)調(diào)度出來(lái)時(shí),會(huì)調(diào)用IPI接口通知其它進(jìn)行調(diào)度:該功能主要利用了MAILBOX
    發(fā)表于 12-05 13:56

    一種基于Mailbox機(jī)制的多核處理系統(tǒng)

    基于FPGA的嵌入式應(yīng)用在近幾年來(lái)作為一個(gè)比較新穎的課題,本文在研究各種通信機(jī)制的基礎(chǔ)上,提出了一種基于Mailbox
    發(fā)表于 11-22 17:31 ?1.3w次閱讀

    Jacinto7 TDA4VM處理器的通信解決方案

    (Inter-processor Communication)機(jī)制。通信的主要目標(biāo)是,充分利用硬件提供的機(jī)制,
    的頭像 發(fā)表于 07-01 12:04 ?8771次閱讀
    Jacinto7 TDA4VM處理器的<b class='flag-5'>核</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>解決方案

    Jacinto 7通信解決方案

    (Inter-processor Communication)機(jī)制。通信的主要目標(biāo)是,充分利用硬件提供的機(jī)制,
    的頭像 發(fā)表于 03-16 09:19 ?1209次閱讀
    Jacinto 7<b class='flag-5'>核</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>解決方案

    通信(IPC)的目標(biāo)和實(shí)現(xiàn)機(jī)制

    的應(yīng)用程序提供簡(jiǎn)潔高效的編程接口。 根據(jù)所使用的硬件特性,通信實(shí)現(xiàn)機(jī)制有: ? ·Mailbox
    的頭像 發(fā)表于 09-13 17:32 ?3409次閱讀
    <b class='flag-5'>核</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>(IPC)的目標(biāo)和<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>機(jī)制</b>

    SoC通信機(jī)制硬件郵箱

    連接 4 個(gè)通信用戶或 CPU。 J721E SoC 有 12 個(gè)硬件郵箱實(shí)例。即 12x 16 個(gè)硬件郵箱隊(duì)列。 (硬件郵箱的邏輯框圖) Mailbox and VRING 郵箱本質(zhì)上充當(dāng)一個(gè)非常
    的頭像 發(fā)表于 09-13 17:35 ?1075次閱讀
    <b class='flag-5'>SoC</b>的<b class='flag-5'>核</b><b class='flag-5'>間</b><b class='flag-5'>通信</b><b class='flag-5'>機(jī)制</b>硬件郵箱

    通信可能的實(shí)現(xiàn)機(jī)制

    理解為軟件可自由定義的中斷模塊。 用于在片上處理器之間通信的一種mailbox隊(duì)列中斷機(jī)制,mailbo
    的頭像 發(fā)表于 09-13 17:39 ?1265次閱讀
    <b class='flag-5'>核</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>可能的<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>機(jī)制</b>