您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术利用MSGQ模块简化复杂DSP的应用 正文
利用MSGQ模块简化复杂DSP的应用

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

点击数:7774 次   录入时间:03-04 12:02:19   整理:http://www.55dianzi.com   DSP/FPGA技术

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



上一页  [1] [2] 


本文关键字:暂无联系方式DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术