欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

TA能让你家的那些“哑”终端都“活”过来

程序员文章站 2023-12-31 23:11:10
谈到物联网,最大的问题之一就在于沟通,不同设备、不同标准之间的沟通、软件与硬件的沟通。如何解决这种 “沟通”问题,操作系统变得尤为重要。...

提到操作系统,第一时间我们就会想到运行在电脑上的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会有哪些新特性?

看视频了解更多

☟☟☟

 

【DevRun开发者沙龙直播】攻城狮与攻城狮PLUS的硬核对话,LiteOS专场

 

点击这里→了解更多精彩内容

本文地址:https://blog.csdn.net/devcloud/article/details/107973888

上一篇:

下一篇: