高级 RTOS 解决方案
DSP/BIOS 6.x 是一种可扩展的高级实时操作系统,它提供了 DSP/BIOS 5.x 的所有多任务操作,具有众多增强的功能和性能。DSP/BIOS 6.x 目前可用于 TI TMS32064x+,包括 OMAP3x 和 DaVinci™ 系列、TMS320C674x、OMAP-L13x、TMS320C672x、TMS320C28x™、ARM926 和基于 ARM Cortex M3 的器件。DSP/BIOS 6.x 与 DSP/BIOS 5.x 内核具有高度的源码兼容性,使应用程序能够轻松植入。DSP/BIOS 6.x 附带有完整源码,无需任何运行许可费用。
DSP/BIOS 6.x 既可独立使用,又可作为 Code Composer Studio 4.0 交互式开发环境 (IDE) 的核心部分使用。图形工具支持包括配置工具、运行时对象查看程序 (ROV) 以及专用于调试和调优多任务应用程序的实时分析工具。DSP/BIOS 6.x 以经验丰富的开发、培训和支持组织为后盾,确保了最新款 TI 器件的产品质量和供货。
相关信息
DSP/BIOS 6.x 概述
DSP/BIOS 6.x及其关联 IPC 和 XDC 运行时软件包提供了丰富的 C 调用确定性内核服务集,使开发者能创建尖端的应用,而不会影响实时最终期限。
在 DSP/BIOS 6.x 中,DSP/BIOS 5.x 提供的服务分为三个独立的软件包。XDC 运行时软件包提供了记录、跟踪和内存管理服务,无论应用程序是否基于多任务调度程序,它都可以使用这些服务。与提供消息传递和其它 IPC 机制的 IPC 软件包类似,可单独使用核心的 DSP/BIOS 6.x 内核功能。因此,如果希望简化基于不同处理器/操作系统组合的不同子系统之间的通信,开发者可以在其它操作系统上使用 IPC API。
这三个软件包中的对象都是使用常用工具基础设施进行配置、检查和跟踪的,可提供类似于 DSP/BIOS 5.x 的无缝用户体验。
与 DSP/BIOS 5.x 相比,DSP/BIOS 6.x 具有以下增强功能:
开发者可使用图形工具或脚本来配置 DSP/BIOS 6.x 和最小化内存占用的空间。可通过图形或脚本工具以静态方式创建对象,也可通过操作系统调用以动态方式创建对象。除了排除未使用的模块,静态配置还通过省去动态创建和删除操作系统对象(如线程和信标)所需的代码,进一步减少目标内存占用的空间。
DSP/BIOS 6.x、IPC 和 XDC 运行时对象 | |
DSP/BIOS 6.x 对象 | 描述 |
事件 | 等待多个 DSP/BIOS 6.x 或自定义事件的任意组合 |
硬件中断 (HWI) | 从硬件中断至 DSP/BIOS 6.x 内核的接口 |
软件中断 (SWI) | 使用程序堆栈但无法放弃的轻量级抢先式线程 |
任务 | 可以放弃处理器的执行的独立线程 |
计时器 | 与硬件定时器的接口 |
邮箱 | 任务间的同步数据交换 |
GateMutex | 优先级继承的二进制互斥体 |
信标 | 统计信标 |
时钟 | 时间触发函数 |
HeapMem | 可变大小动态堆 |
HeapBuf | 快速、可确定的固定大小缓冲池 |
HeapMultiBuf | 基于多个缓冲池的可变大小、可确定的动态堆 |
高速缓存 | 高速缓存配置和管理 |
XDC 运行时对象 | 描述 |
诊断 | 用户配置跟踪,包括进行参数和状态检查 |
错误 | 定义、增强和检查错误处理程序 |
日志 | 低开销记录和打印语句 |
内存 | 与 DSP/BIOS 6.x 和用户定义堆的内存分配接口 |
系统 | 常规系统功能,例如中止、退出和系统打印 |
时间戳 | 32 位和 64 位时间戳服务 |
IPC 对象 | 描述 |
HeapBuf | HeapBuf 的多核/处理器安全共享存储器实施 |
HeapMultiBuf | HeapMultiBuf 的多核/处理器安全共享存储器实施 |
列表 | 原子链路列表 |
ListMP | 多处理器原子链路列表 |
MessageQ | 透明可变长度消息 |
Multiproc | 处理器识别 |
NameServer | 可在多核/处理器拓扑中定位 IPC 对象 |
通知 | 与其它处理器的低延迟异步中断 |
SharedRegion | 可定义不同处理器/内核之间的共享指针 |
流 | 与外设驱动程序的读/写或缓冲流接口 |
DSP/BIOS 6.x 多线程
为提供实时应用需要的快速响应,DSP/BIOS 6.x 使用附加的线程机制对传统的任务模型进行了补充。软件中断是共享通用堆栈的轻量级抢先式线程。这使内存开销更低,上下文切换次数更快,因为不需要保存和恢复任务堆栈。时钟功能是时间触发的高优先级线程,可以轻松设置为按固定时间间隔执行。
DSP/BIOS 6.x IPC 机制
DSP/BIOS 6.x 和 IPC 软件包可为线程间通信提供多种 IPC 机制。信标和门可提供基本的同步和资源锁定。GateMutex 提供了优先级继承互斥体,当资源必须在高优先级与低优先级任务之间共享时,可防止优先级反转。邮箱可在任务之间同步传输固定大小的消息。事件可让任务在多个不同事件上等待,如 MessageQ 帖子、信标帖子或 IO 活动。任务可在任何不同事件(包括用户自定义的事件)的“与”或“或”组合上暂挂。
MessageQ 对象可在任何 SYS/BIOS 线程类型之间实现零拷贝、可变长度消息传递。当需要发送消息时,将为每条消息分配的确切存储器。
DSP/BIOS 6.x 多核和多处理器支持
DSP/BIOS 6.x 完全支持 TI 的多核 DSP 解决方案。对于设计为在多个内核上处理同一图像的器件,DSP/BIOS 6.x 提供了共享图像支持,从而最大化用于存储数据的本地内核存储器的容量。
MessageQ 对象可在应用程序层提供透明通信,无论应用程序是在单个处理器、多个离散处理器还是多核器件上运行。对于多个内核或处理器之间的通信,需要消息队列传输 (MQT)。IPC 软件包包含 MessageQ,它还为多核器件上的内核与内核之间的通信提供了共享存储器传输。此 MQT 利用原子访问监视器或硬件信标等基本硬件功能来实现最高效的实施。IPC 软件包包含多处理器/内核应用所需的附加模块,例如共享链接列表、唯一处理器标识和处理器间路由。
DSP/BIOS 6.x 内存管理
内存管理通常特定于应用程序,且可能对系统性能产生重大影响。通过利用 XDC 运行时软件包的标准内存分配 API 集合(该集合支持使用多个并发堆),DSP/BIOS 6.x 可以满足这些要求。这确保开发者能够轻松添加自定义内存管理器,以便优化其应用中特定部件的内存管理。除了任何自定义开发的内存管理器之外,DSP/BIOS 6.x 还提供了三种预先测试的动态堆实施供开发者选择:
DSP/BIOS 6.x 中断管理
DSP/BIOS 6.x 包括一组全面的中断管理服务。中断调度使开发者能够通过执行低级别操作(例如背景存储/恢复和临时禁用调度程序)来使用 C 语言编写 ISR。此方法通过省去给每个 ISP 专门添加这类代码,来简化了代码。为了降低数据内存需求,所有 ISR 都使用一个通用堆栈,而不是使用 ISR 所中断的任务的堆栈,但出于性能原因存储在任务堆栈上的首个中断背景除外。
HWI 模块提供基本的中断管理操作,例如启用和禁用中断。对于执行电机控制或类似应用(其中的中断延迟非常关键)的 ARM Cortex M3 和 C28x 微处理器,DSP/BIOS 6.x 提供了配置选项,用于消除某些高优先级中断的中断延迟。DSP/BIOS 6.x 还支持 C64x+ 设备上的事件组合器模块,该模块可实现多个中断源到单个中断引脚的多路复用。
DSP/BIOS 6.x 电源管理
对于设计用于便携式应用(其中功耗是主要考虑因素)的 TI 处理器,DSP/BIOS 6.x 提供了各种电源管理功能。这可能包括自动使 CPU 处于空闲状态(如果正执行 IDL 任务)、电压和频率调节 API、睡眼或休眠 API、自动使外设处于空闲状态(如果未使用外设域)以及用于调节复杂的系统范围电源管理的注册/通知机制,具体取决于基本的硬件功能。
DSP/BIOS 6.x 调试和分析仪表
DSP/BIOS 6.x 使用 XDC 运行时仪表功能,通过用户配置的调试仪表选项来提高调试功能。它通过一组全面的 Hook 函数进一步增强上述功能。
开发者可利用任务、SWI 和 HWI 的 Hook 函数添加自定义调试仪表,检测中断相关的缺陷或实时任务堆栈溢出等问题。
日志可提供低负荷打印功能,可选择使用 32 位或 64 位时间戳进行标记。打印字符串将在主机上存储和格式化,与 C RTS printf 函数相比,这会显著降低性能和减少内存空间。
每个 DSP/BIOS 6.x 对象都具有跟踪选项,可记录函数进入/退出和参数值,使开发者能够准确检查应用程序与操作系统的交互状况。此外,开发者还可配置 DSP/BIOS 6.x,以检查对象的参数并判定是否传递无效参数。这些诊断都可根据每个模块进行配置和控制,使用户能够选择性地仅启用解决当前问题所需的诊断,从而最大限度地减少入侵。
操作系统识别的调试和分析工具
可与 Code Composer Studio (CCS) 配合使用,DSP/BIOS 6.x 提供了多种工具,帮助调试和优化多线程应用程序。运行时对象查看程序使开发者能够检查任务、邮箱和信标等操作系统对象的状态,包括任务是否准备就绪、正在运行或被阻止,IPC 上哪些任务被阻止以及任务是否超出其堆栈限制。实时分析工具可显示线程执行和切换顺序、线程和系统 CPU 负载、发生中断的时间和地点以及用户定义的日志信息。
DSP/BIOS 兼容性
DSP/BIOS 6.x 提供了兼容层,具有与大多数 DSP/BIOS 应用程序的 100% 源码兼容性。除了需要用户进行少量编辑的内存管理(MEM 和 BUF 模块)配置外,与配置脚本(.tcf 文件)兼容。DSP/BIOS 6.x 文档包括详细的 DSP/BIOS 迁移应用程序说明,说明哪些 DSP/BIOS 6.x 对象映射至哪些 DSP/BIOS 对象,以及如何迁移配置脚本或应用程序代码以使用本机 DSP/BIOS 6.x API 的大量示例。