首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

DSP/BIOS 6.x 实时操作系统(2)

DSP/BIOS 6.x 实时操作系统(2)

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 还提供了三种预先测试的动态堆实施供开发者选择:
  • HeapMem:可变大小、非确定性内存分配器,类似于标准的 C malloc 实施。
  • HeapBuf:固定大小的缓冲器、确定性内存分配器。分配效能比 HeapMem 更快。
  • HeapMultiBuf:可变大小、确定性内存分配器,可从一组固定大小的缓冲池中分配不同大小的内存。开发者可以配置最适合应用的缓冲大小范围和缓冲池数量。
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 的大量示例。
继承事业,薪火相传
返回列表