TI-RTOS可从占用空间最小的实时多任务内核-TI-RTOS内核(以前称为SYS/BIOS)-扩展到完整的实时操作系统解决方案,包括协议栈、多核通信、设备驱动进程和电源管理。
TI-RTOS产品
TI-RTOS有三种方式可用:
- 处理器SDK:对于Keystone和Sitara设备,TI-RTOS内核包含在处理器SDK中。
- SYS/BIOS产品:内核产品作为独立产品提供。建议将此产品用于C2000设备,或希望TI-RTOS版本比处理器SDK中提供的版本更新的客户。
- TI-RTOS产品:这些产品包含用于MCU设备的TI-RTOS和RTOS感知驱动进程(例如UART、I2C等)。
TI-RTOS内核
TI-RTOS的核心是内核。
TI-RTOS内核代码位于CC13xx和CC26xx设备的ROM中。这允许应用进程使用更多的闪存。请注意:内核仍然需要少量的闪存和/或RAM内存。
调度
内核的主要功能是调度进程。调度进程负责确保最高优先级的线程正在运行。TI-RTOS有四种不同类型的线程。
- 硬件中断(Hwi):硬件运行至完成。他们不会阻止任何东西。它们可能会被优先级较高的Hwi抢占。所有Hwi共享同一堆栈(系统堆栈)。Hwi可以用C语言写成。它们由TI-RTOS调度进程管理,但有一个例外:零延迟中断。应用进程可以将任何中断指定为零延迟中断。这意味着TI-RTOS调度进程不会与该中断进行交互。我们称之为零延迟中断,因为TI-RTOS内核为这些中断的执行增加了零延迟。零延迟中断的缺点是它们无法调用内核调度进程API(例如Semephore_post()等)。
- 软件中断(Swi):Swi线程类似于Hwi,只是它是软件启动的,而不是硬件。它还会一直运行到完成。它与Hwi线程共享相同的系统堆栈。由于Swi的运行优先级低于Hwi,因此它们对于执行延迟Hwi工作以最大程度地减少中断延迟非常有用。
- Tasks:任务是最常见的操作系统线程。每个任务都有自己的堆栈(在其中维护其状态)。由于它有自己的堆栈,因此任务可以阻塞。没有允许的最大任务数(系统内存允许)。 Idle: Idle是一项特殊任务。它以最低优先级运行(0是最低优先级,1是次低优先级,...,(Task_numPriorites-1)是最高优先级)。 Idle任务执行后台任务,如系统堆栈检查(如果启用)、CPU负载确定(如果启用)等。它还执行应用进程插入的功能。当 Idle线程运行时,低功耗设备可以进入低功耗模式。
线程通信
TI-RTOS包含多种线程通信机制:
- 信号量:用于控制对公共资源的访问的对象。它们可用于任务同步和互斥。
- 邮箱:信息传递模块
- 队列:双链列表(虽然没有同步)
- 入口:用于保护对关键数据结构的并发访问。门是一个重入互斥体。
- 事件:允许通过多个事件进行同步的模块。
计时服务
- 计时器:允许管理硬件计时器的模块。
- 时钟:默认情况下,TI-RTOS使用计时器来驱动计时服务(例如Task_sleep()等)。应用进程可以将函数插入时钟模块,该模块将按期请求的速率调用。插入式时钟功能可以是周期性的,也可以是单次的。
- 秒:设备RTC计时器的统一前端。
内存管理器
堆栈 描述 使用原因 HeapMem 可变大小分配 非常灵活 HeapBuf 固定大小分配 快速且确定 HeapMultiBuf 多个固定大小分配 快速且确定 HeapMin 可变大小,仅增长 快速且确定(但不能清空) HeapTrack 堆叠诊断堆栈 帮助查找内存泄漏、损坏等
堆栈位于Memory_alloc()和Memory_free()API的下面。默认情况下,TI-RTOS会创建一个系统(或默认)堆栈。当在Memory_alloc()和Memory_free()中传入IHeapHandle的NULL时,将使用此堆栈。系统堆栈也用于malloc()和free()函数(内核取代了RTSmalloc()和free()函数)。默认情况下,系统堆栈是一个HeapMem实例,其大小由链接器命令文档中的设置控制。
一个应用进程在应用进程中可以有多个堆栈。一种常见的用法是让系统堆栈成为HeapMem,然后创建一个HeapBuf实例来管理固定块,这些固定块可以快速分配和释放,而不会出现碎片(或者更准确地说,没有外部碎片)。我们通常看到系统堆栈保留为HeapMem实例,因为可能很难知道应用进程中的所有分配(以及分配的大小)发生的位置。
TI-RTOS配置和示例
内核是基于TI-RTOS内核配置文档(也称为.cfg文档)中的设置构建的。这个文档基本上是一个JavaScript文档,可以作为文本文档或图形编辑(图形方式仅在CCS中可用)。作为应用进程构建的一部分,.cfg文档将生成内核对象和库。
应用进程可以通过两种不同的方式将TI-RTOS内核配置文档包含在SimpleLink SDK中:
- 应用进程项目包括.cfg文档
- 应用进程项目(例如TI驱动进程示例)指向TI-RTOS内核配置项目
单独的内核配置项目方法效果更好。
内核项目的指向:Project Properties-Build-Dependencies
调试功能和工具
Runtime Object View
可以获得任务堆栈峰值、当前正在运行的线程等信息。
打开ROV:Tools-Runtime Object View
BIOS-Scan for errors是确定RTOS是否处于错误状态的快速简便方法(例如,堆栈损坏、由于应用程序指针错误或缓冲区溢出而导致的数据损坏等)。
System Analyzer
可直观地查看关键项目,例如执行图、CPU负载、代码段的平均/最大/最小执行时间等。