腾讯物联网操作系统TencentOS tiny架构解析与实践

  • 腾讯物联网操作系统TencentOS tiny项目背景、目标及规划;
  • 腾讯物联网操作系统TencentOS tiny 整体软件架构、关键技术介绍;
  • 腾讯物联网操作系统TencentOS tiny 开发者入门指南;
展开查看详情

1.云+社区 技术沙龙

2.腾讯物联网终端操作系统 TencentOS tiny 软件架构解析与实践 汪礼超 腾讯 TEG 云架构平台部系统研发中心高级工程师

3.TencentOS tiny 项目背景及简介 TencentOS tiny 软件架构 Q&A TencentOS tiny 开发指导 1 2 3 4 目录

4.物联网操作系统行业背景 --- 为什么需要 IoTOS ? 背景: 物联网市场规模发展迅猛,2018年仅国内物联网市场容量已经超过1万亿,预计2020年国内物联网市场容量可望超过1.5万亿 终端侧的物联网操作系统是 物联网 生态链关键一环 物联网操作系统能 为云 侧 海量数据平台引流 物联网操作系统能促进 物联网生态乃至整个产业互联网的发展 。 腾讯云 IoT 全栈 产品生态链 生活物联 智慧城市 公共事业 智能制造 物联设备 物联网开发平台 IoT Explorer 低功耗广域物联 服务 LPWA 边缘计算服务 物联安全服务 TID 物联网操作系统 TencentOS tiny 物联网通信 IoT Hub 物联卡 服务 IoT Link 物联网市场 IoT Market 智慧能源

5.TencentOS tiny 简介 TencentOS tiny 是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率。 TencentOS tiny 提供精简的 RTOS 内核,内核组件可裁剪可配置,可快速移植到多种主流 MCU 及模组芯片上。而且,基于 RTOS 内核提供了丰富的物联网组件,内部集成主流物联网协议栈(如 CoAP /MQTT/TLS/DTLS/ LoRaWAN /NB-IoT 等),可助力物联网终端设备及业务快速接入腾讯云物联网平台。 平台接入 多种行业应用 腾讯云 IoT 平台 智慧城市智慧停车 智能制造 智慧园区 智慧楼宇 智能家居 … 主流芯片模组

6.TencentOS tiny 产品 2019 年下半年规划 V1.1.0 试用 内测 V1.2.0 正式开源 扩展生态 V1.3.0 寻求商用落地 2019-8 2019-10 2019-12

7.TencentOS tiny 产品 2019 年下半年规划 V1.1.0 试用 内测 V1.2.0 正式开源 扩展生态 V1.3.0 寻求商用落地 2019-8 2019-10 2019-12

8.TencentOS tiny 架构全景 CPU/MCU ( ARM Cortex M0 、 M3 、 M4 、 M7… ) HAL BSP TencentOS tiny Kernel 任务管理 Drivers 时间管理 内存管理 实时调度 中断管理 异常处理 IPC 通信组件 信号量 互斥锁 事件 消息队列 OSAL ( cmsis / posix ) IoT SDK Protocol ETH LWIP WIFI LoRa AT 适配 框架 SAL LPWA Modules (with IoT protocol) DTLS TLS TencentOS tiny Open APIs 组件框架 OTA 文件系统 KV 存储 自组网 JS 引擎 低功耗框架 设备框架 安 全 框 架 USER APP/Examples 调试工具链 注:虚线标注的模块功能规划开发中 NB-IoT BLE GPRS… TencentCloud IoT Explorer MQTT/ CoAP //HTTP.. TencentCloud IoT Hub 简化物联网终端开发 、 助力业务 快速上云 TencentOS tiny 的优势 小体积 最小内核: RAM 0.6KB , ROM 1.8KB 典型 LoraWAN 及传感器应用: RAM 3.3KB , ROM 12KB 低功耗 休眠最低功耗低至 2 uA 支持外设功耗管理框架 丰富的 IoT 组件 集成主流 IoT 协议栈 多种通信模组 SAL 层适配框架; 支持 OTA 升级 提供简单易用端云 API ,加速用户业务接入腾讯云 可靠的安全框架 多样化的安全分级方案 均衡安全需求 & 成本控制 良好的可移植性 内核及 IoT 组件高度解耦,提供标准适配层 提供自动化移植工具,提升开发效率 便捷的调试手段 提供云化的最后一屏调试功能 故障现场信息自动上传云平台,方便开发人员调试分析

9.TencentOS tiny 架构全景 CPU/MCU ( ARM Cortex M0 、 M3 、 M4 、 M7… ) HAL BSP TencentOS tiny Kernel 任务管理 Drivers 时间管理 内存管理 实时调度 中断管理 异常处理 IPC 通信组件 信号量 互斥锁 事件 消息队列 OSAL ( cmsis / posix ) IoT SDK Protocol ETH LWIP WIFI LoRa AT 适配 框架 SAL LPWA Modules (with IoT protocol) DTLS TLS TencentOS tiny Open APIs 组件框架 OTA 文件系统 KV 存储 自组网 JS 引擎 低功耗框架 设备框架 安 全 框 架 USER APP/Examples 调试工具链 注:虚线标注的模块功能规划开发中 NB-IoT BLE GPRS… TencentCloud IoT Explorer MQTT/ CoAP //HTTP.. TencentCloud IoT Hub 简化物联网终端开发 、 助力业务 快速上云 TencentOS tiny 的优势 小体积 最小内核: RAM 0.6KB , ROM 1.8KB 典型 LoraWAN 及传感器应用: RAM 3.3KB , ROM 12KB 低功耗 休眠最低功耗低至 2 uA 支持外设功耗管理框架 丰富的 IoT 组件 集成主流 IoT 协议栈 多种通信模组 SAL 层适配框架; 支持 OTA 升级 提供简单易用端云 API ,加速用户业务接入腾讯云 可靠的安全框架 多样化的安全分级方案 均衡安全需求 & 成本控制 良好的可移植性 内核及 IoT 组件高度解耦,提供标准适配层 提供自动化移植工具,提升开发效率 便捷的调试手段 提供云化的最后一屏调试功能 故障现场信息自动上传云平台,方便开发人员调试分析

10.TencentOS tiny 开发入门流程

11.TencentOS tiny 源码目录及说明 一级目录 二级目录 三级目录 说明 arch TencentOS tiny 适配的 IP 核架构(含 M 核中断、调度、 tick 相关代码) board TencentOS_tiny_EVB_MX TencentOS tiny 定制开发板板级工程代码 component connectivity loraWAN loRaWAN 协议栈实现源码及适配层 er-coap coap 协议栈实现源码及适配层 Eclipse- Paho -MQTT MQTT 协议栈实现源码及适配层 TencentCloud_SDK 腾讯云 SDK 实现源码及适配层 fs 文件系统实现 security mbedtls 安全协议实现及白盒加密等安全算法的实现 devices TencentOS tiny 适配的网络模组驱动,如 bc35 bc26 esp8266 sim800a rhf76 等,同时也支持腾讯云定制 IoT 模组驱动 doc TencentOS tiny 相关技术文档及介绍 examples TencentOS tiny 的参考例程和联网 demo kernel core TencentOS tiny 内核源码 hal TencentOS tiny 提供的驱动框架适配层 pm TencentOS tiny 低功耗模块源码 net at TencentOS tiny 串口类 AT 适配框架 lora_module_wrapper TencentOS tiny 为串口类 LoraWAN 模块提供的 API 适配层 sal_module_wrapper TencentOS tiny 为串口类网络模块( wifi gprs ) 提供的 socketAPI 适配层 tencent_firmware_module_wrapper TencentOS tiny 提供的腾讯定制模组 API 适配层 osal cmsis_os TencentOS tiny提供的cmsis os 适配 platform hal TencentOS tiny 提供的驱动框架实现,根据芯片类型分类。 vendor_bsp 芯片厂家提供的 bsp 固件库,如 STM32 的原创驱动库 test TencentOS tiny 的测试框架及测试用例,涵盖内核和中间件框架 tools 存放TencentOS tiny提供的工具 其中,基础内核移植只需要关注以下四个目录即可: arch board kernel platform

12.TencentOS tiny 的移植 准备目标硬件( ARM CortexM0 /3/4/7 等 ) 2. 准备编译环境(当前支持 KEIL 、 IAR 、 GCC ) 3. 准备芯片对应的裸机工程(如 STM32 系列芯 片可以使用 CubeMX 生成) 4. 添加内核源码及头文件 5. 配置系统 tick 中断 6. 修改系统配置项( tos_config.h ) 7. 编写测试任务进行移植验证。 TencentOS tiny 定制 demo 开发板 TencentOS tiny 通用移植步骤

13.TencentOS tiny 任务管理 1. TencentOS tiny 启动流程 2. TencentOS tiny 常用任务创建流程 用户编写业务函数入口 配置任务优先级、任务栈等参数 调用 tos_task_create 创建任务 TencentOS tiny 提供的任务 管理函数列表

14.TencentOS tiny IPC 通信模块使用简介 TencentOS tiny 基础内核的 IPC 通信组件主要包括:互斥量、信号量、事件、队列。 互斥量:用于共享资源的互斥排他性访问保护。 使用范式:在进入临界区之前,先尝试获取互斥量(加锁),如果加锁成功,代码进入临界区,出临界区后再释放互斥量(解锁)。如果加锁失败,证明此锁已被其他线程持有,临界区正被其他访问者访问。 信号量:实现任务间同步的机制,用于解决生产者消费者问题。 使用范式:消费者在消费一个资源之前调用信号量的 pend 接口等待资源,生产者线程在生产了一个资源之后调用信号量的 post 接口通知其他消费者。 事件:提供了一种任务间实现同步和信息传递的机制,用于任务间传递数值类信息。 队列:提供了一种任务间实现同步和数据传递的机制,用于任务间传递复杂的数据信息。

15.TencentOS tiny 内存管理 TencentOS tiny 提供两类内存管理模块,分别是 动态内存(堆内存)管理 和 静态内存(块内存)管理 在 tos_config.h 中,配置静态内存组件开关 TOS_CFG_MMHEAP_EN 为 1 ,设置动态内存池大小 TOS_CFG_MMHEAP_POOL_SIZE 调用 tos_mmheap_pool_add 函数创建动态内存池, TencentOS tiny 内核初始化时调用,用户一般无需调用。 用户调用 tos_mmheap_alloc 或者 tos_mmheap_aligned_alloc 申请内存 使用完后调用 tos_mmheap_free 释放内存 1. TencentOS tiny 堆内存使用流程 2. TencentOS tiny 块内存使用流程 在 tos_config.h 中,配置静态内存组件开关 TOS_CFG_MMBLK_EN 为 1 调用 tos_mmblk_pool_create 函数创建块内存池 用户调用 tos_mmblk_alloc 分配一个块 内存 使用完后调用 tos_mmblk_free 释放一个块内存 TencentOS tiny 的基础内核的模块还包括 系统管理,时间管理,软件定时器,功耗管理等模块, 详细使用方法请参考开发指南。

16.TencentOS tiny AT 通信模组适配框架 通信模组库 SAL Wifi , NB , 2G LoRaWAN API 腾讯定制 模组 API 通信模组 API 抽象层 TencentOS tiny AT Framework wifi esp8266 NB-IoT bc35,bc26,N21 LoRa RHF76 2G SIM800A,M26 腾讯 SDK 定制模组 MCU 通信硬件 ( 串口 ) ( 屏蔽通信模组复杂的数据流处理逻辑 ) 模 组驱动 ( 基于 AT 指令 ) 腾讯云 C-SDK LoRa 开放平台 TTN … 腾讯云 IoT Exporer 通信模组驱动适配 ( 基于 AT 指令 , 以 ESP8266 为例 )

17.基于 TencentOS tiny 的腾讯云 C-SDK 组件 shadow OTA NB-IoT Services& Utilities 服务及应用层 Protocol 协议层 TencentOS tiny 基础内核 Functional: Timer Timestamp Memmory Random Printf&Snprintf Mutex Networks: TCP UDP TLS DTLS HAL 移植层 CoAP HTTP MQTT Gateway Data _Template MQTT Client CoAP Client Log DynReg event API 应用编程接口 Application Example 应用示例 腾 讯 云 C | S D K 组 件 Tencent Cloud IoT Explorer 腾讯云 C-SDK 是 TencentOS tiny 的一部分,是核心的上云组件。 接入腾讯云端侧使用步骤: 用户在腾讯云 IoT 平台上创建设备后,在端侧 C-SDK 配置对应的产品 ID 、设备名称、设备密钥; 用户获取自己的传感数据或者业务数据,通过 C-SDK 提供的 API 接口将数据发送到云端; 用户在端侧注册数据接收回调函数,处理云端触发的下行命令或者数据。 优势: TencentOS tiny 天然集成腾讯云 C-SDK 连云组件,用户无需移植; TencentOS tiny 向下兼容多种联网方式,业务层 API 统一标准,有效简化业务调用逻辑。 基于 TencentOS tiny 基础内核的腾讯云 C-SDK 针对资源受限设备进行专项优化裁剪,降低终端成本。

18.基于 TencentOS tiny 的腾讯云 C-SDK 组件 shadow OTA NB-IoT Services& Utilities 服务及应用层 Protocol 协议层 TencentOS tiny 基础内核 Functional: Timer Timestamp Memmory Random Printf&Snprintf Mutex Networks: TCP UDP TLS DTLS HAL 移植层 CoAP HTTP MQTT Gateway Data _Template MQTT Client CoAP Client Log DynReg event API 应用编程接口 Application Example 应用示例 腾 讯 云 C | S D K 组 件 Tencent Cloud IoT Explorer 腾讯云 C-SDK 是 TencentOS tiny 的一部分,是核心的上云组件。 接入腾讯云端侧使用步骤: 用户在腾讯云 IoT 平台上创建设备后,在端侧 C-SDK 配置对应的产品 ID 、设备名称、设备密钥; 用户获取自己的传感数据或者业务数据,通过 C-SDK 提供的 API 接口将数据发送到云端; 用户在端侧注册数据接收回调函数,处理云端触发的下行命令或者数据。 优势: TencentOS tiny 天然集成腾讯云 C-SDK 连云组件,用户无需移植; TencentOS tiny 向下兼容多种联网方式,业务层 API 统一标准,有效简化业务调用逻辑。 基于 TencentOS tiny 基础内核的腾讯云 C-SDK 针对资源受限设备进行专项优化裁剪,降低终端成本。

19.提问环节 Q&A 关注公众号报名 TencentOS tiny 内测活动

20.THANKS 关注云加社区公众号