国产开源IoTOS:腾讯物联网操作系统TencentOS Tiny的探索与实践

2020 年 11 月 20 日

国产开源IoTOS:腾讯物联网操作系统TencentOS Tiny的探索与实践

一、物联网操作系统浪潮


1. 物联网行业的浪潮



2009 年温家宝总理在无锡提出感知中国的战略,无锡率先建立了感知中国研究中心,多所大学在无锡建立了物联网研究院,物联网也正式列入了十一届人大三次会议的政府工作报告,在这之后物联网受到极大的关注。


2016 年以来随着低功耗广域物联网技术的推出,物联网开始呈现井喷式的发展,真正铺开面,实现了广域大范围的连接。根据权威数据统计,国内物联网市场份额在 2018 年就已经达到了 1.3 万亿,而 2020 年这一数字提升到了 1.8 万亿。


物联网在智能家居、生活物联、公共事业、智能能源等多个垂直行业都得到了广泛的应用,相比互联网时代,物联网通讯协议更加多样化,物的碎片化也更严重,统一连接和接入标准的重要性也由此凸显开来。


如何把不同的物体信息搜集整合起来并把它传输到下一个层次?思考这一点时,会遇到非常多的问题,比如功耗以及资源的控制、组网的互通等等。


在这样的需求下,面向物联网的设备和应用需要一个集成系统,通过它们完成底层数据的搜集,由此整个物联网操作系统的市场需求开始爆发了。


现在单一的软件结构很难解决这些问题,成熟的物联网设备采集数据,包括云端互联都需要操作系统支持,而针对不同的业务与应用,需求也不一样。面临实际应用场景我们需要针对不同的行业定制软件方案,所以 IoT 需要专门的定制系统来解决这类问题。


正是有了这样的庞大的物联网市场需求,各大互联网公司开始了自家的物联网生态布局,掀起了物联网操作系统开源的浪潮。


根据目前的数据,华为在早期时候布局了"1+2+1"的物联网战略,也基于自家芯片和业务打造了物联网操作系统,2015 年他们宣布 LiteOS 开源。阿里同样基于公司全栈的生态链进行物联网操作系统打造,并于 2017 年开源了阿里的物联网操作系统 AliOS-Things。睿赛德科技也主导开发了一款知名的国产实时物联网操作系统 RT-Thread,问世十年,也有很大的装机量,同时,2020 年,中移动也发布了 OneOS 物联网操作系统并开源,助力设备接入移动云服务。


放眼海外,物联网操作系统也备受关注,比如 2017 年 12 月份亚马逊收购了 FreeRTOS,并基于 FreeRTOS 内核,增加了重要的 AWS 支持和 IoT 使用案例支持,全面进军物联网生态。2019 年 4 月 18 日,微软宣布收购了 Express Logic 公司,其目标是让 ThreadX 实时物联网操作系统成为 Azure 云上的选项,希望能够增加无缝连接 Azure 云服务的设备数量,同时,风河的 VxWorks、silicon 的 UCOS、ARM 的 mbedOS 等老牌 RTOS 也占据了一定的市场,举足轻重。


物联网操作系统的浪潮吹来,很多人也开始讨论:操作系统到底哪家强?其实站在我的角度来看,大家没必要过多比较哪个操作系统更强,符合业务需求才是最合适的。


2. 浪潮之巅,国产 IoTOS 如何探索?



一款优秀的物联网操作系统,不单单要有技术上的优势,还要契合用户的需求,做到与开发者共建生态。而共建生态的重要性也不需要多说了,大家可以倒推几十年,看看桌面和手机操作系统从百花齐放到最后综合成少数几个用户生态。所以生态能否成功,是操作系统能否发展好的关键之处。


好的操作系统是开发者和用户用出来的,物联网操作系统要形成良好生态,首先技术上要有优势,比如做到物联网代码更简捷、功耗更低,避免做出的功能用户不需要。


另外还要结合用户对不同物联产品的需求做针对开发,尽量使技术符合生态、用户需求,持续地做出商业价值。


无论是从生态打造,还是从技术角度出发,都需要落地到实际生活中,才能够有效解决实际问题,这些才是物联网操作系统的核心竞争力。通过开发者需求和生态逐步迭代,逐步实现商业价值,这样的路线才是在浪潮之巅服务好 IoT 行业的优秀操作系统所应该布局的。


3. 拥抱浪潮,腾讯物联网操作系统的产品布局



针对行业发展的浪潮,腾讯在物联网领域也有完整的物联网布局,覆盖了多个维度,产品能力支持消费物联、智慧城市、教育、医疗、工业、支付、政务等等多垂直行业,也推出腾讯物联网通信平台和开发平台,还有腾讯连连等一系列云上的服务,旨在提供安全稳定的连接平台,帮助开发者低成本的快速实现设备与设备间的互联。


同时,物联网平台也支持主流的物联网协议接入。其中,TencentOS Tiny 服务于低资源、低功耗的物联网终端节点,是整个物联网生态链底层重要的一环,我们希望通过技术开源和生态协同,做好生态链底层这一环,从而完善 IoT 端到端解决方案,实现终端设备的互联互通,为云上海量数据平台引流,服务好 IoT 生态链中的客户差异性需求,推动整个 IoT 产业的发展。


二、TencentOS Tiny 产品架构及核心技术


1. 产品架构



上图是整个 TencentOS Tiny 的产品架构,由下往上看,最下面是目前已经支持的 MCU 芯片和模组,其中包括 STM32 和主流的蜂窝通信模组,提供了驱动框架和外设框架,兼容不同硬件和方便适配不同硬件平台。


再往上面是 TencentOS Tiny 的核心基础内核,再上面是物联网所需要的联网组件(这里下文会详细展开),提供了 IoT 常用的功能组件,比如文件系统、KV 存储和高级语言引擎框架等等,提供了方便用户调用的业务层 API,业务层上也会提供常用的案例供客户和开发者参考。


除此以外,此架构内置了安全框架,为终端设备的设备唯一标识、通信链路加密、密钥安全存储提供了保障,防止物联网设备被攻击。


总结一下, 整个 TencentOS Tiny 物联网操作系统有三个特点


第一,极至精简的内核。内核整体代码量不超过一万行,能够实现超低资源的占用,IDLE 任务下,最小资源占用仅为 0.6KBRAM,1.8KB ROM


第二,功耗低,最小休眠功耗可以达到 uA 级别。


第三,软件架构非常简捷,方便嵌入式开发者以超快的速度入门,只需要把操作系统快速移植上去,上面的 IoT 组件就可以直接使用,非常方便,不需花太多时间成本学习。


2. 核心技术开源-RTOS 内核



TencentOS Tiny 内核提供多任务实时调度、时间管理、异常管理等基础能力。我们与业界相比,最大的优势是内核的代码非常精简。和海外 FreeRTOS 的对比,同样的文件实现源码我们只有几千行,国外的竞品有一万多行。


并不是说我们代码少就有功能缺失了,我们整体的代码虽然精简,但该有的功能都有。在整个代码上,我们以最小的代码实现了最高效的功能处理,这是我们的竞争力。


基于内核提供了通用内核适配层接口,兼容 CMSIS RTOS 和 Posix 接口,整个内核是可以裁剪与配置的,比如业务只使用到任务模块,其他相应的 IPC 功能比如信号量是可以全部关闭,在一些资源受限的场景非常有效。


内核对硬件的抽象主要是在 HAL 层实现,我们的 HAL 层做得很薄,是基于什么考虑呢?HAL 做得非常重,开发者需要很大的学习成本,业界也有在操作系统内核上面做完善的驱动框架,这样看起来会非常的饱满和工整,但适配一个新的平台就要同步适配驱动框架,做过移植适配的开发者就会了解,这样的工作量非常的庞大。


我们做一层薄的 HAL 层,是为了屏蔽不同的硬件差异。为了兼容不同开发者的需求,我们对于驱动适配提供了两条路,开发者可以基于精简很薄的 HAL 层去做适配,也可以使用原厂的 BSP 驱动,通过内核直接调用,这样兼容的硬件会更多,可移植性就更好。


目前我们已经支持了主流的 MCU 及 IP 和架构,包括 ARM Cortex M、A 核、RISC-V、MSP、AVR、ARC、STM8 等架构,其中 STM8 是 8 位单片机,我估计现在业界能够支持八位单片机的也只有极少数的几家,比如我们和 ucos,也正是我们内核非常精简的原因,才能做到在资源非常有限的 8 位单片机上运行。


3. 核心技术开源-通信模组框架与互联网



物联网领域中无线通信模组非常重要,对无线模组的支持基本上决定了整个操作系统是否好用,现在除了 DTU 设备外没有谁会拿个网线做物联网终端了,大家基本上是通过像 NB-IoT、WiFi、2G、4G、5G 等无线方式来完成物联网连接的。


调研市场上现存的无线通讯方式,都是以通讯模组的方式做产品,通信模组跟整个 MCU 之间的通信,是通过 AT 命令完成的,AT 命令和 MCU 之间的通信主要逻辑差不多,所以我们希望做一个 AT 框架处理模组和 MCU 间的数据交互逻辑,以此简化整个通信。


业界也有很多的方案,但对通信没有做到很好的架构分层,架构分的不够清晰。我们做架构的时候把整个 AT 核心组件跟实际模组驱动完全分开。也就是说,现在 wifi 变了对上层的 API 是不用变化的,而下面的驱动直接替换就可以了,应用上层对底层驱动更换无感知,极大提高了方案的可移植性,方便快速部署。


TencentOS Tiny 支持标准的 wifi、蜂窝等 TCP 协议栈模组,也支持了其他物联网协议的模组,比如 LoRa 模组,支持 LoRaWAN API 直连腾讯云。


另外 TencentOS Tiny 还支持腾讯云 IoT 定制模组,定制模组内置腾讯 IoT 服务,可以通过我们提供的腾讯定制模组 API 直接上云,而不需要再跑这些 SDK 了,这样整个软件栈体积更小,所需 MCU 资源更小,成本更低。


我们的愿景是:在 IoT 框架下建立一个通讯模组生态库,希望能把市场上主流的通信模组全兼容到这个框架上,让驱动生态库基本上覆盖了主流的业务需求,如果调试稳定了,下一个厂家再来切换就不需做更多测试了。


随着开源协同的生态逐渐变大,一定会利好开发者和终端厂商。也希望大家可以参与到这个生态库的建设中来,我们对于支持建设的朋友也会给予适当奖励,欢迎大家多多参与。


除了刚才讲到的 AT 通信框架外,我们也提供了全面的 SDK 联网能力,比如还提供了基于 OpenCPU 方式的联网组件,直接拿通信模组做主控,驱动联网组件上云。比如之前我们与 ST 和瑞兴恒方一同做的 基于 LoRa SOC 的 OpenCPU 方案,TencentOS Tiny 内核直接运行在 LoRa 芯片里,这样的方案也可以直接开发传感器的应用,射频也是在同一个芯片上,可以完成 LoRa 数据收发,降低了功耗也节省了成本。OpenCPU 方式下,我们同样也提供标准接口来支持大家接入我们的 IoT 云 平台。


4. 核心技术开源-固件升级



如图是 TencentOS Tiny 的固件升级流程,一般情况下由开发者或者用户在 IoT 平台上 OTA 云创建一个产品和设备,现在基于腾讯云的物联网平台可以完成产品和设备的部署,完成后可以在端侧再生成新的固件,导入到 PC 中,添加固件头形成 OTA 升级包文件。


升级包支持多种,可以传原始固件也可以传压缩过的固件,对于差分升级,需要同时上传新老版本的固件,用于生产差分包。完成固件包上传后,可以从云服务器上触发固件升级,这个流程就会下发参数到终端,终端解析之后下载固件,端侧完成固件完整性校验后写入 OTA 备份区,最后 boot 程序完成校验后覆盖老镜像完成升级,升级完成后设备再向云平台上报升级结果,从而完成整个升级流程。


TencentOS Tiny 的固件升级方案特殊之处在于,我们支持全镜像和差分两种方案,资源受限可以选择消耗更小的差分方案,整个过程中提供固件完整性安全校验,提供掉电保护,还支持固件回滚等。同时,对于差分升级方案,我们也提供完整的差分包制作工具,基于这个工具可以制作差分包部署到云端。


整个 OTA 源码是开源的,包括差分升级,这是业界首个全开源的差分升级方案,我们提供的方案的性能也可以达到业界相同的水平,当然可能会有一些兼容性的问题,也欢迎大家参与到共建中来,差分升级方案在 TencentOS Tiny 组件目录下有全部的源码,欢迎大家试用。


5. 核心技术开源-低功耗



低功耗提供了多级低功耗的管理框架,实时操作系统在任务状态下,一般情况下可以自动进入低功耗模式。


因为有周期性的时钟,系统在低功耗模式下逗留的时间非常短,一般是十毫秒,会间歇的唤醒,还是会有比较高的功耗,有的产品或者是业务需要休眠很长的时间,这个时候根本不需要一直唤醒,可以根据策略实现非周期时钟的唤醒方案,计算出下次唤醒的时间,这个时间内就可以把 Tick 时钟停了,每 4 个、7 个、5 个节拍来一次时钟唤醒就可以了,没必要每个节拍唤醒,这样就减少了整个系统的休眠功耗。


我们也会做一些低功耗的案例,配合外部的硬件设备外设调节功耗。比如通信模组或者是其他耗电量大的终端硬件,配合做休眠管理,在 Tickless 下把外部硬件休眠或者是直接断电,整个功耗也就下去了。


6. 核心技术开源-安全组件



安全在物联网领域非常重要,特别是在跟金融级相关的物联网终端上,比如扫码终端、支付设备,对安全的要求非常高。这块如何保障呢?


TencentOS Tiny 在终端有完整的布局,首先从 MCU 侧会跟根据 MCU 本身的安全能力,比如有些架构是支持 TEE 的,OS 配合 TEE 硬件做相应的软件级处理,针对安全级别高的会外挂 SE 芯片,配合 SE 芯片做安全支持,整个 TencentOS Tiny 提供安全的方案是基于腾讯云的,安全端云一体化。


设备端提供的安全机制:设备 ID、设备证书,保障设备唯一性,云端也会提供一套完整安全校验机制,包括证书验证、密钥的管理和发放,两端配合来实现安全一体化。提供多种安全等级方案,一机一密、通信数据的加密等等,现在也配合腾讯云平台实现了 TID 认证机制,整个这套安全方案,包括内核的机制也都符合腾讯物联网安全技术规范。


7. 核心技术开源-elfLoader



elfLoader 是 TencentOStiny 提供的对 elf 格式文件进行加载并执行的组件。支持两种目标文件的链接,包括目标文件.o 和共享目标文件.so ,也有点类似于 Linux 下动态加载的概念,来加载 so 文件。


elfLoader 组件有几个特点:首先是通过组件可以把基础内核与应用分离,可按自身的需求去调用,需要什么样的应用就用 elfloder 去调用,而且可共享地址空间,不用时卸载模块,释放的地址空间可以让其他的 APP 来使用。


elfLoader 使用流程如下:先将 APP 应用编译成.o 或者.so 文件,再放到设备可访问的文件系统中去,调用 elfLoader 组件接口加载文件系统中的.o 或者.so 文件,再去查找需要执行的函数,等到运行完毕后再卸载掉就可以了。


使用流程很简单,提供这样的方式,可以方便业务层灵活调配,使用不同应用,比如同样的硬件产品,有可能在 A 厂商跑 A 应用、B 厂商跑 B 应用,基于这样的方式临时切换也比较灵活。


8. 核心技术开源-教程文档及视频资源



我们也提供了很多的文章和教材,比如 TencentOS Tiny 开源代码仓的 DOC 目录下有完整的指导文档可供查看。


如果大家觉得看文档很累,我们把核心组件的视频教程也发布在腾讯云上,里面就有上文介绍到的功能的视频教程,会手把手教大家如何体验。


三、TencentOS Tiny 开源生态



目前 TencentOS Tiny 在开发者生态已经建立较好的影响力,首先要感谢线上线下的开发者伙伴们,你们的贡献让 TencentOS Tiny 能够走到现在,非常感谢。


现在 TencentOS Tiny 支持的硬件平台超过了六十款,比如 STM32、NXP、华大、Nordic 蓝牙、GD32、国民技术、TI、瑞兴恒方、广和通等 MCU 和通信模组。


为了方便开发者体验,从 2019 年到现在,我们共提供了五款官方开发套件,去年也开展了很多活动送出了定制开发套件,后续也会持续把开发套件提供给大家体验。我们希望大家保持良好的技术氛围一起进行交流。




我们也会持续跟开发者保持互动,2019 年 7 月份,我们开放 了 TencentOS Tiny 全网公测,当时有一百多位开发者参与公测,收获了很多反馈意见,我们非常感谢,基于这些意见针对需求做了很多有价值的改动。


9 月份也做过开源沙龙,后续也参加过 ST 的研讨,共同展示解决方案、还开展了云大学线上授课、举办了很多次的 IoT 应用创新大赛,提供了定制开发板给大家免费体验,超过五百家的开发者参与比赛,获奖作品非常多,比如有净水器、空气净化器的系统、拿 TencentOS Tiny 做撸猫神器,远程浇画、制作桌面 UI、机房监控系统、甲醛监测仪等。


后续也会继续开展线上线下活动,希望更多朋友参与进来,基于 TencentOS Tiny 做出更多有创意有价值的 IoT 产品或者是技术探索,希望大家能够多多参与,共同构建活跃的开源生态和圈子。


四、TencentOS Tiny 合作伙伴及解决方案生态



在 IoT 行业生态链中有三个重要参与者,芯片原厂、模组厂商和终端厂商,TencentOS Tiny 积极与他们合作共建 IoT 生态,包括 ST、NXP 等芯片原厂,广和通、瑞兴恒方等模组厂商,光合显示,鑫悦购等终端工商,也包括腾讯 AI Lab,腾讯微瓴等公司内部合作的团队,我们期待更多的合作伙伴加入我们生态圈!


五、TencentOS Tiny 项目实践


下文为大家介绍 TencentOS Tiny 的部分应用案例。



传统农业有一种说法是靠天吃饭,农作物的生长需要阳光、雨露、土壤,但是能不能利用人工智能和 IoT 技术做到不靠天吃饭呢?


我们跟腾讯 AI 团队做了腾讯农业智能种植方案,主要工作是通过 IoT 设备和传感器检测大棚和温室的温湿度、酸碱度、光照等指标,通过网络发送到云端进行 AI 计算处理,调度和调整相关设备进行工作调节,最终达到节能增产提升农业收入的目的。目前在辽宁、山东已经试点使用,腾讯滨海大厦也有该方案的现场展示,欢迎各位专家来参观交流。



第二个案例是大家比较关心的健康方面。关于健康问题,大家很关心 PM2.0 的含量,而这个数据用户无法拿到,基于这样的背景,TencentOS Tiny 团队发起了公益项目,以 TencentOS Tiny 物联网操作系统为基础,并叠加了腾讯云物联网开发平台、腾讯 LoRa 社区等多个 IoT 产品孵化的一个公益原型验证项目。


关于 PM2.5 空气颗粒物检测,TencentOS Tiny 提供了的精简内核,LoRaWAN SDK 助力大气监测数据快速上云,目前参与开发者将近 40 人,监测终端覆盖到了深圳的市区,这样可以实时观测到空气质量变化,对大家健康出行、户外运动提供很好的参考。



第三个案例的背景是这样:如果有重要的客户临时拜访,这个时候会议室订不到该怎么办?我们也做了一些解决方案,主要是联合腾讯内部的网络平台部无线技术、腾讯企业 IT 等部门合作完成,TencentOS Tiny 运行在会议室各种终端设备,显示会议室信息,核心功能是人体红外检测,检测是否有人,对预定半个小时,但没人的会议室,系统会自动释放资源,这样可以有效利用会议室。


还有其他方面,红外控制器控制会议室显示设备、投影仪和电视等等,也会部署烟感传感器,监测会议室空气质量,通过组件上到云端进行处理,云端应用服务也可以方便下达控制命令,这样也可以方便控制插座、窗帘、电机等等。


以甲醛监测仪为例,看看实际开发步骤,首先第一步先准备硬件,以 TencentOS Tiny 官方开发板进行开发,wifi 选取 ESP8266、传感器是英国甲醛传感器。接着获取源码,在主流编译环境,大家可以移植基础内核,具体可参考下图所示的案例工程。




接着给 wifi 加入腾讯云的定制固件,连接腾讯云物联网平台,这里需要注意两个地方,如下图所示,左边需要转接到中间这样的模组串口与 PC 端连接,右边是模组进入下载模式,PC 端下载工具主要选择固件、写入地址和 flash 参数等,最后点击 start 可以直接下载。



端云对接部分,首先是在腾讯云 IoT 平台创建项目和产品,在产品下面新建一个设备,获取设备 ID、名称和密钥,最后编译运行就可以了。



最后一步,接入小程序和公众号。如下图所示,端侧软件看到云平台有定时上报的程序,云平台相关设置页面上可以生成二维码,这样在用微信扫描就可以通过小程序绑定设备,开发者可以通过小程序可视化显示甲醛数据、设置告警数据,甲醛数据超标平台自动推送到用户关注的公众号。



通过以上五个简单的步骤,就可以创建一个甲醛监测仪,大大提高产品开发效率。


产品效果图如下图所示,非常小巧,左边是与业界知名品牌产品的对比,他们显示 0.06PPM,我们是 0.067ppm,我们的精度更高、而且成本更加有竞争力。



六、TencentOS Tiny 项目愿景、未来展望



TencentOS Tiny 的总体愿望是希望通过技术开源、生态协同、携手合作伙伴共同发展 IoT 业务,推动 IoT 产品和解决方案商业落地。


对芯片和模组硬件的合作伙伴,TencentOS Tiny 物联网操作系统将进行深度技术合作,积极支持相关硬件平台共同推动开发者生态和业务生态。


对终端产品和解决方案,TencentOS Tiny 物联网联合腾讯云上的行业产品积极给合作伙伴创造商业落地机会,对使用腾讯云的服务设备接入数量达到较大规模的腾讯云可以给予一定产品优惠政策,支持快速商用。


随着 TencentOS Tiny 的项目快速发展,越来越希望物联网系统生态能够走到合作共赢轨道上来,最后把项目捐赠给开放原子基金会,这样基于更开放的心态共建软件生态,促进国产物联网操作系统发展、推进物联网行业标准制定,解决物联网发展生态碎片化的问题。TencentOS Tiny 捐赠给基金会后我们也会积极配合开发者应用生态,希望大家也能积极参与进来。


七、Q&A


Q:TencentOS Tiny 是只可以接入腾讯云的平台吗?


A: TencentOSTiny 作为腾讯的 IoT 产品,优先做的服务支持肯定是基于腾讯云物联网平台接入的。架构设计上,内核+组件的解耦也是做得非常好的,支持很多协议开源组件,也支持标准的协议栈,用户如果想对接自己搭建的平台也可以使用,用户的可发挥空间非常大,接入到自己私有云上也是支持的。


腾讯业务对接的时候也会对接私有云同样的架构也是兼容的,并不是只可以接入腾讯云平台,大家搭建的平台也可以,只要是支持标准协议栈都可以。


Q:物联网操作系统开发都需要遵循什么规范?


A: 操作系统的开发到现在,业界也没有形成非常明确的规范,规范也在推进,主要是两个方面,首先是操作系统内核要遵循一些业界规范,比如内核接口规范;其次,物联网通讯协议要有规范,比如 MQTT 等通用的物联网协议,肯定按照业界规范来做的。


开发过程中使用 TencentOS Tiny 开发,建议参考遵循 TencentOS Tiny 提供的移植的方法,有些同学按照自己方式去移植遇到了一些坑,建议大家熟悉 TencentOS Tiny 的时候先看文档和资料。


Q:想用 TencentOS Tiny 开发产品,但是是否 TencentOS Tiny 是否会限制我使用云平台?


A: 不是只可以接入腾讯云的平台,我们提供的物联网协议栈也是基于公开协议实现的,大家可以基于 TencentOS Tiny 对接其他的云平台,也有开发者拿我们 TencentOS Tiny 去对接过友商的平台,这块我们官方肯定是基于腾讯平台,但是不会限制用户的行为,也欢迎大家基于开放合作的心态来共同发展整个物联网行业生态。


并没有强限制,本身是基于开源的项目而做的,一定会鼓励大家多体验、多去横向的对比,做一些技术创新等等,也欢迎大家把自己的应用或者是行业经验贡献到开源社区上来,大家一起做大,现在物联网碎片化会面临非常多的机遇,大家都可以去探索。


Q:物联网是基于什么通讯协议做的呢?


A: 这是根据需求而来的,目前业界普遍使用是 MQTT、TCP,协议还可以是 wifi 、NB-IoT、4G 或者蓝牙,这是根据业务场景而来的,具体需求具体使用我们都是支持的。


Q:TencentOS Tiny 的任务管理机制可以介绍一下吗?


A: 说起来内容比较多,建议可以去阅读源码和文档,很详尽。任务管理都差不多,有链表,分任务优先级,后面可以建议阅读源码。


Q:TencentOS Tiny 有无虚拟串口功能?


A: 主要是看硬件,我们是可以模拟成虚拟串口的,这是比较常用的功能。


Q:物联网操作系统是基于什么语言?


A: 主要基于 C 语言,未来规划也有相应的高级语言引擎,以后会上线。


Q:如何转型物联网开发?


A: 题目很大,也问得非常好,答案是开放性的。如果你是一个非常有经验的软件工程师,转型做物联网开发非常简单,程序员对各种语言都相通的,嵌入式物联网平台下,传统的程序员开发唯一的差别是要基于硬件做实际操作,这跟 Windows 上编程有一些不同,但还是基于编译后再去运行的机制,能够静下心来学习 IoT 相关教程,结合物联网应用场景尝试去做就可以了。


近期腾讯内部也发起过 TencentOS Tiny 的案例活动,很多跟大家一样是纯软件开发,之前也没搞过嵌入式硬件的,基于我们教程很快搭建了一个甲醛监测的原型,转型可以基于这样实际案例做切入,也欢迎大家关注 TencentOS Tiny 的公众号看我们的实际案例,相信零基础的你也可以实现,做转型其实很快。


Q:能否具体介绍一下 TencentOS Tiny elfloader 的特点吗?


A: 就跟刚才讲的一样,基于一个不变的基础内核,根据需求去随时加载应用或者是卸载应用,就像在安卓上装一个 APP 一样,同样的内存空间可以装支付宝也可以装微信,你更喜欢微信就把支付宝卸载了,以前共用的是同一个内存空间,最大的特点是用户可以方便的随时切换应用,同样也可以达到节省嵌入式资源的目的。


Q:有没有什么样硬件限制?


A: 硬件限制主要还是要根据 IoT 的应用场景决定的,比如 IoT 应用本身比较简单,对资源要求比较低,可能在 STM8 单片机上也可以运行。硬件资源非常小,要在上面跑非常复杂的 IoT 协议栈,八位单片机肯定不够,还是要根据产品和业务场景来决定硬件怎么选型。


Q:JS 已经开源了吗?


A: 目前还没有开源,现在有很多功能在持续开发中,后续开源了也会在开源社区第一时间公布。


Q:接入服务设备的数量上限是多少?


A: 跟终端操作系统关系不大,但是跟物联网平台关系比较大,物联网平台的接入是比较海量的,是分布式的计算机集群,平台接入的数量是由云平台决定的,现在吞吐量非常大,物联网平台上亿级设备接入都没问题,目前也不是太大的问题,主要看后面的后台服务器部署多与少的问题。


Q:两个可替换的通信模组 AT 驱动一定要混合在一起吗?


A: 不会的,两个可替换通信模组 AT 框架和驱动并不一起,可以看看源码,所有的通信模组驱动是放在 device 目录下,BC28、BC35、EC200S 是分开的,不会重叠放在一起的,您的业务需要哪种模组就把这个模组源码编译进去就可以了。


但是 AT 框架是通用的,特别是网络层 API 是统一的,这样的好处是上层业务应用不需要发生变化,比如采集一个传感器并通过网络接口把传感器数据发出去的逻辑是不会发生变化的,只需要把下面的驱动替换即可,4G 可能换成了 wifi 驱动,或者是 wifi 驱动换成 4G 了,这对于应用层没有太大的变化和限制,驱动层并没有混合在一起。


Q:两位老师团队现在有没有在招人?


A: 我们也有在招一些人才,校招会有比较多的、社招比较少一些,但是特别优秀的也可以跟领导申请名额。


Q:未来是否会加快开发效率?


A: 前期也有规划,也有开发者贡献这样编译框架加快开发速度,但是现在因为有一些项目的压力,也没有这么快。


功能特别多,物联网场景碎片化特别的严重,业务需求非常大,主要是先针对于核心的上云的需求做前期支持,他们的开发需求会优先,至于编译的便捷性也会逐步的考虑,也会慢慢做,短期内也没这么快,友商也做了十年才能做到这个份上,希望大家给我们一些时间,技术需要沉淀,TencentOS Tiny 遇到的问题也可以随时在开源社区提出来,我们也会重点关注大家提出的问题,对于需求特别紧张、需求量很大的特性也会纳入优先支持列表进行支持。


Q:CubeMX 包什么时候加上去?


A: 目前没有,我们也需要看业务需求的,后续可以根据大家的需求来做这件事,现在没有这么快。


Q:目前 TencentOS Tiny 有开源贡献者证书吗?


A: 是有的,但是这个证书因为腾讯开源审核得会比较严格,每一年一个项目最多是一到两人,所以证书含金量非常高,是整个腾讯开源组织的认可,拿了这个证书在腾讯各种合作中有优势。欢迎大家基于 TencentOS Tiny 做出核心的贡献能力,比如列表里面有很多可能来不及做的功能,开发者愿意支持贡献上来,这个拿到这个证书概率会很高。


我们项目加入开源基金会也是这样的想法,基于中立场景,鼓励大家参与项目共建。也希望大家不只是做项目的参与者,能自己也成为项目某个模块的开发者,owner,希望更多 TencentOS Tiny 的粉丝和小伙伴真正可以成为 TencentOS Tiny 的主人,一起参与建设,优秀的建设者会跟腾讯开源申请颁发贡献者证书。会根据贡献大小评判,贡献特别大一定会有这个证书的!


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接


国产开源IoTOS:腾讯物联网操作系统TencentOS Tiny的探索与实践


2020 年 11 月 20 日 10:03859

评论

发布
暂无评论
发现更多内容

架构师训练营第三周学习笔记

邢永春

CAP原理及作业

橘子皮嚼着不脆

「架构师训练营」第 3周作业

小黄鱼

架构师训练营第 2 期

极客时间架构师训练营 1 期 - 第 7周总结

Kaven

使用K3S创建本地开发集群

东风微鸣

Kubernetes k3s Traefik

架构师训练营第三周作业

邢永春

Java键值对排序

ilovealt

Java

Spring Data Jpa deleteAll大概了解

ilovealt

Java jpa

Netty源码解析 -- PoolChunk实现原理

binecy

源码 Netty 内存布局

第7周总结

alpha

架构师训练营第 1 期

第三周 单例

Geek_9527

字节三面被挂后,狂刷算法,意外斩获阿里offer,定级P6+

互联网架构师小马

Java 编程 字节跳动 面试 算法

单例模式样例

jorden wang

一站式接口测试服务体系建设

DrawDe朱

接口自动化 自动化测试平台

Week3 - 代码重构

evildracula

架构 学习总结

Fedora32安装和卸载openjdk11

ilovealt

Linux Openjdk

Java核心基础——反射

老农小江

Java 基础

第15周作业

Vincent

极客时间 极客大学

极客时间架构师培训 1 期 - 第 7 周作业

Kaven

架构师训练营 week7 作业

陈皓07

第二章课后习题

博博

架构师训练营 1 期第 7 周:性能优化(一)- 总结

piercebn

架构师训练营第 1 期

第二章学习笔记

博博

全链路压测在信用卡行业的实践

DrawDe朱

全链路压测

架构师训练营第七周

我是谁

「架构师训练营第 1 期」

读完Java名著《Effective Java》: 我整理了这50条技巧

Geek_71bb95

Java 程序员 架构 面试 编程语言

第七周作业

alpha

架构师训练营第 1 期

Week3 - 练习

evildracula

架构

囚徒困境:跳脱思维的牢笼

多元思维力-晓陶

认知 思维 多元思维力

架构师入门学习感悟三

踉踉跄跄走江湖

工作1-3年的程序员,应该具备怎么样的技术能力?该如何提升?

Java架构师迁哥

AI如何在普惠金融的探索中发挥作用?

AI如何在普惠金融的探索中发挥作用?

国产开源IoTOS:腾讯物联网操作系统TencentOS Tiny的探索与实践-InfoQ