我们知道云的发展非常迅速,云上有非常多的人工智能模型以及大数据的模型。如果这些模型缺少数据,也是没有用武之地的。那么我们端侧物联 操作系统,在底层担任一个非常重要的角色,他的一个主要作用是为云侧引流,把我们终端设备或者说哑终端通过操作系统这样一个终端软件做使能,把他变成一个智慧化的终端,把数据送到云端。这样云端的边缘计算也好,大数据分析也好,才能真正能结合业务场景做一些具体的分析,真正使终端设备智能化。我们的物联 操作系统就能够一定程度上促进整个物联 的生态、乃至我们腾讯主导的产业物联 的发展。
TencentOS tiny 简介
我们目前已经跟主流的芯片和模组厂商达成了合作,包括意法半导体以及我们国内的华大半导体,通过我们OS使能这些芯片或者是模组,从而让业务能快速接入到我们的平台,从而支持智慧城市以及多种物联 行业的应用。当然我们希望有更多的合作伙伴加入到我们这个行业来,跟我们一起来扩展物联 终端的生态,共同促进我们整个行业的发展。
TencentOS tiny 的软件架构
接下来我详细介绍一下TencentOS tiny的软件架构。下边这张图是我们TencentOS tiny架构全景。
1. OS支持CPU和MCU
我们先从这个架构图的最低往上看,首先我们是OS支持CPU和MCU,目前来说主要是ARM CORTEX系列。我们知道ARM CORTEX系列在物联 领域基本上是占比60%到70%的市场份额。未来我们还会考虑支持更多的IP和架构。比如说ESP8266以及新的开源架构RISC-V,也欢迎大家一起跟我们共建这个CPU生态。
1.TencentOS tiny 的源码目录
首先我们来看一下TencentOS tiny整体的源码目录,这个目录很长,我一个一个讲。第一个目录主要是放置我们TencentOS tiny支持的IP和架构,比如说我们支持ARM中断,调度汇编以及tick相关的代码就存放在这个目录。
BOARD目录是我们支持的一些开发板或者说一些硬件列表,这里我只放了一个,是我们的定制开发板。Component主要放置我们OS上面的组件,比如说IOT协议栈,比如说COAP、MQTT以及我们腾讯云的(C-SDK)。FS主要放的是文件系统,Security主要是放我们TencentOS tiny的安全协议代码,以及我们白盒加密的一些安全特性代码。Device会放一些 络模组的驱动,比如说我们常用的一些 络模组BC35、BC26,模组的一些驱动放在这下面。
DOC开发文档的目录,到时候大家重点需要关注DOC目录,这里面有非常多的开发指南,以及SDK的说明,以及我们开发板的使用指南等等。kernel主要分为基础内核和头文件,以及PM是我们低功耗框架的一些源码。
准备好硬件之后,再选择一个编译环境,当前我们TencentOS支持三个编译器,KEIL、IAR、GCC。大家需要准备一个芯片对应的裸机工程,能运行基本功能,比如说串口printf打印,STM32系列芯片都可以用CubeMX自动生成。在这个基础上,把内核的源码和头文件加到工程里面来,去配置好tick中断,我们的系统是需要tick中断去支持的。另外修改系统的配置项,这里面可以对我们整个内核的模块进行配置,包括你要不要使用信 量,你要不要使用队列等。最后一个是编写一些测试任务进行移植验证就可以了。
3. OS内核里面的一些使用方式
接下来我展开讲一下OS内核里面的一些使用方式。首先我们了解一下我们TencentOS的启动流程。在芯片上电之后,我们首先会做一个板级初始化,主要做什么事情要是初始化一些比如说时钟、串口、GPIO等基本的外设。接下来就可以进行内核初始化,初始化内核之后,你再去创建自己想创建的任务,调用TOS START就可以启动这个内核,进行任务调度。目前来说主要常见的任务创建流程主要是自己写这个业务函数入口,配置好任务优先级,调用这个创建就可以了,这边有一个简单的事例,整个OS的任务创建流程都有的。右边是我们任务模块提供的API,都是非常精简,常用的。
OS内存管理。我们当前主要有两个内存管理模块,一个是支持动态内存的堆内存管理,还有一个是静态内存的块内存管理,其实基本的使用流程都差不多。刚开始我们需要在配置文件里面把这个功能模块使能了,我们需要调用函数去创建一个内存池。同样块内存的使用方式也非常类似的,我们申请一个内存池然后去分配释放。另外我们的基础内核也还包括系统管理、时间管理、软件定时器、功耗管理等模块。这个我不展开,详细的使用办法可以参考我们的开发指南。
那所有的差异在哪解决/strong>差异在我们的框架及我们通信模组库里解决,也就是说我们会在串口硬件下面,通信模组库里面建立一个庞大的生态库,不说100%,希望越来越多增加模组驱动,支持市面上60-70%的通信模组,把市场上主流的都覆盖进来。对于厂家或者是物联 产品开发者,需要选择这个模组的时候,他可以到我们库这个里面来选择,他免去了封装,不需要做移植。因为我们整套都是可以跑通的,直接调上层的API就能完成。比如说选择了ESP8266,他也不用适配,直接调用上层API,使用我们腾讯云CSDK直接上云去了。基本上对模组的适配工作量等于零,对于其他的,比如腾讯定制模组也是一样的。
这里需要讲一个区别是什么呢strong>腾讯定制的模组,包括LORA WAN和SAL的一个区别,SAL因为只提供了基本的TCP IP通道,所以你在上面还需要做应用层的协议,比如说C-SDK。但是腾讯定制模组把C-SDK直接植入到模组里面去,也就是说他的AT模组集成了应用层协议直接对接到云。所以说这个是有一个区别的。我们同一个框架上能把这几种不同的情况都支持起来,尽量减少用户处理这个AT指令包括数据的收发复杂的问题。
当然有人问到你的模组费假如没有支持怎么办/strong>不用担心,我们也提供了非常多的参考例子,实际上是AT指令不同,你可以自己根据我们这个框架,把你的模组AT指令填进去就可以了。比如说我们可能需要适配的是初始化连接SEND这样AT的一个实现。这里举了一个简单的例子,ESP8266的一个操作,他对外API这个参数其实是一定,说具体里面的AT实现可能每家模组都不一样,你做一下修改就可以了,整个框架不会做太大的变更。
基于TencentOS tiny 的腾讯云C-SDK组件
如何基于TencentOS tiny及腾讯C-SDK来实现我们的上云。图的左侧是基于TencentOS内核的腾讯C-SDK,也就是说我们把腾讯云的C-SDK也纳入到我们TencentOS tiny的一部分,也是一个核心的上云组件。我们集成过来跟嵌入式是有一些区别的,我们会在这个基础上做一些优化。首先,我们把C-SDK植入到我们的OS里面之后,大家可能不需要自己去做,这个东西在我们的OS里面,不会让你直接操作。
汪礼超
点击观看视频回顾
———下方更多精彩———-
活动推荐
关注云加 区,回复 3 加读者群
点在看,让更多人看到!
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!