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

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值