DSPC6678的sysbios核间通信MessageQ新建工程
MessageQ核间通信
在使用多核时,由于使用了sysbios系统,需要每个核心都启动sysbios固件,不像linux那样可以由系统调度内核。所以需要核间通信来确保多核间的交流。
本例程基于官方例程,重新建立工程以实现核间通信。
环境:CCS9,win10
1.新建工程
我们使用新建工程,建立一个sysbios的工程,并且使用官方板卡配置。
然后选择上需要的库文件
XDC:3.23.4.60
IPC:1.24.3.32
PDK6678:1.1.2.6
sysbios:6.33.6.50
2.使用库文件
我们需要使用sysbios的CFG配置文件
1.MessageQ
通过此模块进行核间通信
2.Csl
标准库文件
3.Timestamp
4.SharedRegion
共享内存,用于给IPC(MessageQ)使用
5.MultiProc
多核选项,我们当前使用双核做例程,所以填上核心数量2.
3.填写库文件
我们将cfg文件使用cfg Script打开,对其中的详细参数进行配置
1.配置变量
2.扩大堆空间
3.配置核心和共享内存
3.代码部分
这部分我简单提一下大家看一下就可以,不用照抄,想写的同学可以参照官方例程qmssIpcBenchmark_c6678,这个包在pdk里面,但我当时参考的是C66xx的工程,其实都一样。
这里不得不说一嘴,使用者需要将官方例程中的common文件夹复制粘贴过来并添加到include路径配置才不会报错。
以下是基本的使用流程
attachAll(numCores);负责等待和其他核心同步(可有可无)
MessageQ_create:创建队列
MessageQ_registerHeap:注册使用空间
MessageQ_open:打开队列
MessageQ_alloc:申请发送空间
MessageQ_put:发送
MessageQ_get:接收
MessageQ_free:释放申请的空间
我的验证做法就是主核心向从核心发送消息,从核心一直处于接收阻塞状态等待接收,从核心一旦接收完毕就会再发回给主核心,主核心接收完成则结束。
4.调试
需要将两个核心组成一个,然后以组的形式运行,最后终端就会打印出信息了。