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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Tronlong123 于 2021-4-21 16:33 编辑 1 ^  g* X  O* ?4 K% G: B% O6 e# ]* ?

- `, b3 C' l" w/ w6 n
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工程文件
; g% z4 m$ c2 y' J: p: T4 s1 Y7 Z
* K# d  A  U# G$ L& b' |
本文档案例程序默认使用DSP端主频为1GHz的核心板,通过TL-XDS200仿真器加载运行进行操作效果演示。请通过Micro USB线将调试串口与PC机进行连接,打开串口调试终端SecureCRT并正确连接DSP端调试串口。
3 P* h& c. r2 l
1  shmIpcBenchmark案例1.1 案例说明
案例功能:C66xx_0核心向C66xx_1核心发送消息后,C66xx_1核心将收到的消息回传至C66xx_0核心。底层通过IPC的Shared Memory共享内存方式实现核间通信。
编辑
搜图

2 p6 x: d2 G' g
6 ]( J2 h1 [* K- O, S$ P; e& ^2 N- M5 U6 ^
图 1

$ G4 F1 `, L) F* m8 ~& F1.2 案例测试
将程序可执行文件分别加载至C66xx_0~C66xx_1核心后,再依次运行C66xx_0和C66xx_1核心程序,DSP端串口调试终端将会分别打印C66xx_0核心向C66xx_1核心发送单个消息的往返延迟(由C66xx_0核心统计),以及C66xx_0核心以突发方式将所有消息发送至C66xx_1核心的数据吞吐量(由C66xx_1核心统计)。

. d8 i8 v5 X3 E$ p( j" `7 ]
编辑
搜图
# T- U/ e4 {' e) C# s8 w+ ~

; h8 D. n4 l! A( J8 ?& f
; b+ o% H" s+ x7 I- X$ M
图 2

- |( M( J" B. \" d
编辑
搜图

/ C! L# @3 h, N4 ~% d1 \; L- o: B; e6 J  i, m$ D( p  Q
8 p7 h9 k4 W1 t# Y6 F
图 3

4 R7 T% U4 G  G' R8 ?1.3 关键代码
(1) 初始化C66xx_0核心,并等待C66xx_1核心初始化完成与连接成功。

* _! T/ h4 u; z' V2 @  A
编辑
搜图

& N" |1 M4 P1 ~$ `$ o: S# j; M
, U; K$ C& @( b5 M8 f9 {! Q) J3 I
图 4
(2) C66xx_0与C66xx_1核心分别创建MessageQ。  V) |) L; f3 f8 S

, {5 ~. Y9 e, p) y0 j( [5 J
编辑
搜图

( ^7 o! f" ^6 k$ p1 ]4 ~( ~1 V, K3 }5 P
* y/ P( M, X' u
图 5
(3) 动态创建任务shmIpcBenchmark。
( h  f2 i( x. v

0 i" Q% B8 y9 r6 r2 P+ K
编辑
搜图

* S/ `2 P; w/ X5 s+ e8 t
1 Y- s$ }$ g. G4 `( O3 l) U* V7 l' D3 P7 F/ i
请点击输入图片描述(最多18字)
图 6

- L' m; l  c7 g, F
(4) 注册HEAP_ID,并分别打开另一核心的MessageQ。

4 m6 o( {: K8 f' ~
编辑
搜图

0 N0 t8 w! p& [  o4 L' j. d: y' N, V! I$ h  {- c
2 s5 I" h% q  q* d
图 7
(5) 测试C66xx_0核心至C66xx_1核心的消息传输往返延迟。( }6 ]3 g) \! T' E4 f
+ [, |9 v; r1 ~7 _# p
编辑
搜图
) O8 ^1 a( ^$ O4 F$ Y
$ i1 _" n7 Y; t6 v) O4 a% O

/ W( J8 B6 m3 ?& I* M
图 8
(6) C66xx_0核心以突发方式将所有消息发送到C66xx_1核心,C66xx_1核心接收所有消息并统计数据吞吐量。/ C$ m0 b2 y. O" x/ L' T3 J
7 }/ J* k3 Q% k% p% c, q+ \
编辑
搜图
% l; b% f# X/ D6 P

0 A  ?' Q8 W2 C0 [) A1 R
( s5 y: u0 L4 o# M
图 9

' H# E) w. r6 l- \, L8 B# \
编辑
搜图

8 n/ y1 M, x5 e: t7 V( r$ S# ~7 ~- v  _4 P
4 A+ L, y: B! \8 {8 b3 z% U
图 10
(7) 通过宏定义NUM_MSGS_TO_PREALLOC设置突发模式下的Message发送数量,并同步修改Program.global.shmSize的值大于(NUM_MSGS_TO_PREALLOC x 128)。$ F1 }* X; U0 I# P  n7 Z! H9 ^- ]

( T/ N% R  @( Z1 d5 X1 n4 Z
编辑
搜图

' K( k4 o% _5 c0 C7 Q- {6 }, b8 o; u0 r7 E
. v/ S$ H  N0 A- m
图 11
* a  b. z7 u; b! }9 r# \$ S- O
编辑
搜图
1 ^6 g" Y, R4 e$ v) P
9 W* h( D* X* E9 P* H

0 p8 L, `4 D6 b2 a8 T  W, [
图 12 project\shmIpcBenchmark.cfg
2  qmssIpcBenchmark案例2.1 案例说明
案例功能:C66xx_0核心向C66xx_1核心发送消息后,C66xx_1核心将收到的消息回传至C66xx_0核心。底层通过IPC的Multicore Navigator(QMSS多核导航)方式实现核间通信。
编辑
搜图
# g* Z' B+ P+ {1 g/ Q
# V. E! }# `5 T6 \& ]/ O% N
& {' A5 N7 ]5 m( ?1 |( \: b$ ?  v4 }
图 13
将程序可执行文件分别加载至C66xx_0~C66xx_1核心后,再依次运行C66xx_0和C66xx_1核心程序,DSP端串口调试终端将会分别打印C66xx_0核心向C66xx_1核心发送单个消息的往返延迟,以及C66xx_0核心以突发方式将所有消息发送至C66xx_1核心的数据吞吐量。' {& a0 B, ?  [9 B
编辑
搜图
5 w5 }9 f) l5 `
% e: f) A/ D( f: y5 ~! q
% F' @! W0 m) Y  q7 i
图 14

8 ~9 \; }" X$ z4 v7 L! w# S
编辑
搜图
$ Q" c% C8 Y: q# X
6 {3 t5 G" K! x! x9 H' P& n8 y# V
( P& Q  U2 b1 R3 R- b. H% g
图 15
2.3 关键代码
(1) 动态创建任务qmssIpcBenchmark。

3 B: S. p/ [" @) [  L: P  Q
编辑
搜图
6 i0 B. I7 s, T# n$ {$ M# o
( Z3 D& j" t/ K8 ]3 U

3 c' w" J! Q5 s
请点击输入图片描述(最多18字)
编辑
搜图
) B9 p) w* l& M4 Z: S! p
- U2 Q9 C: ?. i  T3 P. g

! ?! a2 R5 f. A5 A  \1 _) d
图 16
(2) 初始化C66xx_0核心,并等待C66xx_1核心初始化完成与连接成功。& F/ O2 S& c' {6 m( f+ C5 |0 \

5 s3 r* W6 a) M8 m7 h
编辑
搜图
) ^: C# O- B, r

( q: M; _& I; b4 j( o. s( t  g0 q; W0 h
图 17
(3) C66xx_0与C66xx_1核心分别创建MessageQ。' S' N  P8 v3 h. @" u" n
编辑
搜图
6 n. Z( m1 J  e7 k8 F. ~* R0 |+ l/ b

  b$ a) b5 U0 ]2 Q( `+ w
7 A# d2 O" j7 H" S
图 18
(4) 注册HEAP_ID,并分别打开另一核心的MessageQ。0 v3 t0 u& o, m
# b8 G' D$ n, Q0 r$ _
编辑
搜图

. F! e4 q. G# V) ^' `/ P+ D. I$ l* q; ^7 U# n& J$ M
' T& U; w/ O9 x
图 19
(5) 测试C66xx_0核心至C66xx_1核心的消息传输往返延迟。
$ x7 y3 N& T3 T6 D- I. n
: C! x. X  O2 ^: v7 v
编辑
搜图
- K2 `* S8 V  Q1 v& O6 ?- a* L

. k/ ]$ k  j, {% Y  U图片重复,建议替换或删除×
/ K0 ~5 X7 m; S- t! {" s5 {' G# b
* X2 e& ], D0 ]7 T  @- U8 }

: N3 _2 \1 A6 s! L) D9 {* B
% G+ W. j  u2 D% X
请点击输入图片描述(最多18字)
编辑
搜图
2 m( x% i; @9 `1 x3 u# _
4 c! v( z) N. p! a; A/ C0 e; E$ u

$ n# H  k0 h4 s' E9 [- |+ N
图 20

8 [# F+ C1 a; V( G
编辑
搜图
0 r, S2 E) a$ f  }% e4 W+ v: H
$ o6 H' }; y- Z& g0 i$ u) h, C; V
5 w  C0 A# ~" x" L# {% A# Z
图 21
: T: d$ S- M3 X0 L, ~6 I5 ^7 ]0 i
(6) C66xx_0核心以突发方式将所有消息发送到C66xx_1核心,C66xx_1核心接收所有消息并统计数据吞吐量。

5 |! ^( R0 J+ [1 a  y6 \# l% {; H$ ?7 ~$ T
编辑
搜图
! t2 b9 _" o9 L, n9 z; V1 D* y

6 M$ m3 `& J4 ~/ P' N8 z4 P: C( p2 [3 |
图 22

2 ^/ J; B' r4 I. U1 n% v
编辑
搜图

; R: G7 V, h# r' B( M9 M  K9 Z6 W7 |

2 Z; e- L7 Z; y* w/ \: s
图 23

, {' _4 }6 a2 \; X/ f0 S1 |
编辑
搜图

# T: @7 R  {: S1 K
+ c1 V7 ^8 N# [( e( @/ A: F
+ F. r) `) l& i1 [% X8 T
图 24
(7) 通过宏定义NUM_MSGS_TO_PREALLOC设置突发模式下的Message发送数量,并同步修改Program.global.shmSize的值大于(NUM_MSGS_TO_PREALLOC x 128)。
  ~. a) f" I# O' z/ a% S
编辑
搜图
5 _3 g  q9 M/ f9 n& D! N3 G  X

( q9 n/ b' \  W& H7 u. `8 `) |图片重复,建议替换或删除×" l6 V6 q) `1 n2 h0 X4 B( V: D. N8 Y

4 U6 i  F6 m# \5 v# r$ V, k$ o# f1 }
/ P5 G8 i0 @9 k. q8 ~5 c8 L* z
图 25
0 A! O7 H3 j  ^& e6 j8 M* f" C
编辑
搜图
* O$ u/ F/ P% Q1 |( b' Z7 \" l' C

5 }9 H! a! H1 Q6 h) X
. |" ~8 ]/ Q9 L3 }( @( L
图 26 project\qmssIpcBenchmark.cfg
) ?. [6 q& U. l
3  srioIpcBenchmark案例3.1 案例说明
案例功能:C66xx_0核心向C66xx_1核心发送消息后,C66xx_1核心将收到的消息回传至C66xx_0核心。底层通过IPC的SRIO方式实现核间通信。
, A' j5 S6 y# B% A. H, b5 T
编辑
搜图

% F3 k7 e7 u: F& W; V# s2 I5 c1 S
# ^5 Z+ K; s! H/ D
9 y: E7 M" D  S6 |, ?
图 27
3.2 案例测试
将程序可执行文件分别加载至C66xx_0~C66xx_1核心后,再依次运行C66xx_0和C66xx_1核心程序,DSP端串口调试终端将会分别打印C66xx_0核心向C66xx_1核心发送单个消息的往返延迟,以及C66xx_0核心以突发方式将所有消息发送至C66xx_1核心的数据吞吐量。
编辑
搜图
5 Q" S7 r* s* J9 ?5 B1 Y

9 ?# v: N3 h0 m- F& H
% Z0 x0 t! f7 R- k
图 28

. I4 E  G1 K! `' D' i+ c
编辑
搜图
# ~% F) w3 R# {
" Q( U& _+ x+ k+ K1 O1 |2 E

6 G0 K  S7 F- t0 C
图 29
3.3 关键代码
(1) 初始化C66xx_0核心,并等待C66xx_1核心初始化完成与连接成功。
编辑
搜图
8 T. A4 }% k6 W1 j' K. L

! x- t  {# Z  n/ v: t9 m- O2 q) v0 ~: H  ]
图 30
(2) C66xx_0与C66xx_1核心分别创建MessageQ。
; s8 |+ t" i* R6 x! J$ G
+ a' s3 N- p. `8 ]( I
编辑
搜图

+ a, I" k+ _; ^1 |
" M; T# X+ t# ?. @7 N6 D2 @% G; D8 o* c
图 31
(3) 动态创建任务srioIpcBenchmark。
编辑
搜图

) V, V% y& |: F- X' f# s6 C  M/ ^

; }6 ?% a  a% H0 p0 O3 E* w
图 32
(4) 注册HEAP_ID,并分别打开另一核心的MessageQ。
编辑
搜图

# T+ o; m7 R$ D5 G+ ]0 }! V/ a0 H. K& y* A4 N! ]8 X

8 J. n, `  f1 f$ }& M$ v$ `9 Z* {
图 33
(5) 测试C66xx_0核心至C66xx_1核心的消息传输往返延迟。0 r  M% K) B0 }- A7 b2 W

; h0 F& @1 F5 W7 J$ w) v" P
编辑
搜图

0 j1 E, |4 q* }( J$ w+ t2 R# ^2 f( j$ p" t# |9 [# s
! J5 e  w2 n% j. u
图 34

9 \& Q2 |* k) w* x0 r+ c
编辑
搜图
" y- I4 C0 l! ]- V* ~/ S9 q

- Y$ x4 p2 K8 E, Z: c% t
" C6 D1 R3 U! w. T$ K- h3 a: g/ Q
图 35
(6) C66xx_0核心以突发方式将所有消息发送到C66xx_1核心,C66xx_1核心接收所有消息并统计数据吞吐量。7 w$ S, b* s5 Z  {  t# U) [4 P
8 w. c. E+ _7 o1 v- {- O
编辑
搜图
, E8 z* v+ g  A+ q( d3 N2 c
0 U- ^$ P5 Z* _
8 Z3 _) t# p; u$ v# q( c4 z. H
​图 36
编辑
搜图

* Y* l# K; y# M) S/ H* w0 D& {" T* Z! A$ x+ R5 [- z/ s* C

% f+ a9 P5 ]! n( {
图 37
编辑
搜图

& m) G( j; A9 \$ }% R  A; B& b% a9 K. ]! P  N; X6 ]& j: w& k9 T0 x- _4 G
. Q, W3 P( h, k* @" Q0 |2 u
图 38
编辑
搜图

+ K6 F& M1 c7 w: i! \
; f/ d# {, ^* ?8 S' }, i* ^5 Y% x  ^
" E3 t# c$ |" i5 j
图 39
(7) 通过宏定义NUM_MSGS_TO_PREALLOC设置突发模式下的Message发送数量,并同步修改Program.global.shmSize的值大于(NUM_MSGS_TO_PREALLOC x 128)。
编辑
搜图

$ u+ `$ B+ N0 R/ W% R0 B  H7 x5 V: d5 H5 e2 i, O5 o

6 q/ D  b8 \4 k# s: L
图 40

+ B7 f* e9 Z0 H# c$ R* }8 H- o
编辑
搜图
" d5 G" r5 ]! C7 `! Q' l; h& J- t) y

' A- D" e" ]4 y0 V/ X/ `( l& w( Q- W7 a! N
图 41
- L+ w. ~( B/ a4 |! r7 v7 c
) E% n- z# Y( R/ M( {

  o) ^  E5 x- R: U4 s

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


% U3 o+ i: P9 T, Z, w1 O

http://site.tronlong.com/pfdownload


. f. ]" F( S" o2 n
备注:如需购买评估板+模块,请与我司联系。案例源码需购买方提供。
. k( G9 V9 A& K& S

( ]6 Q+ e4 E/ r9 h5 [' N" m
更多帮助
销售邮箱:sales@tronlong.com
技术邮箱:support@tronlong.com
创龙总机:020-8998-6280
技术热线:020-3893-9734
创龙官网:www.tronlong.com
技术论坛:www.51ele.net
线上商城:https://tronlong.taobao.com

2 Q3 R3 o& `9 P6 U; z  ]6 Z; m5 |" K, h

1 I% W4 w7 W+ R/ |! V. u
  • 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-10-11 20:51 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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