一、创建 heapBuf
HeapBufMP_Params_init(&heapBufParams);
heapBufParams.regionId = 0;
heapBufParams.name = HEAP_NAME;
heapBufParams.numBlocks = 16;
heapBufParams.align = 128; //对齐方式
heapBufParams.blockSize = sizeof(MessageQ_MsgHeader);
heapHandle = HeapBufMP_create(&heapBufParams);
if (heapHandle == NULL)
{
System_abort("HeapBufMP_create failed\n" );
}
do {
status = HeapBufMP_open(HEAP_NAME, &heapHandle);
/*
* Sleep for 1 clock tick to avoid inundating remote processor
* with interrupts if open failed
*/
if (status < 0) {
Task_sleep(1);
}
} while (status < 0);
二、创建messageQ(master)
/* Register this heap with MessageQ */
MessageQ_registerHeap((IHeap_Handle)heapHandle, HEAPID);
/* Create the local message queue */
messageQ = MessageQ_create(masterQueueName, NULL);
if (messageQ == NULL)
{
System_abort("MessageQ_create failed\n" );
}
创建的为master messageQ,用于接收处理完毕的数据
三、打开8个从核创建的slave messageQ,准备发送msg
for(i = 0;i<NUMCORE;i++)
{
/* Open the remote message queue. Spin until it is ready. */
do
{
status = MessageQ_open(slaveQueueName[i], &remoteQueueId[i]);
/* 输入 输出 */
i