无锡谷雨电子有限公司
TI-RTOS 开发教程
CC26xx 平台
2017-06-29
谷雨物联网开发平台
TI-RTOS 开发教程
http://www.iotxx.com
目录
更改记录........................................................................................................................................... 3
第一章 TI-RTOS ................................................................................................................................ 4
1.1 什么是 TI-RTOS .................................................................................................................. 4
1.2 TI-RTOS 组件 ....................................................................................................................... 4
1.3 下载并安装........................................................................................................................ 5
1.4 创建 RTOS 工程(IAR) .................................................................................................... 8
1.5 开发资料详情................................................................................................................... 11
第二章 任务................................................................................................................................... 13
简介......................................................................................................................................... 13
2.1 任务类型.......................................................................................................................... 13
2.2 任务优先级...................................................................................................................... 14
2.3 任务状态.......................................................................................................................... 15
2.4 任务堆栈.......................................................................................................................... 16
2.5 创建任务.......................................................................................................................... 17
例 1 创建任务实验 ......................................................................................................... 20
2.5 删除任务.......................................................................................................................... 23
例 2 任务删除实验 ........................................................................................................ 23
2.6 任务抢占.......................................................................................................................... 24
例 3 任务抢占实验 ......................................................................................................... 25
例 4 任务优先级更改 .................................................................................................... 28
第三章 任务间同步 ....................................................................................................................... 29
3.1 信号量(Semaphores).................................................................................................. 29
3.1.1 创建/删除信号量 ................................................................................................. 30
3.1.2 信号申请与释放 ................................................................................................... 31
例 5 利用二值信号量对任务控制 ................................................................................ 32
例 6 利用二值信号进行互斥访问 ................................................................................ 34
3.2 事件(Event)................................................................................................................. 35
3.2.1 创建/删除事件对象 .............................................................................................. 37
3.2.2 事件 pend/post ..................................................................................................... 38
例 7 事件创建实验 ......................................................................................................... 38
3.3 队列(Queues) ............................................................................................................. 41
3.3.1 队列创建 ............................................................................................................... 42
3.3.2 队列操作 ............................................................................................................... 42
3.3.3 遍历队列 ............................................................................................................... 44
3.3.4 插入删除元素 ....................................................................................................... 44
例 8 队列实验 ................................................................................................................ 45
3.4 邮箱(MailBoxs) ........................................................................................................... 45
3.4.1 创建邮箱 ............................................................................................................... 45
3.4.2 发送接收邮件 ....................................................................................................... 47
例 9 邮箱实验 ................................................................................................................ 47
第四章 HWI.................................................................................................................................... 50
4.1 创建 HWI ......................................................................................................................... 50
4.2 硬件中断嵌套和系统堆栈大小 ...................................................................................... 50
第 1 页 共 86 页
谷雨物联网开发平台
TI-RTOS 开发教程
http://www.iotxx.com
4.3 Hwi hooks .......................................................................................................................... 51
4.4 Register 函数.................................................................................................................... 51
4.5 Create/Delete 函数 ........................................................................................................... 52
4.6 Begin/End 函数 ................................................................................................................. 52
第五章 SWI .................................................................................................................................... 52
5.1 创建 SWI 对象 ................................................................................................................. 52
5.2 SWI 对象优先级及系统堆栈大小 ................................................................................... 54
5.3 SWI 中断执行 ................................................................................................................... 54
例 10 SWI 实验 ....................................................................................................................... 58
5.4 同步 Swi 函数 .................................................................................................................. 60
5.5 Swi hooks .......................................................................................................................... 60
5.6 Register 函数.................................................................................................................... 61
5.7 Create/Delete 函数 .......................................................................................................... 61
5.8 Ready/Begin/End 函数..................................................................................................... 61
例 11 SWI hooks 例子 ............................................................................................................. 62
第六章 门(Gates) ........................................................................................................................... 67
6.1 基于抢占 Gate 实现 ........................................................................................................ 68
6.1.1 GateHwi .................................................................................................................. 68
6.1.2 GateSwi .................................................................................................................. 69
6.1.3 GateTask ................................................................................................................. 69
例 12 Gate 临界保护实验 .............................................................................................. 69
6.2 基于信号量 Gate 实现 .................................................................................................... 70
6.2.1 GateMutex.............................................................................................................. 70
例 13 Gate 对共享资源互斥访问 .................................................................................. 70
6.2.2 GateMutexPri ......................................................................................................... 73
第七章 时间服务 ........................................................................................................................... 73
7.1 Clock .................................................................................................................................. 73
例 14 Clock 延时实验 ............................................................................................................. 76
7.2 Timer ................................................................................................................................. 78
7.3 Second ............................................................................................................................... 78
第八章 RTOS 实验例程说明 ......................................................................................................... 79
8.1 实验例程汇总.................................................................................................................. 79
第九章 APIs 列表 ........................................................................................................................... 80
9.1 Tasks APIs 函数 ................................................................................................................. 80
9.2 Semaphore APIs 函数 ...................................................................................................... 82
9.3 Event APIs 函数 ................................................................................................................ 82
9.4 Queue APIs 函数 .............................................................................................................. 83
9.5 Mailbox APIs 函数 ............................................................................................................ 84
声明................................................................................................................................................. 84
附录 1:联系方式 .......................................................................................................................... 84
第 2 页 共 86 页
谷雨物联网开发平台
TI-RTOS 开发教程
http://www.iotxx.com
更改记录
版本
V1.0
日期
描述
20170614
文档初始版本
第 3 页 共 86 页
谷雨物联网开发平台
TI-RTOS 开发教程
http://www.iotxx.com
第一章 TI-RTOS
1.1 什么是 TI-RTOS
在操作系统没有出来之前,单处理器就只能运行单个任务。这样用户只能独占 CPU,这
样带来的缺点是 CPU 利用效率非常低。为了解决这个缺点人们提出了操作系统,这样即使
只有一个 CPU 也可以运行多个任务,且每个任务互不影响,感觉上还是独占 CPU。由于这
个操作系统的出现,使 CPU 使用效率大大提高。
不同的多任务系统侧重点会有所不同。
对于 PC 用户可以独占一个或多个 CPU。而这类操作系统的调度算法则设计为让用户可
以同时运行多个应用程序,而计算机也不会反应迟钝。例如用户可能同时运行一个 word 处
理程序,一个 web 浏览器,或者更多,并且期望每个应用程序任何时候都能对输入有足够
快的响应时间。
对于服务器操作系统,则是为了支持多用户。这类系统的调度算法侧重于让每个用户公
平享用 CPU 时间。
实时嵌入式系统则更侧重于实时性,即任务必须在给定的时间限制内完成。例如危险的
错误发生时,如果不能在限定的时间内做出反应,那么就有可能发生严重的后果。
大多数嵌入式系统不仅满足硬实时要求,也能满足软实时要求。这样才能称这实时操作
系统。
TI-RTOS 是与其他 RTOS 一样,是对系统资源进行管理与调度。只不过 TI-RTOS 是针对
TI 的可编程器件的一个 RTOS。TI-RTOS 是一个可裁剪,可剥夺,一站式嵌入式工具型的一个
实时操作系。它由一个具有多任务管理功能 SYS/BIOS 内核组件,和其它一些铺助组件与设
备驱动组成,其 SYS/BIOS 是其主要的,不可或缺的核心组件。SYS/BIOS 负责任务启动,调
度,抢占,任务间同步。
由于 TI-RTOS 避免了从头开始创建基本系统软件功能的必要,所以加快了开发步伐。
TI-RTOS 可从实时多任务内核(之前称为 SYS/BIOS 的 TI-RTOS 内核)扩展为完整的 RTOS
解决方案,包括附加中间件组件、器件驱动程序和电源管理。通过结合 TI-RTOS 电源管理
和 TI 的超低功耗 MCU,开发人员能够设计出电池寿命更长的应用。TI-RTOS 提供经预测试
和预集成的必要系统软件组件,使开发人员能够专注于设计最与众不同的应用。
TI-RTOS 构建于经过检验的现有软件组件基础之上,确保了可靠性和质量。除此之外,
还提供了适用于多任务开发和集成测试的文档、额外示例以及 API,用于验证所有组件能否
协调工作。TI-RTOS 经过 Code Composer Studio™ 集成开发环境 (CCS IDE) 的充分测试。针
对一些微控制器平台,TI-RTOS 包含可以与 IAR 嵌入式工作平台 IDE 和 GCC 配合使用的
库。
1.2 TI-RTOS 组件
TI-RTOS 包含自己的源文件,预编译的库和相应的例子。TI-RTOS 的组件在安装目录下
的”products”子目录下。一些组件不是适用所有的 TI 器件。在每个组件下有相应的 doc 目录,
里面文档说细说明了当前组件。在下面表格里列举的组件是我们后面将要重点介绍与编程使
用的组件。
第 4 页 共 86 页
谷雨物联网开发平台
TI-RTOS 开发教程
http://www.iotxx.com
名称
SYS/BIOS
XDCtools
Drivers,CC26xxWare
--
/docs/目录下
PDF 原文档
SYS/BIOS(TI-RTOS Kernel) User’s Guide
TI-RTOS 组件
TI-RTOS 内核
TI_RTOS 驱动与板级初始化
XDCtools
TI-RTOS Kernel – SYS/BIOS SYS/BIOS 是一个实时内核。它被具有实时性要求的应用程序使用。
SYS/BIOS 具有可抢占的多任务,硬件抽象,实时分析,可工具配置,它对内存与 CPU 要求
低。在 CC26xx 内部 Flash 中,固化的 SYS/BIOS 内核。
Drivers TI-RTOS 包含了多个外设驱动。驱动在/packages/ti/drivers 目录下。
这些驱动具有线程安全特性。
CC26xxWare 是 CC26xx 外设的寄存器级别的驱动软件。
XDCtools 是一个单独的软件组件,它提供了对 TIRTOS 的配置与编译。XDCtools 提供了
XGCONF 配置编辑和脚本语言对.cfg 文件进行编辑。它也提供了工具对.cfg 文件进行编译。只
要你的工程里有.cfg 后辍的文件,XDCtools 都会自动对其进行编译,从而产生源码参与程序
的编译与链接。XDCtools 中的软件模块不做具体介绍,在后面的工程中用到的时候,再进
行说明。
1.3 下载并安装
在使用 TI-RTOS 之前,要在自己的电脑上安装相应的 TI-RTOS 包。这些资源工具的获取,
最好在 TI 的官网上下载。TI-RTOS 的官网下载地址为 http://www.ti.com/tool/ti-rtos-mcu。
在浏览器中输入上述地址并进入 TI 官网。其网站的部分内容截图如下。可能随着时间
变化,其网页的内容和布局会有所变化,一切以 TI 官网为准。或者在其官网的搜所框中搜
所 TI-RTOS 关键字,同样可以找到。
点击 Get software,便可进入 TI-RTOS 详细分支页面。
第 5 页 共 86 页
谷雨物联网开发平台
TI-RTOS 开发教程
http://www.iotxx.com
用户根据自己需求,点击下载相应版本的 RTOS。这里我们以 CC26xx 平台为例,进行 RTOS
的安装。如果用户的 PC 上安装了 BLE 协议栈,可以不用单独下载安装 RTOS。因为在安装
BLE 协议栈时,已经安装了相应的 RTOS 和 XDCTools。
装完成。强烈建议不要修改安装的路径。下图是安装过程的部分截图。
TI-RTOS 是以安装包形式提供,所以用户只要双击.exe 文件,并一直点击下一步直至安
第 6 页 共 86 页
谷雨物联网开发平台
TI-RTOS 开发教程
http://www.iotxx.com
第 7 页 共 86 页