DSP

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

2019-07-13 16:26发布

一、打开主核创建的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 " ); } 三、打开主核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 "); } 五、从核处理函数 对于数据进行处理,涉及到sharememory的问题。这个问题后续再讨论。 六、发送messageQ(master) status = MessageQ_put(remoteQueueId, msg); if (status < 0) { System_abort("MessageQ_put had a failure/error "); }   ======================================================================= 最近新开的公众号,文章正在一篇篇的更新, 公众号名称:玩转电子世界。 各位朋友有什么问题了可以直接在上面提问,我会一一进行解答的。 跟着阳光非宅男,一步步走进电子的世界。 关注之后回复  资料下载  关键词可以获得免费海量视频学习资料下载~~! 已共享的学习视频资料,共享资料正在不断更新中。。。   =======================================================================