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ī)制有:
- Mailbox中斷;
- 基于共享內(nèi)存的消息隊(duì)列;
- POW + Group;
- FAU;支持原子的讀,寫(xiě),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)存空間,不管是ServiceExecutive應(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寫(xiě)入數(shù)據(jù),然后MAILBOX觸發(fā)中斷和寫(xiě)入關(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
-
處理器
+關(guān)注
關(guān)注
68文章
19409瀏覽量
231188 -
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121171 -
通信
+關(guān)注
關(guān)注
18文章
6071瀏覽量
136426 -
soc
+關(guān)注
關(guān)注
38文章
4204瀏覽量
219100
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
SoC的核間通信機(jī)制—mailbox介紹
![SoC的<b class='flag-5'>核</b><b class='flag-5'>間</b><b class='flag-5'>通信</b><b class='flag-5'>機(jī)制</b>—mailbox介紹](https://file1.elecfans.com/web2/M00/90/23/wKgZomTVohKAaMj3AAKECL9krk8390.jpg)
關(guān)于AM5728核間通信方式(共享內(nèi)存)問(wèn)題
非對(duì)稱(chēng)雙核MCU基礎(chǔ)知識(shí)及核間通信
關(guān)于C6678核間IPC通信的問(wèn)題
核間通信(IPC)解決方案
非對(duì)稱(chēng)雙核MCU基礎(chǔ)知識(shí)及核間通信
![非對(duì)稱(chēng)雙<b class='flag-5'>核</b>MCU基礎(chǔ)知識(shí)及<b class='flag-5'>核</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>](https://file1.elecfans.com//web2/M00/A6/29/wKgZomUMPAmATy-uAAALwZXHym0264.jpg)
一種基于Mailbox核間機(jī)制的多核處理系統(tǒng)
非對(duì)稱(chēng)雙核MCU基礎(chǔ)知識(shí)及核間通信
![非對(duì)稱(chēng)雙<b class='flag-5'>核</b>MCU基礎(chǔ)知識(shí)及<b class='flag-5'>核</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>](https://file.elecfans.com/web1/M00/48/3C/o4YBAFqngkeAZzVRAAAWrnTTB34845.jpg)
進(jìn)程間通信的機(jī)制有哪些
![進(jìn)程<b class='flag-5'>間</b><b class='flag-5'>通信</b>的<b class='flag-5'>機(jī)制</b>有哪些](https://file1.elecfans.com/web2/M00/8D/61/wKgZomS5-diAFKWTAACD0fU72WU615.jpg)
SoC核間通信的實(shí)現(xiàn)機(jī)制之mailbox中斷
![SoC<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>之mailbox中斷](https://file1.elecfans.com/web2/M00/A1/B3/wKgZomT29hOAayXPAAAfNghJigE256.png)
核間通信(IPC)的目標(biāo)和實(shí)現(xiàn)機(jī)制
![<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>](https://file1.elecfans.com/web2/M00/A4/41/wKgaomUBf8uAYIGHAAD_a-KLCmQ074.jpg)
如何實(shí)現(xiàn)一套linux進(jìn)程間通信的機(jī)制
![如何<b class='flag-5'>實(shí)現(xiàn)</b>一套linux進(jìn)程<b class='flag-5'>間</b><b class='flag-5'>通信</b>的<b class='flag-5'>機(jī)制</b>](https://file1.elecfans.com/web2/M00/AF/47/wKgZomVN0_GAbwDIAAAbRDU2xbo870.jpg)
評(píng)論