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");
}



猜你喜欢

转载自blog.csdn.net/yunge812/article/details/80913160
今日推荐