TI-RTOS基础知识

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负载、代码段的平均/最大/最小执行时间等。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 2
关注 9
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧