DSP核间通讯

前言:最近在搞377核间通讯,阅读了官方手册还有点糊涂,下文讲的很好,摘抄过来~
添加链接描述
IPC模块通信流程
思路:假设CPU1向CPU2发送数据。CPU1申请全局共享内存的写权限,将数据写入全局共享内存中,内存地址赋给IPC控制结构体,产生IPC1中断,复位IPC11标志。通知CPU2,CPU2同样使用IPC控制结构体,将共享内存地址赋给CPU2接收数组指针。CPU2查询到IPC11标志复位后,将接收数组的内容,赋给需要的变量,并置位IPC11标志。一次发送完成。需要注意的是:CPU2向CPU1发送数据时,需要通过IPC中断,申请全局共享内存的写权限,此步需要在CPU1内完成。除此之外,两个核的IPC控制结构体中的一系列地址索引,需要在IPC RAM中分配不同的区域,否则会造成读/写冲突,卡死在中断中。
理解数据手册、技术参考手册、官方例程。阐明IPC模块的通信流程:
① 初始化IPC。定义CPU01TOCPU02_PASSMSG、CPU02TOCPU01_PASSMSG、GS0SARAM_START地址,分别设置IPC控制结构体区域。定义接收和发送数据临时数组或者指针变量,并清除接收数组内的随机值。
② 开启IPC中断。对于C28x系列的内核,IPC共有32个中断信号,但是只有其中的IPC0~IPC3可用于配置IPC中断,处理双核之间的通信控制,剩余的标志信号可用于查询,像串口通信一样,只要CPU1与CPU2一一对应即可。
③ 使用IPC17标志位确认CPU2是否准备好。由于双核并不存在同步运行的关系,两个核独立运行,当CPU1已经初始化完毕,需要等待CPU2也初始化完毕。CPU2置位IPC17 Flag,CPU1查询到则开始运行收发函数。
④ 执行收发函数。发送函数需要申请Global Shared RAM写权限,并且写完后使用标志位的置位,通知接收方,已写完。接收方从Global Shared RAM读出数据,复位标志位,发送方可以再次发送。
⑤中断处理。中断中无论何种控制命令,都在处理地址传送,得益于IPC Message RAM,将实际数据通过地址链接在一起,提升传输容量。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值