dsp MessageQ消息队列

来源:互联网 发布:python if else 简写 编辑:程序博客网 时间:2024/06/01 17:49

dsp 重要的通信机制MessageQ:

这个通信机制使用的很广泛,比Notif的优点就是其可以传递大于32bit的数据, 而notify机制只能传递小于32bit的数据。

我们需要对Heapbuf进行初始化并申请Heapbuf内存。

HeapBufMP_Params_init(& heapBufParams);
heapBufParams.regionId = headId;
heapBufParams.name = "zuoxiaonian";
heapBufParams.numBlocks = 1;
heapBufParams.blockSize = sizeof(struct mymsg);
heapHandle = HeapBufMP_create(&heapBufParams);
if (heapHandle == NULL)
{
System_printf("HeapBufMp_create failed\n");
}

对消息申请消息ID:

status = MessageQ_registerHeap((IHeap_Handle)heapHandle, headId);
if (status < 0 )
{
System_printf("MessageQ_registerHeap failed\n");
}

对消息申请内存。

zuoxiaonian_msg = (struct mymsg *)MessageQ_alloc(headId, sizeof(struct mymsg));

之后就是对MessageQ的打开,关闭, 消息的发送和接受。

MessageQ_create(),MessageQ_delete(); 对消息的创建和删除。

MessageQ_open(); MessageQ_close(); 对消息通道的打开和关闭。

MessageQ_put();MessageQ_get();消息的接受和发送。

注意:

1.一个消息队列可以有多个写者,但是只能有一个读者。(一般有几个核就创建几个消息通道, 一个核对应一个消息通道)

2.消息队列由谁创建就有谁删除,对打开就有谁关闭, (通常为写端打开,写端关闭,读端创建,读端删除)

3.可以对发送消息的结构体进行自由封装


0 0