基于MSGQ模块的DSP的应用简化方案
数据流示例
什么是电感器以下我们给出来自某个应用程序的基本数据流程。根据设计,该应用可在两个DSP之间移动数据。在本例中,我们用多个集来管理不同类型的消息,其中包括应用程序、传输程序内部控制消息以及错误消息等。采用不同的集并不是必需的,但这样做有助于简化应用程序的维护。例如,管理若干个小集有时要比管理单个大集要简单。此外,如果消息大小有所不同,那么采用单个大集的话就会浪费大量存储器空间,因为这时必须支持最差情况下的空间要求。
本例中的流程可运行在TI的TMS320C6?55 EVM等评估板上,这款评估板采用两个通过sRIO实现互连的1GHz TMS320C6?55 DSP。该评估板提供了完整的代码以供参考:
main()
if processor 0: 打开雇主消息队列并
创建雇主线程。
if processor 1: 打开雇员消息队列并
创建雇员线程。
打开错误消息队列并创建错误线程。
srio_init to initialize peripheral
workerThread()
Loop
MSGQ_get message from th共模电感e worker queue
确定发送器
向发送器发送特定数量的消息
bossThread()
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会将该消息分配给适当的队列。任务二获得了有消息的信息,并准备接收消息。一旦任务二获得消息,就能够对消息进行重复使用,并将其发送回扁平型电感任务一。例如,如果两个任务要将消息来回传输,那么就仅需分配开始的消息。若读取器接收到消息,就能相应地更新内容,然后将其发回。这样,任务二就能够处理消息,一旦处理完成,消电感器厂家息就返回到存储器管理,任务二也就不能再对该消息进行处理。消息传输至此完成。消息传递可通过为数据移动提供虚拟接口来显著简化复杂处理器通信的开发与维护。
DSP器件的现场可编程技术DSP问世以来,以其强大的功能、合理的价格已经被设计者广泛应用。但不同于FPGA器件的是,DSP并不是为现场可编程而开发的,因此,在嵌入了DSP器件的产品中,如果需要对产品性能进行升级而需要升级程序时
支持CAN总线的电动车辅助逆变电源的设计电动车由于储能设备容量有限,在运行过程中对电能流向管理十分严格。精确的电能管理可以延长车辆运行里程,减少电池充电频率,从而节约运行成本。车载能量管理系统需要随时监控电池电压、电机输出功率以及其它设备的
非特定人车载音响语音控制系统的设计随着现代电子技术在汽车系统中的不断应用,越来越多的车载电器加入到车身电子行列中,使得汽车的各种性能都得到了极大的改善,但汽车驾驶室的开关也越来越多, 这就为驾驶员行车中对车载电器的操作提出了更高的要求