找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1933|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

如何用TI KeyStone TMS320C6678處理器進(jìn)行TI-IPC多核通信案例

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:336245 發(fā)表于 2021-1-25 19:58 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
如何用TI KeyStone TMS320C6678處理器進(jìn)行TI-IPC多核通信案例本文基于創(chuàng)龍科技TL6678-EasyEVM評(píng)估板進(jìn)行演示。





圖1TL6678-EasyEVM評(píng)估板
TL6678-EasyEVM是一款基于TI KeyStone架構(gòu)C6000系列TMS320C6678八核C66x定點(diǎn)/浮點(diǎn)高性能處理器設(shè)計(jì)的高端多核DSP評(píng)估板,由核心板與底板組成。核心板經(jīng)過(guò)專業(yè)的PCB Layout和高低溫測(cè)試驗(yàn)證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。
評(píng)估板接口資源豐富,引出雙路千兆網(wǎng)口、SRIO、PCIe等高速通信接口,方便用戶快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。


開(kāi)發(fā)案例主要包括:Ø
(1) 裸機(jī)開(kāi)發(fā)案例
(2) RTOS(SYS/BIOS)開(kāi)發(fā)案例
(3) IPC、OpenMP多核開(kāi)發(fā)案例
(4) SRIO、PCIe、雙千兆網(wǎng)口開(kāi)發(fā)案例
(5) 圖像處理開(kāi)發(fā)案例
(6) DSP算法開(kāi)發(fā)案例
(7) 串口、網(wǎng)絡(luò)遠(yuǎn)程升級(jí)開(kāi)發(fā)案例
案例源碼、產(chǎn)品資料(用戶手冊(cè)、核心板硬件資料、產(chǎn)品規(guī)格書)可site.tronlong.com/pfdownload獲取。



1.1 TI-IPC簡(jiǎn)介

TI-IPC(Inter-Processor Communication)是組件提供與處理器硬件無(wú)關(guān)的API,可用于多核處理器核間通信、同一處理器進(jìn)程間通信和設(shè)備間通信。API支持消息傳遞、流和鏈接列表,它們?cè)趩翁幚砥骱投嗵幚砥髦信渲镁杉嫒荨?/font>
TI-IPC被設(shè)計(jì)在運(yùn)行SYS/BIOS應(yīng)用程序的處理器上使用,一般為DSP處理器(如TMS320C6678、TMS320C6657),但在某些情況下亦可能是ARM處理器。







圖2
IPC常見(jiàn)的通信模塊如下:


表1
Ipc
提供Ipc_start()函數(shù),并允許配置啟動(dòng)順序
MessageQ
大小可變的消息傳遞模塊
Notify
以中斷方式實(shí)現(xiàn)輕量數(shù)據(jù)傳輸?shù)哪K
ListMp
用于實(shí)現(xiàn)對(duì)鏈接列表的互斥訪問(wèn)
GateMp
用于實(shí)現(xiàn)對(duì)共享資源的互斥訪問(wèn)
HeapBufMp
大小固定的共享內(nèi)存堆
HeapMenMp
大小可變的共享內(nèi)存堆
SharedRegion
用于維護(hù)共享內(nèi)存區(qū)域
List
用于創(chuàng)建雙向鏈接列表
MultiProc
用于管理多核處理器核心ID
NameServer
用于應(yīng)用程序基于本地名稱檢索,以及存儲(chǔ)變量值







圖3




1.2 常用模塊

1.2.1 MessageQ

該模塊具有如下特點(diǎn):
(1) 兼容性強(qiáng),可在不更改運(yùn)行代碼的情況移植至另一個(gè)支持TI-IPC MessageQ的處理器或其他傳輸層(如Shared Memory、Multicore Navigator、SRIO)。
(2) 支持可變長(zhǎng)度消息的結(jié)構(gòu)化發(fā)送與接收。
(3) 單個(gè)MessageQ隊(duì)列支持單個(gè)reader和多個(gè)writer。
(4) 消息接收支持超時(shí)機(jī)制。
(5) reader可根據(jù)消息頭部信息對(duì)writer進(jìn)行確認(rèn)后再回復(fù)。
(6) Ipc_start()會(huì)幫助用戶完成下圖中灰色框內(nèi)的功能,用戶僅需關(guān)注紅色框中的內(nèi)容即可。





圖4


MessageQ通過(guò)消息隊(duì)列發(fā)送和接收消息。reader是一個(gè)從消息隊(duì)列中讀取消息的線程,writer是一個(gè)將消息寫入消息隊(duì)列的線程。每個(gè)消息隊(duì)列都有一個(gè)reader,但可有多個(gè)writer。


n reader:調(diào)用MessageQ_create()、MessageQ_get()、MessageQ_free()和MessageQ_delete()。
n writer:調(diào)用MessageQ_open()、MessageQ_alloc()、MessageQ_put()和MessageQ_close()。
MessageQ常見(jiàn)的工作流程如下所示。

圖5


下面以多核IPC通信的shmIpcBenchmark案例為例,分析代碼中MessageQ的使用,見(jiàn)圖中注釋。

圖6

圖7


1.2.2 Notify該模塊具有如下特點(diǎn):
(1) 可獨(dú)立于MessageQ模塊進(jìn)行使用。
(2) 著重于多核通知功能,是更為簡(jiǎn)單的多核通信形式。

圖8


(3) 僅可基于Shared Memroy方式進(jìn)行使用。

圖9


Notify通過(guò)硬件中斷傳輸消息,Receiver注冊(cè)Notify事件中斷,Sender通過(guò)Notify發(fā)送事件中斷,從而實(shí)現(xiàn)通知并攜帶小量消息的目的。


n Receiver:調(diào)用Notify_registerEvent()注冊(cè)事件中斷服務(wù)函數(shù)。
n Sender:調(diào)用Notify_sendEvent()發(fā)送事件中斷。
Notify常見(jiàn)的工作流程如下所示。





圖10


1.3 物理傳輸方式

TI-IPC的數(shù)據(jù)傳輸需結(jié)合特定物理硬件與底層驅(qū)動(dòng),方可實(shí)現(xiàn)兩個(gè)線程在同一個(gè)設(shè)備或跨設(shè)備間進(jìn)行通信。常用三種的物理傳輸方式包括Shared Memory、Multicore Navigator和SRIO,具體說(shuō)明如下。


表2
傳輸方式
優(yōu)點(diǎn)
缺點(diǎn)
Shared Memory
使用簡(jiǎn)單,速率較高
僅可用于單個(gè)設(shè)備IPC通信,可能與其他使用Shared Memory的任務(wù)存在競(jìng)爭(zhēng)
Multicore Navigator
速率最高,消耗CPU周期最少
僅可用于單個(gè)設(shè)備IPC通信
SRIO
可用于跨設(shè)備IPC通信
速率最低


下圖為使用Multicore Navigator、SRIO的API調(diào)用流程,用戶僅需關(guān)注MessageQ部分操作即可,其他模塊均由系統(tǒng)自動(dòng)調(diào)用。

圖11



圖12
現(xiàn)可向廠家免費(fèi)申請(qǐng)TL6678-EasyEVM評(píng)估板進(jìn)行快速評(píng)估,免費(fèi)哦!
tronlong.com/Product/show/9.html
TMS320C6678 DSP討論:79635273、332643352


更多推薦C6678+K7視頻采集處理方案



圖13


FPGA+DSP的高速AD采集處理開(kāi)發(fā)詳解









分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表