基于MSGQ模块的DSP的应用简化方案
数家嵌入式处理器厂商为sRIO提供内核级软件层支持。例如,在TI DSP中,消息传递由DSP/BIOS软件内核基础消息队列(MSGQ)模块提供支持,这使应用程序开发人员能在更高级的抽象水平上设计软件。
消息传递使应用程序能够通过sRIO互连更高效地与其它DSP通信。通过这种方法发送的消息,其优先级高于数据缓冲,这一点非常有用,因为以更高的优先级控制数据通常来说是更好的做法。MSGQ能在无需修改源代码的情况下在处理器中移动读取器和写入器,因此我们能在单个处理器上进行开发,而且能方便地针对多处理器系统进行缩放。也就是说,写入器不用了解读取器驻留在哪个处理器上,这不仅能简化集成,而且还能简化客户端/服务器应用等的开发工作。
此外,MSGQ还可支持消息的零拷贝传输,假定底层物理介质支持处理器间零拷贝。零拷贝基本说来就是指针传递(pointer passing),而不是将消息内容拷贝到其它消息中。我们可在单个的处理器上完成上述操作,也可在共享存储器的多部处理器完成。由于能从特定集 (pool)分配消息,因而我们能轻松地实现服务质量(QoS)特性,如针对关键资源提高性能、加快速度等。
MSGQ模块
MSGQ模块包括API接口、分配器以及传输程序等(图2)。API接口将应用程序与传输程序和分配器相隔离。分配器为消息分配提供接口,而传输程序则为处理器间的消息传输提供功率电感接口。
图2.MSGQ模块
必须首先对在MSGQ模块中发送的所有消息进行分配。我们能用多个分配器从一个集分配关键信息,再从另一个集分配非关键信息。我们可以举一个简单的分配器的实例,即所谓STATICPOOL的静态分配机制,由应用程序提供的静态缓冲器负责管理。在初始化阶段,STATICPOOL分配器会接收地址、缓冲器长度以及请求消息的大小。可将缓冲器分为指定的消息大小块,并放置在链接列表中,这有助于简化消息定位。
接下来,传输程序在物理链接上将消息发送给另一处理器上的目标消息队列(图3)。通过传输接口,应用程序能在不改变自身的情况下改变底层通信机制,不过需要配置传输程序。这种方案将物理链接的具体技术问题隐藏起来,提高了应用的可移植性。
图3:传输功能
消息队列具有整个系统内唯一的名称,发送器能通过其名称来定位消息队列。所有通过MSGQ模块发送的消息都必须在第一字段编码MSGQ_Msg Header,之所以必须是因为内部指令就保存在报头中,报头由传输程序和MSGQ模块内部使用。消息发送到不同的处理器时,传输程序对消息报头部分的任何字大小和字节序(endian)差异进行处理。应用程序负责消息专用部分所需的转换。
插件电感器由于不同的处理器可能采用不同的调用模块(系统中的消息队列),因此MSGQ模块允许应用程序写入器指定通知机制的类型,这非常有用,因为用户能指定通知机制,并相应地调节MSGQ。不过,一旦将消息发送给读取器,写入器就会丢掉消息的拥有权,并且不能再修改或释放消息,因此在发送之前确保消息的正确性至关重要。当读取器接收消息后,必须释放消息或重复使用消息。
消息队列的定位
MSGQ为每个打开的消息队列保留一个消息存储库,消息队列功率电感的读取器贴片电感从消息队列的存储库中获取消息。如果需要将读取器或写入器线程移至另一个处理器,就无需更改读取器或写入器代码。
定位消息队列有两种办法:同步定位和异步定位。采用同步定位法情况下(可能采取阻塞方法),消息管理每个传输程序的查询,以查找所需消息队列的位置。采用异步定位法情况下,将消息队列定位后会发送异步定位消息给指定的消息队列。
同步法的实施更为简便,但要求用于阻塞队列的一些参数,如定位线程等。虽然异步法无需进行阻塞,但实际操作更为困难,难以使用。
我们可通过应用程序指定的通知机制来支持同步或异步操作。用户可指定通知机制,如信号量和中断记入等,这样就不用再遵循特定的调用模式。消息发送器能嵌入消息队列,消息读取器则能提磁环电感器取消息队列并做出回答。
平面变压器厂家 | 平面电感厂家
DSP器件的现场可编程技术DSP问世以来,以其强大的功能、合理的价格已经被设计者广泛应用。但不同于FPGA器件的是,DSP并不是为现场可编程而开发的,因此,在嵌入了DSP器件的产品中,如果需要对产品性能进行升级而需要升级程序时
支持CAN总线的电动车辅助逆变电源的设计电动车由于储能设备容量有限,在运行过程中对电能流向管理十分严格。精确的电能管理可以延长车辆运行里程,减少电池充电频率,从而节约运行成本。车载能量管理系统需要随时监控电池电压、电机输出功率以及其它设备的
非特定人车载音响语音控制系统的设计随着现代电子技术在汽车系统中的不断应用,越来越多的车载电器加入到车身电子行列中,使得汽车的各种性能都得到了极大的改善,但汽车驾驶室的开关也越来越多, 这就为驾驶员行车中对车载电器的操作提出了更高的要求