摘要:谈到物联网,最大的问题之一就在于沟通,不同设备、不同标准之间的沟通、软件与硬件的沟通。如何解决这种 “沟通”问题,操作系统变得尤为重要。
提到操作系统,第一时间我们就会想到运行在电脑上的Windows,想起运行在手机上的安卓。这些系统直接运行在“裸机”设备的最低层,搭建起其他软件、应用运行的环境与基础。操作系统的兴起、完善,促成了软件与应用的兴起,铸就了辉煌的PC时代与移动互联网时代。
谈到物联网,最大的问题之一就在于沟通,不同设备、不同标准之间的沟通、软件与硬件的沟通。如何解决这种 “沟通”问题,操作系统变得尤为重要。物联网操作系统调度“物体”本身,对“物体”的调度过程通过层层分发、层层下达,通过调度云、边、端,不同层级中不同设备的计算资源而实现。因此,物联网中的操作系统涉及到芯片层、终端层、边缘层、云端层等多个层面
当前很多物联网设备已经从传统意义上的“哑”设备成功转型为智能化设备。那么一个设备从“哑”到智能化,必须面对两个问题:资源管理、设备的互联互通。而在这物联网操作系统百家争鸣,百花齐放的时代,华为LiteOS物联网操作系统要如何破浪前进?
LiteOS资源管理:麻雀虽小,五脏俱全
说到物联网操作系统,不得不提物联网的内核,一个内核要具备尺寸伸缩性强、实时性必须足够强、架构可扩展性强、足够安全和可靠、低功耗节能省电等优良特质。比如,一个极端的情况下,内核尺寸必须维持在10K以内,以支撑内存和CPU性能都很受限的传感器。这要求内核需具备完善的任务调度、内存管理、本地存储、复杂的网络协议等功能,以满足高配置的智能物联网终端的要求。
LiteOS内核的资源管理,可分为四个部分:时间管理、存储管理、硬件管理、同步通信资源。在LiteOS的最底层,实现的是对各类硬件的一个总体抽象,这主要是解决LiteOS和CPU体系的耦合。对于操作系统核心而言,和CPU的耦合主要在于任务的调度、异常的处理等,这和每个CPU体系架构强相关。LiteOS的任务调度,正是基于CPU架构而非单个特定的CPU,目前已经支持ARMV6M、ARMV7M、RISIC-V等,这就意味着,LiteOS可以在不同的MCU厂商的产品上做到无缝移植,降低设备厂商切换硬件的难度。
一般的内存管理都是采用的双链表模式,按需分配。那么这个时候就会带来一个问题,如何管理这个双向链表呢?普通的双向链表,对查找比较麻烦,有序的双向链表,对排序的时间存在不确定性,这会给开发者带来困扰。为了降低开发者对时间搜索的不确定性,LiteOS采用了TLSF以及基于红黑树的二叉搜索树,这两个方法将会大大的降低我们搜索的复杂度。当内存经过多次的申请和释放之后,组织空闲内存的线性链表可能很长,在这种情况下如果去搜索一个匹配的内存可能很费劲,因为你不知道最合适的内存在什么位置(有可能在链表尾部)。而采用TLSF的方式,通过计算MAP的位置,可以一次命中,这样就让开发者查找一块空闲的内存时间变得更加确定。
同时,LiteOS的中断管理、驱动等功能,还给传统裸机开发者带来更好的开发体验。例如中断管理,我们知道在MCU上,串口的数量比较多,每个串口都可能分配一个中断号,如果是裸机开发者,就不得不写很多中断服务函数挂载到中断表中。而LiteOS的中断管理,开发者可以通过采用注册的方式,传递相同的服务函数,只需参数不同即可,这就意味着开发者可以实现串口中断函数的最大复用,同样的道理,还可以应用到驱动程序中。
LiteOS互联互通:有趣的灵魂万里挑一,做开发者钟爱的皮囊——提供快速集成和统一的协议
LiteOS的资源管理,是为满足开发者对资源管理的诉求,解决物联网硬件上的碎片化而生。就拿TCPIP通信来说,实现方式就千奇百怪,有使用蜂窝模组自带的SOCKET、有使用PPP拨号、有使用WIIF模组、有使用LWIP这样的软件协议栈的。不是说这样不好,毕竟它们都是有趣的灵魂;但是对于开发者而言,会带来一个问题——为了保证兼容性,他们不得不基于TCPIP进行开发,从而导致代码出现各种各样的宏开关,到最后这种代码几乎没有办法维护。
为了解决开发者委曲求全的适配各种方式带来毁灭性的维护问题,LiteOS提出组件功能标准化。不论你是WIFI模组还是LTE模组,还是其他的软件栈,只要采用统一的标准API之后,各种各样形态的组件,就像是菜单上的一个选项,只需要打勾选择想要即可。LiteOS操作系统从内核到互联网协议的抽象层框架,构建统一的API标准。基于这个标准,开发者可以快速将协议或者其他组件插入到框架,帮助开发者复用已有能力,也加快了集成的效率。
LiteOS一键上云:采用积木式的组件和组装模式,更灵活轻便
在华为云IoT的云管端战略中,LiteOS承担着云服务落地的关键角色,因此如何更好的、更合理的引导终端设备快速的上云是LiteOS的主要目标。整体看,LiteOS可以分作两部分:
- LiteOS的内核,这部分主要是用来管理端侧资源,让端侧设备更好、更方便的使用端侧的各种硬件资源;
- LiteOS的互联互通性,将云服务做到协议无关性,更方便的在各种传统设备上集成。
原则上,LiteOS的各个模块在开发设计过程中,可以做到模块解耦、可裁剪、可配置。从这可以看出LiteOS在开发整体上,可以说是属于 “积木型开发”,开发者像搭建积木一样简单来使用,可以按照自己的实际应用场景,选择不同的解决方案,从而解决物联网碎片化的问题。
但用原始的小积木搭建一个满意的作品,也要有设计的一个过程,包括选择何种协议,使用哪个组件。事实上,物联网设备存在一个“老大难”的问题——存储资源、计算资源有限。例如,TLS除了要占用大几十KB的ROM和RAM以外,还非常消耗我们的计算资源;在一个200M主频的MCU在ECHDA模式下,握手协议过程都需要接近10秒钟,对于那些低速设备可能会更长。
在这种情况下,如果告诉你,有个模组,通过简单的AT指令就可以直接和华为云IoT互通,你会不会很惊喜呢?华为LiteOS将互联互通功能集成到了模组内部,丰富自运算资源、存储资源。设备厂家通过简单的AT指令就可以调用LiteOS的互联API,省却了移植、配置等烦恼,再也不用考虑和云对接的底层流程和详细细节。
关于LiteOS也许你还好奇
Linux系统作为目前物联网设备中应用最广泛的操作系统,LiteOS与Linux有什么区别?
和其他物联网操作系统对比,我们LiteOS的靠谱(优势)在哪里呢?
采用华为LiteOS系统和用其他系统接入华为云loT平台是否有区别?
未来,LiteOS会有哪些新特性?
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。