【TencentOS tiny】又有一个操作系统开源
新闻
2019年9月18日,腾讯宣布将开源
自主研发
的轻量级
物联网实时操作系统TencentOS tiny。相比市场上其它系统,腾讯TencentOS tiny在资源占用、设备成本、功耗管理以及安全稳定等层面极具竞争力。该系统的开源可大幅降低物联网应用开发成本,提升开发效率,同时支持一键上云,对接云端海量资源。
源码已在github上开源:https://github.com/Tencent/TencentOS-tiny
正题
很荣幸,能亲眼见证TencentOS tiny的开源,也很荣幸能在一个多月前内测使用过它~
不得不说,TencentOS tiny的内核确实是非常非常小巧,最少资源占用为RAM 0.6KB
,ROM 1.8 KB
。这是他们团队自主研发的RTOS,源码非常简单易懂,源码作者以非常清晰的逻辑实现了整个内核(还是非常佩服戴大神的,膜拜一下)。
了解一下TencentOS tiny的框架
TencentOS tiny主要由一个轻量级RTOS内核+
多个物联网组件构成,,从下到上主要包括:
CPU库 :TencentOS tiny支持的CPU IP核架构,当前主要支持ARM Cortex M0/3/4/7
,还有现在很火的RISC-V
,当然,腾讯物联网团队肯定也会支持更多种类更多IP核与开发板。
驱动管理层 :包括BSP
板级支持包,这些东西主要由MCU芯片厂家开发与维护,、HAL
硬件抽象、Drivers设备驱动,这部分对于纯粹嵌入式开发者来说还是很重要的,肯定会越来越完善的!
内核 :TencentOS tiny
实时内核包括任务管理、实时调度、时间管理、中断管理、内存管理、异常处理、软件定时器、链表、消息队列、信号量、互斥锁、事件标志等模块,接下来我也将写一系列TencentOS tiny
内核源码分析
的文章,敬请期待吧!
IoT协议栈 :TencentOS tiny
提供lwip、AT Adapter、SAL层
,支持不同的网络硬件,如以太网、串口WIFI、GPRS、NB-IoT、4G
等通信模块。在TCP/IP
网络协议栈上提供常用的物联网协议栈应用层,如COAP、MQTT
,支撑终端业务快速接入腾讯云;
安全框架 :TencentOS tiny
为了确保物联网终端数据传输安全以及设备认证安全,提供了比较完整的安全解决方案。安全框架提供的DTLS
和TLS
安全协议加固了COAP
及MQTT
的传输层,可确保物联网终端在对接腾讯云时实现安全认证和数据加密;另外针对低资源的终端硬件,安全框架还提供与腾讯云IoTHub
配套的密钥认证方案,确保资源受限设备也能在一定程度上实现设备安全认证;物联网安全是非常重要的,这些框架也是必须存在的。
组件框架 :TencentOS tiny
提供文件系统、KV存储、自组网、JS引擎、低功耗框架、设备框架、OTA、调试工具
链等一系列组件,这部分我觉得还是很不错的,期待ing;
开放API (规划开发中):TencentOS tiny
将在协议中间件和框架层上提供开放API
函数,这样子就能很方便使用中间组件的功能,我是最喜欢这种开发的,不造轮子,能直接使用。简单来说这个API能快速对接腾讯云,实现终端业务上云的需求,最大程度减少终端物联网产品开发周期,节省开发成本;
示例应用 :TencentOS tiny
提供的示例代码,模块测试代码等,方便用户参考使用。
腾讯云物联网平台(图中最上层的部分):严格来说这部分不算TencentOS tiny
的框架内容,这是接入平台层了,腾讯云的物联网平台都是提供多种语言的SDK
包,当然在嵌入式设备上肯定使用C SDK
的,不过总的来说都是很不错的。
总的来说TencentOS tiny
还是非常不错的,该有的功能都有,可以考虑使用一下这个操作系统~
对于杰杰来说,作为嵌入式开发者,我是很看好物联网的,也一直在往这条路上缓缓前行,在万物互联的时代,说不定真的能在赚钱
的同时还能为世界做出一丢丢贡献
(如果没有那就算了)。
据我所知,TencentOS tiny
后续也将推出基于事件驱动模型的调度,用于某些单片机上不支持基于上下文调度的多任务。
顺便再透露一下,我将接下来会写一系列TencentOS tiny
内核分析的文章,全网首发哦!ps:得到源码作者的亲自指点,绝对干货!!!
喜欢就关注我吧!
图文教程:
简单上手:
深度源码分析:
配套例程:
视频教程:
- 【TencentOS tiny学习】视频汇总
- 【视频】01-初识TencentOS tiny
- 【视频】02-TencentOS tiny基础知识
- 【视频】03-TencentOS tiny移植
- 【视频】04-TencentOS tiny任务-1
- 【视频】05-TencentOS tiny任务-2
- 【视频】06-TencentOS tiny队列-1
- 【视频】07-TencentOS tiny队列-2
- 【视频】08-TencentOS tiny消息队列
- 【视频】09-TencentOS tiny信号量-1
- 【视频】10-TencentOS tiny信号量-2
- 【视频】11-TencentOS tiny互斥锁-1
- 【视频】12-TencentOS tiny互斥锁-2
- 【视频】13-TencentOS tiny互斥锁-3
- 【视频】14-TencentOS tiny事件-1
- 【视频】15-TencentOS tiny事件-2
- 【视频】16-TencentOS tiny软件定时器-1
- 【视频】17-TencentOS tiny软件定时器-2
- 【视频】18-TencentOS tiny软件定时器-3
相关PPT资料:
喜欢就关注我吧!
相关代码可以在公众号后台获取。
更多资料欢迎关注“物联网IoT开发”公众号!
【TencentOS tiny】又有一个操作系统开源的更多相关文章
- Tiny Mapper是一个.net平台开源的对象映射组件
NET平台开源项目速览(14)最快的对象映射组件Tiny Mapper 阅读目录 1.Tiny Mapper基本介绍 2.Tiny Mapper 基本使用 3.Tiny Mapper 指定配置使用 ...
- 【TencentOS tiny】 超详细的TencentOS tiny移植到STM32F103全教程
移植前的准备工作 1. 获取STM32的裸机工程模板 STM32的裸机工程模板直接使用野火STM32开发板配套的固件库例程即可.可以从我github上获取https://github.com/jiej ...
- 如何基于TencentOS tiny,快速打造属于自己的IoT小应用?
导语 | 近日,云+社区技术沙龙“腾讯开源技术”圆满落幕.本次沙龙邀请了多位腾讯技术专家,围绕腾讯开源与众多开发者进行探讨,深度揭秘了腾讯开源项目TencentOS tiny.TubeMQ.Kona ...
- 【TencentOS tiny】深度源码分析(1)——task
任务的基本概念 从系统的角度看,任务是竞争系统资源的最小运行单元.TencentOS tiny是一个支持多任务的操作系统,任务可以使用或等待CPU.使用内存空间等系统资源,并独立于其它任务运行,理论上 ...
- 【TencentOS tiny】深度源码分析(2)——调度器
温馨提示:本文不描述与浮点相关的寄存器的内容,如需了解自行查阅(毕竟我自己也不懂) 调度器的基本概念 TencentOS tiny中提供的任务调度器是基于优先级的全抢占式调度,在系统运行过程中,当有比 ...
- 【TencentOS tiny】深度源码分析(3)——队列
队列基本概念 队列是一种常用于任务间通信的数据结构,队列可以在任务与任务间.中断和任务间传递消息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务能够从队列里面读取消息,当队列中的消息是空时, ...
- 【TencentOS tiny】深度源码分析(6)——互斥锁
互斥锁 互斥锁又称互斥互斥锁,是一种特殊的信号量,它和信号量不同的是,它具有互斥锁所有权.递归访问以及优先级继承等特性,在操作系统中常用于对临界资源的独占式处理.在任意时刻互斥锁的状态只有两种,开锁或 ...
- 【TencentOS tiny】深度源码分析(7)——事件
引言 大家在裸机编程中很可能经常用到flag这种变量,用来标志一下某个事件的发生,然后在循环中判断这些标志是否发生,如果是等待多个事件的话,还可能会if((xxx_flag)&&(xx ...
- 【TencentOS tiny】深度源码分析(8)——软件定时器
软件定时器的基本概念 TencentOS tiny 的软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受硬件定时器资源限制的定时器服务,本质上软件定时器的使用相当 ...
随机推荐
- FastJson格式化Request对象导致的一次异常思考
一.问题描述: 近期,在环境中出现一个阻塞性的异常“nested exception is java.lang.IllegalStateException: It is illegal to call ...
- Oracle sqlldr 在DOS窗口导入多列数据到数据库表
sqlldr 用法详见:https://www.cnblogs.com/rootq/archive/2009/03/01/1401061.html 测试内容: 1.创建数据库表: create tab ...
- c语言实现去除字符串首尾空格
字符串内存图如下: 引入头文件: 1 #include<stdlib.h> 2 #include<stdio.h> 3 #include<string.h> 函数原 ...
- oracle用imp导入dmp文件
oracle命令行登录 sqlplus 用户名/密码 创建用户 create user 用户 identified by 密码 ; 创建表空间 create tablespace 表空间名 dataf ...
- Java验证手机号
在实际开发中我们需要对手机号格式校验,以下是对中国手机号校验的实现. public class PhoneUtils { /** * 中国手机号码 */ private static Pattern ...
- Python中使用高德API实现经纬度转地名
场景 高德API提供给开发者们一些常用功能的接口,其中有一种叫地理/逆地理编码能实现 地名查询经纬度和经纬度查地名. 实现 高德API平台: https://lbs.amap.com/ 注册并登陆 找 ...
- [VB.NET Tips]赋值运算千万要注意
赋值运算符是一个语句,不能在表达式中使用,表达式中的等号表示相等而不是赋值. 上示例: Dim x As Integer Dim y As Object x = 5 y = x = 5 Console ...
- Mybatis源码解析,一步一步从浅入深(五):mapper节点的解析
在上一篇文章Mybatis源码解析,一步一步从浅入深(四):将configuration.xml的解析到Configuration对象实例中我们谈到了properties,settings,envir ...
- 2018年蓝桥杯java b组第八题
标题:日志统计 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有N行.其中每一行的格式是: ts id 表示在ts时刻编号id的帖子收到一个"赞" ...
- SpringBoot起飞系列-Web开发(四)
一.前言 从今天你开始我们就开始进行我们的web开发,之前的一篇用SpringBoot起飞系列-使用idea搭建环境(二)已经说明了我们如何进行开发,当然这是搭建起步,接下来我们就开始进行详细的开发, ...