一、cfg文件
/* Create the stack Thread Task for our application. */
var tskSlaveThread = Task.create("&slave_main");
tskSlaveThread.stackSize = 0x2000;
tskSlaveThread.priority = 0x5;
tskSlaveThread.instance.name = "slave_main";
创建slave_main进程。
二、main函数
main函数很简单,只是打开IPC以及BIOS
三、slave_main进程
3.1 创建heapBuf
/* Open the heap created by the other processor. Loop until opened. */
do {
status = HeapBufMP_open(IMAGE_PROCESSING_HEAP_NAME, &heapHandle); //"image_processing_heap"
if (status < 0) {
Task_sleep(1);
}
//printf("HeapBufMP_open failed
" );
} while (status < 0);
3.2 创建messageQ( slave )
/* Register this heap with MessageQ */
MessageQ_registerHeap((IHeap_Handle)heapHandle, IMAGE_PROCESSING_HEAPID);
/* Create the local message queue */
//从核创建MessageQ 根据MessageQ名字 主核在MessageQ_open打开 MessageQ名字在mc_process_init中设置
h_receive_queue = MessageQ_create(receive_queue_name, NULL);
if (h_receive_queue == NULL)
{
printf("MessageQ_create failed
" );
goto close_n_exit;
}
3.3 接收messageQ( slave )
if (MessageQ_get(h_receive_queue, (MessageQ_Msg *)&p_msg, MessageQ_FOREVER) < 0) //接收MessageQ信息 通过p_msg结构体传输来 该结构体包含着 MessageQ头 核ID 图像处理参数
{
printf("%s: This should not happen since timeout is forever
", receive_queue_name);
goto close_n_exit;
}
reply_queue_id = MessageQ_getReplyQueue(p_msg); //获得回复队列的ID号 reply_queue_id 然后通过MessageQ_put发送出去
if (reply_queue_id == MessageQ_INVALIDMESSAGEQ)
{
printf("receive_queue_name: Ignoring the message as reply queue is not set.
", receive_queue_name);
continue;
}
3.4 sobel图像处理
process_rgb(&(p_msg->info));
p_msg->info是该核需要处理的图像的指针,处理之后的结果也在这里
3.5 发送messageQ( master)
/*============== 向主核发送MessageQ信息===========*/
if (MessageQ_put(reply_queue_id, (MessageQ_Msg)p_msg) < 0)
{
printf("%s: MessageQ_put had a failure error
", receive_queue_name);
}
if (MultiProc_self() != 0)
{
Cache_inv(p_msg->info.scratch_buf[0], p_msg->info.scratch_buf_len[0], Cache_Type_ALL, FALSE);
if (p_msg->info.scratch_buf[1])
{
Cache_inv(p_msg->info.scratch_buf[1], p_msg->info.scratch_buf_len[1], Cache_Type_ALL, FALSE);
}
Cache_inv(p_msg, sizeof(process_message_t), Cache_Type_ALL, FALSE);
}
至此,大功告成
程序下载连接:
https://download.csdn.net/download/yunge812/10517028
=======================================================================
最近新开的公众号,文章正在一篇篇的更新,
公众号名称:
玩转电子世界。
各位朋友有什么问题了可以直接在上面提问,我会一一进行解答的。
跟着阳光非宅男,一步步走进电子的世界。
关注之后回复 资料下载 关键词可以获得
免费海量的视频学习资料下载~~!
已共享的学习视频资料,共享资料正在不断更新中。。。
=======================================================================