摘 要:本文介绍了TI 公司DSP/BIOS II操作系统的内核技术并探讨了其在嵌入式系统中的开发与应用。
关键词:DSP/BIOS II;芯片支持库;配置工具
引 言
DSP/BIOS II是一个功能丰富、可扩展的内核服务集,开发人员可以用来管理系统级的资源和构建DSP应用的基础架构。DSP/BIOSⅡ所提供的内核服务在代码大小和性能上进行了专门优化,可以应用于TMS320C 5000和C6000系列的DSP。通过使用DSP/BIOSⅡ,我们可以:(1)使用多线程技术高效地管理DSP MIPS;(2)使用标准接口的I/O和中断;(3)高效地定义和配置系统资源,如系统内存;(4)通过实时分析工具对用户应用程序的运行状况实时查看;(5)向用户的目标应用程序添加数据结构并围绕一组相关线程来加以组织;(6)向新的TMS320 DSP移植更加容易。
DSP/BIOS II内核技术
DSP/BIOS II内核实质上是可以从C 源程序或者汇编源程序中调用的函数库,目标应用程序通过在源程序中嵌入相应的APIs调用从而唤醒DSP/BIOS II的运行时刻服务。该函数库提供如下服务或者功能:
* 一个小型的抢占式的实时应用程序线程调度器,支持多任务功能;
* 对片上定时器和硬件中断的硬件抽象;
* 与设备无关的管理实时数据流的I/O模块;
* 捕获目标程序线程实时运行期间生成的实时信息的一系列函数,从而可以分析目标程序实时运行期间的一些信息。
具体来说,DSP/BIOSⅡ提供了如下六类组件或服务:系统服务组件、实时分析组件、调度组件、输入/输出组件和芯片支持库(CSL)。其中,每类组件或服务又包括数个功能模块,每个模块一般管理相关内核对象类一个或者多个实例,下面分别加以描述。
系统服务
DSP/BIOSⅡ配置工具提供一个可视编辑器来定义目标应用的全局属性、系统内存映象图、中断向量表以及对片上定时器进行编程。DSP/BIOSⅡ内核提供API调用来对内存进行动态的分配和回收工作。
实时分析
该服务可以在目标应用程序正在运行时,利用其提供的实时交互和诊断功能,对程序线程的运行状态进行实时监控和数据分析。该类服务提供相应的API来完成其功能。
调度模块
DSP/BIOSⅡ调度器向程序员提供了四种不同的线程类型。每一种线程提供不同的执行效果。DSP/BIOSⅡ支持两种高优先级的中断线程和一种背景空闲线程。HWI、SWI和IDL模块管理这些内核执行线程。除此之外,DSP/BIOSⅡ内核还提供了一种多任务线程类-同步线程,能够在它们执行的任意点上挂起和重新调度执行。同步任务构成了传统并行系统设计的基础。TSK模块负责管理该类线程。
线程间同步或通信模块支持DSP/BIOSⅡ内核提供的多任务服务功能。其中主要是信号量。任务使用信号量同步对资源访问。信号量也可控制多个任务的执行。SEM模块管理信号量。LCK模块提供对共享资源的任意或者互斥访问。数据队列提供线程间的通信或者消息传递,不需要同步,队列可以为所有的DSP/BIOSⅡ线程所应用。信箱类似于数据队列,除了它们需要同步而且非常适合于任务间的通信。QUE模块管理数据队列,MBX模块管理信箱。
输入/输出模块
设备无关的I/O模块负责管理数据的传输。DSP/BIOSⅡ提供两种传输方式:管道和数据流。数据管道是小而快速的在读写线程之间传递数据的通用组件。数据流在缓冲机制方面提供了更大的灵活性,从而满足更加广泛的需求。数据流依赖于一个或者多个基础设备驱动程序。PIP和SIO模块负责管理目标应用程序中的数据传输。SIO还伴随着一个设备驱动程序模块DEV,由该模块与SIO模块完成数据的流入或流出。对实时分析很关键的是具有在主机和目标应用程序之间传输数据的能力。DSP/BIOSⅡ还提供了API调用来管理主机与目标机之间的数据传输,由HST模块和RTDX模块管理这些函数。
芯片支持库(CSL)
芯片支持库提供了配置和控制片上外围设备的C语言接口。该模块是顶层的API模块。模块的主要目的是初始化该库。该配置工具用于对片上外围设备进行编程,如DMA、多通道缓冲串行口(McBSP)以及其他一些外围设备等。
DSP/BIOS II开发
DSP/BIOSⅡ是可扩展的组件化的系统服务集,用户可以对其所使用的组件进行完全控制。当用户开发应用程序或者把以前的应用程序导入到DSP/BIOSⅡ时,只选择用户应用程序所需要的那些组件即可。并且只有用户所选择的那些组件被包含在用户的目标应用程序中,这就使得DSP/BIOSⅡ对内存的使用达到最小的程度。
一般地,应用程序使用DSP/BIOSⅡ来配置系统中断向量表和系统内存映像图。在开发期间,大多数开发者利用构建在DSP/BIOSⅡ中的实时分析功能来对用户应用程序运行时刻的行为进行查看或监控。此外,人们还利用DSP/BIOSⅡ的调度器来优化和管理DSP处理。每一个应用程序都可以利用DSP/BIOSⅡ中的特征或功能。先前的应用程序可以利用DSP/BIOSⅡ,以使得向其所支持的TMS320 DSP的移植更加容易。
DSP/BIOSⅡ需要知道几个全局系统参数。这些参数包括DSP设备、CPU时钟速度、Endian模式、缓存设置以及其他一些参数等等。与传统的嵌入式开发不同,用户不需要在其程序当中进行初始化或者设置,这些绝大多数的参数初始化或者设置都可以通过其配置工具(DSP/BIOSⅡ Configuration Tool)来完成。当然,其中有一些用户既可以通过配置工具也可以在其程序中设置或者配置,但由于DSP/BIOSⅡ对通过配置工具生成的代码进行了专门优化,因此使用配置工具使得所生成的代码既短小同时系统资源消耗又少。由于嵌入式资源一般都比较紧张,建议尽可能利用其配置工具静态地生成所使用的系统对象,以减少系统资源的开销。一般地,开发DSP/BIOS II应用需要以下几个步骤:
* 使用配置工具选择和配置目标应用程序所需的DSP/BIOSⅡ运行时刻支持对象;
* 使用配置工具指定目标应用程序的线程类型、优先级以及激活时所调用的函数;
* 使用配置工具创建系统内存映像图;
* 使用配置工具创建中断向量表;
* 使用配置工具对片上定时器进行编程。
下图给出了使用配置工具配置目标应用程序中所需DSP设置和预先配置静态DSP/BIOSⅡ对象的一般过程。
配置过程结束后,开发人员就可以在其程序中像调用常规数据对象一样来调用DSP/BIOS API,以访问和操作DSP/BIOS的对象。
|