内核代码量不到一万行、GitHub star超5k,国产开源物联网操作系统TencentOS Tiny的探索与实践

作者 凌敏

嘉宾|王佳、汪礼超

国内物联网操作系统浪潮是从2015年前后掀起来的。在此之前,人们更习惯称其为嵌入式操作系统,这也是物联网操作系统的前身。当前,很多物联网操作系统仍是基于传统的嵌入式操作系统内核,与若干物联网相关软件栈组成终端软件平台。

随着物联网在智能家居、汽车、可穿戴设备等多个行业得到广泛应用,物联网操作系统的市场需求日益增长,国内也涌现出了多款受开发者欢迎的本土物联网操作系统。

2019年9月,腾讯物联网操作系统TencentOS Tiny正式开源;2020年10月,TencentOS Tiny捐赠给中国开放原子开源基金会。截至2022年11月,TencentOS Tiny在GitHub上的star数达5.7k,fork数量1.5k,开发者规模达5000人。目前,TencentOS tiny可支撑智慧城市、智能水表、智能家居、智能穿戴、车联网等多种物联网行业应用,能为物联网终端厂家和终端设备提供一站式软件解决方案。

近日,InfoQ采访了腾讯操作系统研发负责人王佳、腾讯TencentOS Tiny项目负责人汪礼超,以期进一步了解TencentOS Tiny的发展历程与技术实践。

GitHub地址:

https://github.com/OpenAtomFoundation/TencentOS-tiny

TencentOS Tiny的探索与实践

对腾讯而言,做物联网操作系统是一件自然而然的事情。

依托云、安全、AI等技术创新,腾讯云与智慧产业事业群(CSIG)一直致力于打造智慧产业升级方案,并形成了一条物联网生态链。针对云场景,腾讯早在2010年就打造了服务器操作系统TencentOS Server。随着腾讯云边缘计算业务快速发展,腾讯在2019年也启动了边缘操作系统TencentOS Edge的研发。

物联网操作系统TencentOS Tiny的研发工作则启动于2018年。作为物联网生态链底层重要的一环,物联网操作系统在一定程度上能够促进整个物联网的生态,乃至由腾讯主导的产业物联网的发展。对下,物联网操作系统能完善物联网端到端解决方案,实现终端设备的互联互通;对上,能为云上海量数据平台引流,将云端的边缘计算、大数据分析等能力与业务场景相结合,从而使终端设备更加智能化。

对于这款操作系统的定位,腾讯在一开始就想得很清楚:针对MCU芯片,打造B端生态链的前端操作系统,低功耗,低资源占用。“与其他物联网操作系统相比,我们有自己的特点,比如我们对腾讯云的支持,以及针对物联网嵌入式应用的特性。我们没有把这款物联网操作系统做得大而全,而是选择做极致精简的内核。”汪礼超对InfoQ说道。

2019年9月,TencentOS Tiny正式在GitHub上开源,发布不到1周便登上了GitHub全网开源项目热榜第二的位置。从2019年开始,TencentOS Tiny每年都会举办多场开发者活动,并陆续成立了内核、AI等多个SIG组,其他物联网相关SIG组也在筹备当中。2020年10月,腾讯将TencentOS Tiny捐赠给中国开放原子开源基金会。目前,TencentOS Tiny支持硬件平台数量80+,与STM32、NXP、瑞萨半导体、华大半导体、沁恒微电子、Nordic、兆易半导体、国民技术、TI MSP、瑞兴恒方、广和通等多家MCU和模组厂家达成合作,共同推进物联网终端产品落地商用。

产品架构及技术特性

TencentOS Tiny的产品架构从下往上依次是主流MCU芯片/模组、核心基础内核及物联网所需要的联网组件。

底层,MCU芯片/模组包括STM32和主流的蜂窝通信模组,提供了驱动框架和外设框架,兼容不同硬件,方便适配不同硬件平台。顶层,提供了物联网常用的功能组件,如文件系统、KV存储和高级语言引擎框架等等;提供了方便用户调用的业务层API,业务层上也会提供常用的案例供客户和开发者参考。此外,还内置了安全框架,为终端设备的设备唯一标识、通信链路加密、密钥安全存储提供了保障,防止物联网设备被攻击。

整体而言,TencentOS Tiny具备三个特性:

1. 内核精简,低资源占用。在产品定位上,TencentOS Tiny更聚焦在互联网领域,为其提供非常精简的操作系统。据介绍,TencentOS Tiny内核整体代码量不超过一万行,所有组件也都是可裁减可配置的,能够实现超低资源的占用,降低物联网软件使用成本。IDLE任务下,最小资源占用仅为0.6KB RAM、1.8KB ROM。

2. 高效管理框架,功耗低。智慧城市等领域对功耗非常敏感,这也是市场痛点之一。TencentOS Tiny能动态调整系统功耗,完整包含MCU和外围设备功耗管理,用户可以根据业务场景选择可参考的低功耗方案,最小休眠功耗可以达到uA级别,有效降低设备耗电,延长设备寿命。

3. 软件架构简洁,可移植性良好。TencentOS tiny提供多种编译器快速移植指南和移植工具,目前已经支持主流芯片和通信模组,降低开发者使用门槛,有效提升开发效率。

作为底层基础设施,操作系统普遍难以创造直接收益,更多是通过为行业提供解决方案来实现商业化。因此,对物联网操作系统来说,如何打造自身的差异化竞争力是一个需要长期思考的问题。

在汪礼超看来,物联网操作系统需要根据不同的应用场景发挥自身优势,比如在金融场景,安全与否是关键;在能源场景,功耗是首要考虑的问题。根据不同的应用场景,形成对应的解决方案或打造上层软件应用包,这些都是实现商业化的途径。

目前,TencentOS Tiny的应用场景主要包括MCU芯片/物联网模组、物联网终端设备厂家以及物联网解决方案:

• 支持主流的MCU芯片,如STM32 NXP等,支持主流通信模组,如ESP8266 Wi-Fi、LoraWAN模组、NB-IoT模组等;

• 提供完整的终端软件栈,简单易用的端云SDK缩短设备厂家的开发周期,进而节省终端产品开发成本;

• 提供一站式软件解决方案,方便各种物联网设备快速接入腾讯云,可支撑智慧城市、智能水表、智能家居、智慧农业、智能穿戴、车联网等多种行业应用。

物联网“碎片化”特性明显,如何做好生态建设?

物联网浪潮的兴起让“万物互联”成了可能。根据IoT Analytics的统计及预测,2020年,全球共有117亿台物联网设备,联网设备数量第一次超过了非联网设备;预计到2025年,全球物联网设备连接数将超过300亿。

与iOS、Android、Windows等操作系统不同,物联网操作系统的终端形态差异巨大,不同的行业有着不同的消费终端。随着行业进入高速发展期,物联网以及物联网终端的形态更加复杂,需求呈现多样化,“碎片化”特征也更加明显。

“现在物联网领域最大的问题就是‘碎片化严重’,操作系统作为物联网生态的其中一环,不足以解决整个‘碎片化’难题。不过,我们非常看好万物互联这个方向,也有比较全面的布局。”据王佳介绍,不同于桌面、服务器操作系统提供通用解决方案,物联网操作系统更具针对性,专注的领域更加垂直。

正因如此,要想做好物联网操作系统生态,需要行业形成统一标准,达成技术共识。“有了统一的行业标准后,生态链上的不同角色能够更好地合作互通,降低软硬件适配成本。否则,物联网操作系统生态将一直处于割裂状态。”汪礼超表示,目前在智能家居行业,这一愿景已初步实现——行业在酝酿新的智能家居协议,以解决“碎片化”难题。也许在未来,针对某个行业,会出现行业级别的物联网操作系统“一统江湖”,但归根结底,还是要由市场需求来驱动。

物联网操作系统要想进一步发展,汪礼超认为,行业需要找到共用的一套融合操作系统,或是共建一个融合性的社区,共同推动行业达成共识,一起把蛋糕做大。就像在服务器操作系统领域,大家普遍基于Linux内核构建操作系统,在技术栈上能够实现统一。在物联网操作系统领域,也可以形成统一的技术标准,包括硬件接口标准、内核接口标准、物联网协议标准、应用接口标准等。“展望未来,无论是针对细分领域还是针对整个行业,物联网操作系统都需要建立一套标准。这套标准也一定是大家共同建立和维护的。”

在汪礼超看来,除了要形成统一的物联网操作系统行业标准,让不同设备之间可以基于一套标准实现互联互通,在未来,这些趋势/方向同样值得关注:

• 微内核。微内核的核心优势是内核精简,可剪裁,能更方便地部署到不同的硬件上。

• RISC-V架构。作为一种新兴的精简指令集架构,RISC-V最大的特点是开源免费,降低物联网终端成本,促进物联网操作系统与硬件的结合,加快软件体系发展。

• 车联网。未来新能源汽车有可能彻底取代传统燃油车,并且新能源汽车的智能化程度更高,对软件系统的要求也会更高,在物联网协议、安全、人机交互等方面都将提出更高的要求,这也是物联网操作系统在未来比较大的业务方向之一。