打印

DSP/BIOS II内核技术及其在嵌入式系统中的应用

[复制链接]
1818|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
GG_GG|  楼主 | 2013-1-24 21:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘 要:本文介绍了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的对象。

相关帖子

沙发
GG_GG|  楼主 | 2013-1-24 21:14 | 只看该作者
DSP/BIOS II在嵌入式系统中的应用

  由于DSP/BIOSⅡ内核含有实现执行线程和设备无关I/O的许多组件,因此从简单的单道信号处理系统到非常复杂的多速率和多道系统都可以用之来开发。另外,其提供的内核对象查看KOV(Kernel Object View)功能和实时分析(RTA)特征,使得开发人员在把真实算法附加到程序中很久以前,就能够快速验证应用程序的执行逻辑。例如,通过利用其实时分析特征功能,设计师能够快速地测量使用DSP/BIOSⅡ开发所带来的开销;利用其RTA组件,开发人员可以对嵌入式应用某一线程在运行时刻的行为或者状态进行实时监控或者分析;开发人员能够使用支持错误检测与通知、数据仿真以及实时数据捕获等特征的定制检测向量来分析所开发的算法;利用实时数据交换(RTDX)特征,开发人员还可以在目标应用程序正在运行时更新参数和监控结果,从而调整自己的算法。应用程序逻辑一旦验证完毕,就可以把真实算法添加到最终的目标程序中去。

  在最后的集成阶段,由于实时交互等原因,会经常出现一些错误或者不灵验现象。一般说来,由于这些现象是非周期性的并且出现的频率很低,因此难于发现和跟踪。然而,由于DSP/BIOSⅡ中的RTA特征是嵌入到其内核中去的,再结合开发人员所提供的定制检测向量,从而提供了对错误产生根源的独一无二的可视性。该可视化功能极大地帮助了开发人员隔离和修正错误,是一般嵌入式开发系统所不具备的。从以上分析可以看出,DSP/BIOSⅡ是一个具有实时调度功能的、具备多任务以及抢占式等特点的实时操作系统,因此特别适合于诸如语音编码、图像处理以及信号的处理检测等方面。

结语
  DSP/BIOS应用复杂性的提高需要更加有效地在DSP系统资源间进行权衡的应用架构。这包括内存和CPU需求。有的应用非常适合于DSP/BIOSⅡ的静态编程模型,有的需要DSP/BIOSⅡ的动态编程能力,以达到对资源、程序性能以及成本的最佳利用。DSP/BIOSⅡ内核提供了能够最大满足开发人员需求的一组服务和能力。把由配置工具创建对象的静态和全局特性与程序中创建对象的动态和局部特性结合在一起,给开发人员提供了一种充分优化目标应用程序性能和资源利用的基础架构。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

893

帖子

7

粉丝