电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

TMS320C55x嵌入式实时多任务系统DSP/BIOS II(转帖)

TMS320C55x嵌入式实时多任务系统DSP/BIOS II
http://www.ee365.cn 2004-07-22 16:07

摘  要: DSP/BIOS 是运行在数字信号处理器(DSP)中的一个小型软件,它为开发者提供对程序的控制执行和对变量的实时监测。而且可以合理地对实时多线程系统进行时间规划。本文对DSP/BIOS II的基本特征与应用作了介绍。
关键词: 嵌入式;实时多任务操作系统;DSP/BIOS II;线程
2002年5月B版

引言
现在,由于复杂的硬件功能已经集成到标准集成电路中,系统开发人员首先应该知道如何选择合适的芯片,然后基于此硬件结构设计软件。系统设计者有两种选择:使用专用集成电路或可编程DSP实现信号处理。相比之下,可编程DSP有两个优点:
可扩充性:设计者可以根据要求的处理效率,和需要的资源来量体选用DSP及所需的片数。
可升级性:将硬件的升级转化成比较容易升级的软件改动。
使用可编程DSP时,必须对芯片的各种资源(例如CPU,存储区,外设等)加以管理规划,通过DSP/BIOS可以轻松的完成这些工作。
TI公司TMS320C5000系列都带有嵌入式DSP/BIOS,它有很强的实时分析和任务实时管理能力,可以有效的提高项目的开发效率,尤其表现在需要实时多任务的大型系统中。图1为DSP/BIOS的部件结构。

DSP/BIOS II简述
TI公司的DSP/BIOS II 是在DSP/BIOS I 基础上的扩展。它支持更多的软件模块,通过修改内核提供抢先式多任务服务;它把传统并行处理系统的内核服务集成为可测试内核;它增加了设备独立的I/O数据流模型,继续保留已有的数据管道;它增加了动态内存分配与内存管理。
TI的开发平台CCS IDE 2.0中集成了DSP/BIOS II,可以对程序进行实时跟踪与分析,提高应用程序开发的可靠性。可以在CCS插件中实时观察DSP/BIOS内核中各线程的执行状态与对象的当前属性。通过设置工具,开发者可以对各个模块实行配置。

DSP/BIOS II 核心API技术
目标应用程序通过调用DSP/BIOS II的API来获得运行时的服务。一个单个DSP/BIOS II 模块可以管理多种类的内核对象,并且依据全局参量的设定来控制整个行为。DSP/BIOS II 可以归纳为六大种类:
内核执行线程

图1  DSP/BIOS 部件结构图

图2  线程优先级示意图

图3  数据流示意图

图4 数据管道示意图

DSP/BIOS II提供四类不同的执行线程。每一类线程又具有不同的执行、抢先和悬挂特性。DSP/BIOS II 支持两个高优先级的中断线程和事先备好的后台空闲过程循环。内核执行线程通过HWI, SWI和IDL模块进行管理。另外,DSP/BIOS II新提供了多任务线程类,能较好的完成任务间的同步,它由TSK模块管理,在任何执行时刻为悬挂和恢复执行同步,包括调整自身或其他任务的优先级。这种同步化的任务给并发系统设计提供了良好的基础。
硬件抽象
DSP/BIOS II 提供硬件的逻辑接口。它独立于硬件实现。它对硬件部分的访问、配置,内存映射、片内定时器和硬件中断等进行抽象,简化了应用的移植。它通过可视化的设置工具定义内存映射、中断向量表,对定时器编程,和完成动态的内存分配与释放。
设备独立I/O
设备独立I/O模块执行数据传输服务,传输可以在DSP与外设之间和多线程之间进行。DSP/BIOS II 支持数据管道(pipe)和数据流(stream)两种传送方式。数据管道是在读写线程之间快速传送数据的小型统一部件。数据流为缓冲方案增加了灵活性使之适应更广的需求。数据流依靠多个潜在的设备驱动器,这种设备驱动器封装了设备独立的属性与方法。在数据通过堆叠(stacking)机制传送时,设备驱动器能够执行数据处理操作,驱动器在数据通道中实行流水线处理。PIP和SIO模块分别管理目标应用中的数据管道和流的传送服务。SIO同DEV模块结合,使DEV通过SIO发送和接收数据。
线程间的通信和同步
DSP/BIOS II 中的线程间通信和同步模块支持多任务。信号量(semaphores)是最主要的同步方式。任务运用信号量保持同步资源访问的同步。访问外设的数据缓冲区,以及访问共享存储区都是资源同步的典型事例。信号量还控制着多任务执行的同步。信号量由SEM模块管理,而LCK模块提供共享资源的判优和互斥。数据队列可用于线程间通信。邮箱(mailbox)类似于数据队列,能够理想的完成任务通信。数据队列由QUE模块管理,邮箱模块由MBX管理。
实时分析
实时分析(TRA)模块在应用程序执行期间与DSP项目实时交互和诊断。LOG,STS和TRC模块对这些功能进行管理。主机与目标板之间的数据传输能力对实施分析是非常关键的。DSP/BIOS提供HST和RTDX模块来管理这些功能。CCS IDE中提供了以下六种实时分析工具:
—CPU负载图
负载图提供的是目标CPU的负载曲线。CPU负载的定义是除去执行最低优先级任务以外的时间量。最低优先级任务是只在其他线程都不运行时才执行的任务。因此,CPU负载包括从目标向主机传送数据和执行附加后台任务所需的时间。
——执行图示
在执行图示窗口中,我们可以看到各个线程的活动方式。执行图的刷新速率可以通过RTA控制版设定。图形中还包括了信号量的活动,周期性函数标记(tick),和时钟模块标记。执行图示能从整体上看到项目所有线程的活动状态。
——主机通道控制
利用信道控制窗口可以把文件绑定在定义的主机通道上,启动信道上的数据传输以及监测数据传输流量。
——信息记录
选定某一记录名,从此窗口可看到程序运行的信息记录。主机从目标板获取DSP/BIOS数据期间的记录信息将显示在此窗口中。开发者定义的记录信息也显示在窗口中。
——统计观察
统计观察窗可以计算出事件、变量出现的次数,给出其最大值,最小值和平均值,监测定时时间和变量的增值的实际值和期望值差。
——实时控制面板
它对运行时间中不同类型进行追踪控制,在默认情况下,所有类型的跟踪都是允许的。为跟踪任意一种类型,必须使能全局主机(GLOBAL HOST)。通过实时改变控制版的属性,还可以设定实时分析工具的刷新频率。
——内核/对象观察
内核/对象观察窗可观察当前的配置,状态和运行在目标板上的DSP/BIOS对象状况,此工具对动态和静态配置的对象都可以进行观测。
其它系统服务
DSP/BIOS II 仿照标准的C语言库,把程序错误处理与终止,组装到其它系统服务模块。这些功能函数由SYS模块管理。SYS中还包括各种printf()的变体形式。
原子(atomic)函数是非抢先式操作,比如AND, OR, INC, DEC, SET 和 CLEAR,使用它们时不允许中断。原子函数由ATM模块管理。

执行线程规划
在DSP实时应用中,由外部时间或控制信号驱动功能函数,所以函数执行方式和执行时间对系统非常重要。DSP/BIOS支持多线程应用,线程可以定义不同的优先级,使高优先级线程可以抢断低优先级的线程,而且不同的线程之间可以实现交互,比如阻塞,通信和同步。
如图2,DSP/BIOS II的线程分为以下四种类型(优先级从高到低)
硬件中断(HWI):包括CLK功能。它的优先级数目依赖于DSP,一般为32个,由外部同步信号触发。属于完全执行方式(run-to-completion)。
软件中断(SWI):可定义15个不同的优先级,通过调用SWI函数触发。属于完全执行方式,有执行截止时间。PRD是一种特殊的软件中断,它的执行基于多个设备定时器中断或一些其它事件。
任务(TSK):可定义15个不同的优先级。不同于SWI和HWI,它们在执行过程中为等待可用资源会被挂起。信号量,队列和邮箱用于不同任务之间的通信与同步。任务具有四个状态,就绪(ready),执行(running),阻塞(blocked),终止(terminated)。
后台线程(IDL):空闲循环线程具有最低优先级,运行期间可以被任何其它线程抢先。当main()函数执行完后,IDL便开始运行。
还有一类数据通知函数,他们在有数据帧读写的时候被触发用来通知读写器,并利用管道(PIP)或主机信道(HST)传送数据。

低层函数功能
内核的低层函数嵌入在三个软件模块中,这三个模块分别为:
MEM模块:管理存储区的分配。在DSP应用项目中,连接命令文件用作内存的分配,此文件通过配置工具生成,若要自己创建连接命令文件,则应包含前者。实时DSP硬件平台包括几种不同的存储区:设备自身的RAM,零等待状态外部SRAM和慢速DRAM等,以满足不同的存储需求。
SYS模块:提供多种系统服务。SYS提供一系列基本的类似于标准C运行时间库函数系统服务,比如系统停止,系统错误等。
QUE模块:管理队列。提供一类函数用于管理队列列表。QUE模块最常用于实现FIFO列表,其中的元素在尾部插入,头部移出。

输入输出功能
DSP/BIOS应用项目的输入输出提供流(stream),管道(pipe)和主机信道(host channel)三类处理对象。每一类对象有其自身的数据I/O管理模块。
流是一种在应用程序I/O设备之间数据传输的信道,这种信道在输入时为只读,在输出时为只写,如图3,流对所有I/O设备提供一个简单的统一接口,这时应用项目可以不用关心每个独立设备的操作细节。
流的一个重要方面是它的异步属性。输入输出并行使用数据缓冲区。当处理当前缓冲时,可将新的输入缓冲区写满。因仅交换数据指针而不用进行数据交换,流是高效的,使程序容易满足实时的要求。SIO模块对流实行管理,通过了DSP/BIOS编程接口的设备驱动器跟不同类型的设备进行交互。设备驱动器是管理设备的软件模块,遵从DEV提供的公用接口,流提出请求,驱动器就按照适合于特定设备的方式执行。
数据管道用于输入输出数据的缓存,管道提供一致的数据结构,可以用于驱动DSP设备和所有外设间的I/O,见图4。与流相比,数据管道的开销较大,它的通知机制是由管道管理器自动处理的。管道I/O操作一次只能处理一帧,尽管每一帧需要固定长度,但应用项目可以根据帧长度设置可变数目的数据。每一个数据传送线程需要独立的数据管道,每一个管道只有一对读写器提供点对点的通信。一般来讲,管道的一端由HWI控制,另一端由SWI控制。管道也能在两个应用线程之间传输数据。
主机信道对象允许应用程序在主机和目标板之间传递数据,它的输入输出是静态配置的,而且每一个主机信道的内部实现都采用了管道对象方式。

结语
TI公司的TMS320系列DSP已被多家电子通信厂商作为信号处理的首选芯片,所以如何更好的使用,以实现整体项目的可靠性和最优化成为我们关心的问题。基于TMS320系列的DSP/BIOS II 为开发人员提供了合理的解决方案。DSP/BIOS的优越性主要体现在它的多任务规划和实时分析上,而且CCS中提供的DSP/BIOS设置工具使开发人员可以可视化的进行程序编排。DSP/BIOS II 的应用可以有效的缩短项目开发周期。■

参考文献
1 TI ,TMS320 DSP/BIOS User's Guide,SPRU423, February 2001.
2 TI,TMS320C5000 DSP/BIOS Application Programming Interface (API) Ref Guide spru404c, April 2001.

博主
hotpower@126.com
HotPower的文潭
欢迎参加新唐Cortex-M0巡回研讨会
点击跳转