DSP- 6678--------- SRIO通信(3)slave_main

一、打开主核创建的heapBuf

/* Open the heap created by the other processor. Loop until opened. */
do {
	status = HeapBufMP_open(HEAP_NAME, &heapHandle);
	if (status < 0) {
		Task_sleep(1);
	}
} while (status < 0);

为什么要打开主核创建的heapBuf,因为从核创建的messageQ也应该在这个heap中统一调度管理。

二、创建messageQ(slave)

/* Register this heap with MessageQ */
MessageQ_registerHeap((IHeap_Handle)heapHandle, HEAPID);
 
/* Create the local message queue */
messageQ = MessageQ_create(localQueueName, NULL);
if (messageQ == NULL)
{
    System_abort("MessageQ_create failed\n" );
}

三、打开主核messageQ(master)

/* Open the remote message queue. Spin until it is ready. */
do
{
	status = MessageQ_open(masterQueueName, &remoteQueueId);
	if (status < 0)
	{
	    Task_sleep(1);
	}
} while (status < 0);

四、接收主核的messageQ(master)

主核在收到FPGA的数据之后,会分配给各个核进行处理。这里接收的msg就是将要处理的内容

status = MessageQ_get(messageQ, &msg, MessageQ_FOREVER);
if (status < 0)
{
	System_abort("This should not happen since timeout is forever\n");
}

五、从核处理函数

对于数据进行处理,涉及到sharememory的问题。这个问题后续再讨论。

六、发送messageQ(master)

status = MessageQ_put(remoteQueueId, msg);
if (status < 0)
{
	System_abort("MessageQ_put had a failure/error\n");
}

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值