找回密码
 注册
关于网站域名变更的通知
查看: 568|回复: 1
打印 上一主题 下一主题

技术干货 | DSP多核IPC通信案例开发手册

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-4-21 16:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 Tronlong123 于 2021-4-21 16:33 编辑 ! Z3 b7 n' \7 y+ F( O

& t& ^% k( }; w; s8 z5 a
TI-IPC(Inter-Processor Communication)组件提供与处理器硬件无关的API,可用于多核处理器核间通信、同一处理器进程间通信和设备间通信。TI-IPC支持MessageQ、Notify和SharedRegion等常用的IPC模块,支持Shared Memory、Multicore Navigator和SRIO三种传输方式。
基于RTOS的多核IPC通信案例位于产品资料“4-软件资料\Demo\DSP_Demo\RTOS-demos\”路径下。案例目录说明如下表,其中bin目录存放程序可执行文件,project目录存放案例工程源文件。
表 1
目录
文件/目录
说明
bin
xxx.out
程序可执行文件
project
xxx.c
程序源码文件
xxx.cfg
RTSC配置文件
driver
驱动文件存放目录
system
平台文件存放目录
.ccsproject/.cproject/.project
CCS工程文件

+ P7 u3 t; h! t7 ~' o6 H- L7 ~! y/ W
1 r: {' Q  R! d9 D
本文档案例程序默认使用DSP端主频为1GHz的核心板,通过TL-XDS200仿真器加载运行进行操作效果演示。请通过Micro USB线将调试串口与PC机进行连接,打开串口调试终端SecureCRT并正确连接DSP端调试串口。
) L' i0 I3 K0 G4 m5 s. o1 W. P
1  shmIpcBenchmark案例1.1 案例说明
案例功能:C66xx_0核心向C66xx_1核心发送消息后,C66xx_1核心将收到的消息回传至C66xx_0核心。底层通过IPC的Shared Memory共享内存方式实现核间通信。
编辑
搜图

6 s/ [5 d( u$ ?; U. D) c9 Z! ~2 _8 g  Q. N' o7 D

* D- b* L/ A2 x# ]1 j6 ]
图 1
% }/ _2 z. O) A
1.2 案例测试
将程序可执行文件分别加载至C66xx_0~C66xx_1核心后,再依次运行C66xx_0和C66xx_1核心程序,DSP端串口调试终端将会分别打印C66xx_0核心向C66xx_1核心发送单个消息的往返延迟(由C66xx_0核心统计),以及C66xx_0核心以突发方式将所有消息发送至C66xx_1核心的数据吞吐量(由C66xx_1核心统计)。

' q! y5 i" p; q4 K4 z  k
编辑
搜图
8 v1 |. R# v5 Z' J/ q9 X
* Y. ?+ a) `2 ?& ?# L6 J. D% H
( |1 t& X: c. t7 |
图 2

! U. x6 n5 F  p0 e) m
编辑
搜图
/ t6 p8 ?- Y9 p

) v! p8 T$ D; Q! i% K" w$ ?4 h1 g! L5 ~( G( {2 ^
图 3
% N% `* I0 J* T5 G3 O
1.3 关键代码
(1) 初始化C66xx_0核心,并等待C66xx_1核心初始化完成与连接成功。
' L9 a1 c2 l" Y# u; l
编辑
搜图
' ]6 Q4 L+ N+ Q8 H

5 [* y1 L# [' I- n5 J, x1 C! G) i4 Z8 B1 R1 `, ~7 F5 g9 H+ ^9 y
图 4
(2) C66xx_0与C66xx_1核心分别创建MessageQ。* c1 l3 g" X$ b- x% V5 y- B
1 d% r! f' a, H+ ^( X4 n3 t# q
编辑
搜图
- ?& p/ M: _+ C3 g, W

( P9 {" ~7 f4 ~& C( R8 B
4 v2 H2 s7 Y) ~
图 5
(3) 动态创建任务shmIpcBenchmark。8 l6 c+ u; W) s5 B% y

+ v' Q  W. l1 o$ y& c
编辑
搜图
+ w8 p7 g* |. D9 n# J

' Q, N5 N' k% R" ?" U9 g/ s
& A9 A1 ]% N0 B3 @& k& q
请点击输入图片描述(最多18字)
图 6

- _; N1 j* R- X& X8 B. Q6 e
(4) 注册HEAP_ID,并分别打开另一核心的MessageQ。
2 f- n- F  t7 J9 T& l6 w1 S1 M: V
编辑
搜图

+ s" G1 j6 G5 |0 I" k4 E# m, T
2 P+ h$ E  E" i2 Y# o
& |8 h( X( W6 V" c
图 7
(5) 测试C66xx_0核心至C66xx_1核心的消息传输往返延迟。% W; w! M/ _9 s0 F7 L% O

6 Z; f3 X! f5 R
编辑
搜图

# {5 \. V2 _" d  ^$ |- i( h6 X- J- O
7 r! @( K  G( ^9 n, V  e3 R
图 8
(6) C66xx_0核心以突发方式将所有消息发送到C66xx_1核心,C66xx_1核心接收所有消息并统计数据吞吐量。
2 ~5 |. ~) m  n9 }
7 X2 V) ^/ c5 q- a( C, e
编辑
搜图
* E) S* y- b" z. }/ b! j
1 b+ a; @3 ^. A7 H" q

' a4 q4 B9 B2 J
图 9

* y0 H4 P0 C1 Z% a8 ?3 w3 \
编辑
搜图
% X7 \) I# Q9 R# G; G( A

* V+ ]& Z( f* L% K  L  ?( c! z" ~, }% A9 {$ f. b  A
图 10
(7) 通过宏定义NUM_MSGS_TO_PREALLOC设置突发模式下的Message发送数量,并同步修改Program.global.shmSize的值大于(NUM_MSGS_TO_PREALLOC x 128)。
. U+ q  Q+ q5 p& Y8 n; |( i

. z# _/ [; y% d7 u
编辑
搜图

. m) O7 J! C' a; y# Q3 R( g
5 f8 L$ o. g5 C* z# X+ x* {7 h; |( S( d# q' c- B2 P4 s( A$ |1 }
图 11
+ \3 h5 \4 z* W2 r  K
编辑
搜图

- z/ M- \4 J" x4 f7 R* L& W4 x2 o3 R4 |" W2 m0 D) |5 y: a4 _
. ~! I' L; j( J& T% M' L0 T
图 12 project\shmIpcBenchmark.cfg
2  qmssIpcBenchmark案例2.1 案例说明
案例功能:C66xx_0核心向C66xx_1核心发送消息后,C66xx_1核心将收到的消息回传至C66xx_0核心。底层通过IPC的Multicore Navigator(QMSS多核导航)方式实现核间通信。
编辑
搜图
' ~, R$ f* q2 U8 a) {5 [
: R& i: _' @0 b7 J( u3 `. `4 R: R1 t+ s

) B( b( M8 Q  g1 O2 Q: Y: a
图 13
将程序可执行文件分别加载至C66xx_0~C66xx_1核心后,再依次运行C66xx_0和C66xx_1核心程序,DSP端串口调试终端将会分别打印C66xx_0核心向C66xx_1核心发送单个消息的往返延迟,以及C66xx_0核心以突发方式将所有消息发送至C66xx_1核心的数据吞吐量。
. b; }8 F/ N, \9 N" |  P+ t! z
编辑
搜图
# a+ q3 X  m+ V' i

1 I6 h. {. ?4 n+ J. N1 l, c% J* y/ M1 H6 X6 B% i+ ^0 H
图 14

$ S2 g0 u# l  S  u7 T/ k6 R2 c
编辑
搜图
: [5 A* t0 M& ]2 G5 Y+ m7 i
3 }  K" l7 D8 l' c# \, I2 s

$ O) ?3 H! k* Y$ Z( q, q
图 15
2.3 关键代码
(1) 动态创建任务qmssIpcBenchmark。
1 N7 [; Z8 C  h  H
编辑
搜图

' {  d' Z* A% P. p/ t, q2 ~, e3 ~8 p0 d. v
. D+ J7 J& `" b' L/ x+ p
请点击输入图片描述(最多18字)
编辑
搜图
/ d, r' D* h+ }  x6 _
3 ~% j+ h) ^  E( d6 z9 F

& l( |- e# b( B: F# j5 t) I
图 16
(2) 初始化C66xx_0核心,并等待C66xx_1核心初始化完成与连接成功。
8 a& W2 s! |( [9 L
% H) E+ |. }4 J7 n  J
编辑
搜图

  a3 C6 p+ r. Q+ R( s, Y, g" s) ~, n) L

* T' s3 j, Q" K( a$ U' n6 V
图 17
(3) C66xx_0与C66xx_1核心分别创建MessageQ。
+ U+ ^& w- ~) ^; N: f) y/ O
编辑
搜图

+ R6 H- w) Q7 Z8 W/ R
* {  |7 S+ p0 U# _; S4 G! Y$ s0 o# m- v) z* S
图 18
(4) 注册HEAP_ID,并分别打开另一核心的MessageQ。8 ~! R4 g1 o% R3 S7 N3 A: l% I
* q# W& q2 B& R8 r
编辑
搜图
5 C8 V! G* z. N5 r; S3 j0 \
/ x3 K' w6 q9 |9 u7 E# z
+ w5 N4 i7 D' a/ Y2 s5 e
图 19
(5) 测试C66xx_0核心至C66xx_1核心的消息传输往返延迟。
1 J9 X2 h5 W) K' V7 Q6 p  i7 k

( b8 O6 x# z6 r0 Q
编辑
搜图
; o* o% c0 x, _! a$ N1 k9 k

$ _6 G' T4 t3 ]( g* q4 y$ \2 x1 U图片重复,建议替换或删除×
, F. k2 U, i+ I& w( C' `3 n
/ s! D! B8 }  H7 a1 E+ ^. h& l1 `5 d
9 l9 n$ `, k7 N, n% E

+ I; t0 Q/ N5 i8 z! W1 {. H
请点击输入图片描述(最多18字)
编辑
搜图

3 u  S6 w0 [! B( g
+ d+ @6 o# H/ \9 Q5 m7 \6 @# H9 T* y1 Z$ \; j+ r
图 20
3 i$ B2 c& Z$ x
编辑
搜图
1 W3 U6 _% w2 n% [+ O  R! z
" _6 H3 B2 n" D2 c
" l4 j2 B' H) [1 G5 m
图 21
/ X  A8 Q7 o( w2 }5 f+ A- x$ K
(6) C66xx_0核心以突发方式将所有消息发送到C66xx_1核心,C66xx_1核心接收所有消息并统计数据吞吐量。
6 v* H) r! X, M$ f0 m4 ]
编辑
搜图
! o* U+ o& o4 A4 w: U- a

- j/ Q. m; N2 o% Y: Z* B0 v8 t0 Q# i" a3 q0 W
图 22
+ z4 m- A$ T% r& o/ O
编辑
搜图
4 F  {& i2 B+ Z; U; }& O3 f

2 X* s7 i4 v0 h
2 c+ D( i  z5 U9 Z
图 23
2 ~' e& W3 h5 e3 y/ y& G
编辑
搜图
0 z/ x1 Z' y* n2 h9 y% p: x
2 g3 I" h6 B. ~2 U, ~6 J

. x8 L9 I: u1 C& r; ^
图 24
(7) 通过宏定义NUM_MSGS_TO_PREALLOC设置突发模式下的Message发送数量,并同步修改Program.global.shmSize的值大于(NUM_MSGS_TO_PREALLOC x 128)。

; i, s$ F- o6 X5 e' `. Y) G
编辑
搜图
/ i- w- T, O7 \: Q) d5 G
9 ?5 e) ]2 r: V
图片重复,建议替换或删除×# O& M  g! w3 b4 U
, k. Z2 E4 y- g  C7 I
1 g7 Q% J) d6 L& H" g& f, n$ U
2 v- k) q# A% G) y" O9 ^
图 25
( z( I1 H% i- @
编辑
搜图
- I# e" [& U: x+ L( ]; G
) @" s& W( C3 y; d6 q
# Y: K2 w5 P4 S+ B$ }' x, x, a4 [
图 26 project\qmssIpcBenchmark.cfg

! Y4 j$ y- q4 C' K5 g! m8 V' i3  srioIpcBenchmark案例3.1 案例说明
案例功能:C66xx_0核心向C66xx_1核心发送消息后,C66xx_1核心将收到的消息回传至C66xx_0核心。底层通过IPC的SRIO方式实现核间通信。

( Y2 a$ f3 S3 F- K+ Y
编辑
搜图
& c9 A' N7 B+ v7 A. x) ^2 S2 t
# c. g; ]+ s, `' {0 a& F
, `- e# @1 e# k- p. p( i) F' H; D: w
图 27
3.2 案例测试
将程序可执行文件分别加载至C66xx_0~C66xx_1核心后,再依次运行C66xx_0和C66xx_1核心程序,DSP端串口调试终端将会分别打印C66xx_0核心向C66xx_1核心发送单个消息的往返延迟,以及C66xx_0核心以突发方式将所有消息发送至C66xx_1核心的数据吞吐量。
编辑
搜图

- Z. x( f  K# {! |; P* T9 X
, k( i- n- T, l) F/ r- P6 h! ]0 n1 V
图 28
  W6 V- r0 |6 d  `' O. j! f
编辑
搜图

8 u3 z) K% _. P
- L" D9 d! E9 C) Z% s
9 s# u7 t. A: W
图 29
3.3 关键代码
(1) 初始化C66xx_0核心,并等待C66xx_1核心初始化完成与连接成功。
编辑
搜图

' m1 K. ~4 N( h7 A7 ]6 [; c: C8 {
6 q& D* ^" k+ ~; ], n# g3 ^1 X4 T6 ^2 G  W# i
图 30
(2) C66xx_0与C66xx_1核心分别创建MessageQ。
( ?, [' a3 F/ s+ j% Y2 Q! Y
" r: m* t  @+ }; z1 N. j' V
编辑
搜图

2 y/ _1 f& E. n0 ~3 I7 U- F
" o* v9 S1 N) `; A5 K5 L- U7 R& ~' c
图 31
(3) 动态创建任务srioIpcBenchmark。
编辑
搜图
( L2 g- N8 [- e- I, x- C

, _' Q" h  p$ V- B- d- {' Q5 |4 H, r! b8 z
图 32
(4) 注册HEAP_ID,并分别打开另一核心的MessageQ。
编辑
搜图

2 H4 n- K( F- N8 Y8 Q3 E3 b, f9 Z3 h2 z1 `7 ~6 V* O3 }* y9 J- `& i) c
3 Z+ Z! s5 _2 g2 L
图 33
(5) 测试C66xx_0核心至C66xx_1核心的消息传输往返延迟。9 c, {1 w0 U  f9 |3 j$ D7 Z
9 w# B( T* `$ r
编辑
搜图

" x4 `! u; p* d
. }" n; Z3 j1 }9 t1 M8 p
" I7 d8 V' U( G6 F
图 34

+ V( F0 X$ D0 T. i% B) t& l
编辑
搜图

4 s! a) n+ K$ W5 V! O# y2 V( ]5 l5 D) V9 [' ?
# U. K5 j- e6 I6 D
图 35
(6) C66xx_0核心以突发方式将所有消息发送到C66xx_1核心,C66xx_1核心接收所有消息并统计数据吞吐量。! Z1 a2 c" }0 B3 a' q0 Y

" f$ U4 T- u: x" b1 o7 r
编辑
搜图

6 ^$ f' w' j3 |3 o6 o' K; v1 b5 }, ]6 ], p
4 E1 Y0 w; `; U
​图 36
编辑
搜图

! }6 O' D) k. |) s3 z
3 A: C; W5 y+ r" |  D* H; l- q7 l% A3 n8 l
图 37
编辑
搜图
% z' \8 P9 {' ]& C- g4 H- p

: C" m, j# X/ c1 I, W8 G3 |3 q* t4 K: Z' C/ Q/ X% \* h# c/ K* E
图 38
编辑
搜图
( R4 e; v+ L/ N% e3 O1 t
! r: U! k) x' J4 o- \
- x) L- Q0 y2 X6 d! S
图 39
(7) 通过宏定义NUM_MSGS_TO_PREALLOC设置突发模式下的Message发送数量,并同步修改Program.global.shmSize的值大于(NUM_MSGS_TO_PREALLOC x 128)。
编辑
搜图

  p  n! X7 m3 @7 y/ J" Q
+ {/ z- H; e3 U3 p8 h& @
. ^0 [- j2 F& Q( j& M* X
图 40
/ I5 U" Q+ b7 n# `8 O, o$ b, A% r) I
编辑
搜图
& ~4 Z4 v' R% z3 |, e7 |
7 r$ ^8 Q7 i: K5 l4 w5 y) M
- m- {9 G. I  i& x8 r4 o" z3 d
图 41

! U3 `7 F% s8 ~
$ L* o' F) |$ z# }, m/ d/ k5 n* _! f. s* N1 g8 h& z6 |

欢迎各位嵌入式工程师点击下方链接或扫码二维码获取产品资料。

. f* F" w  w1 r4 b+ @( p# M

http://site.tronlong.com/pfdownload

- C  x0 R  W1 ^; _, Y; c, F# r
备注:如需购买评估板+模块,请与我司联系。案例源码需购买方提供。

( E" s0 j! e- O" K

: ]3 b- \/ `( @5 [. e9 ^  D
更多帮助
销售邮箱:sales@tronlong.com
技术邮箱:support@tronlong.com
创龙总机:020-8998-6280
技术热线:020-3893-9734
创龙官网:www.tronlong.com
技术论坛:www.51ele.net
线上商城:https://tronlong.taobao.com

: G) i2 G8 ^" b; J5 D
5 N. w+ ^* q$ D  h) L

. l  I0 h; o* x6 v6 o* o* P
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2021-4-23 17:38 | 只看该作者
    DSP多核IPC通信案例开发手册
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-28 20:54 , Processed in 0.125000 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表