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管理。