微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 利用MSGQ模块简化复杂DSP的应用

利用MSGQ模块简化复杂DSP的应用

时间:03-14 来源:德州仪器公司 点击:

ad()

MSGQ_locate to locate worker queue

Loop

MSGQ_alloc message

使用要接收的多个消息来填充消息。

MSGQ_setSrcQueue to embedded boss’s message queue

MSGQ_put message to reader

Loop

MSGQ_get message from the boss queue

errorThread()

Loop

MSGQ_get message from the error queue

Log MQT error via LOG_printf

在单个处理器上发送消息

下面将介绍在单个处理器上发送和接收消息的幕后情况,这个过程分为任务一和任务二。任务二由操作系统进行调用,打开MSGQ队列,并为该消息队列指定 "pend"与"post"函数。如果没有消息,则使用"pend"函数,在而向消息队列发送消息时则调用"post"函数。

如果MSGQ模块获得了没有待决消息的信息,那么就可运行任务一,但必须读取队列标识符,并定位适当的队列,以免其位于不同的处理器上。通常在启动时定位队列对性能几乎没有什么影响。此外,任务一在向任务二发送消息之前还必须为消息传输分配存储器。

一旦任务一发送消息,就不能再对消息进行处理,因为这时MSGQ已拥有该消息,MSGQ会将该消息分配给适当的队列。任务二获得了有消息的信息,并准备接收消息。一旦任务二获得消息,就能够对消息进行重复使用,并将其发送回任务一。例如,如果两个任务要将消息来回传输,那么就仅需分配开始的消息。若读取器接收到消息,就能相应地更新内容,然后将其发回。这样,任务二就能够处理消息,一旦处理完成,消息就返回到存储器管理,任务二也就不能再对该消息进行处理。消息传输至此完成。消息传递可通过为数据移动提供虚拟接口来显著简化复杂处理器通信的开发与维护。

发布者:小宇

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top