科普干货|漫谈鸿蒙LiteOS-M与HUAWEI LiteOS内核的几大不同

摘要:鸿蒙和LiteOS的内核都是一样的名字,可它们究竟有什么不同呢?一起来对比一下文件吧!

HarmonyOS系统

HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。

鸿蒙系统的特点(硬件互助,资源共享):

1)分布式软总线

分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发任务和传输数据。

2)分布式设备虚拟化

分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,多种设备共同形成一个超级虚拟终端。针对不同类型的任务,为用户匹配并选择能力合适的执行硬件,让业务连续地在不同设备间流转,充分发挥不同设备的资源优势。

3)分布式数据管理

分布式数据管理基于分布式软总线的能力,实现应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接,为打造一致、流畅的用户体验创造了基础条件。

4)分布式任务调度

分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布式任务。

5)一次开发,多端部署

HarmonyOS提供了用户程序框架、Ability框架以及UI框架,支持应用开发过程中多终端的业务逻辑和界面逻辑进行复用,能够实现应用的一次开发、多端部署,提升了跨设备应用的开发效率。一次开发、多端部署。

6)统一OS,弹性部署

HarmonyOS通过组件化和小型化等设计方法,支持多种终端设备按需弹性部署,能够适配不同类别的硬件资源和功能需求。支撑通过编译链关系去自动生成组件化的依赖关系,形成组件树依赖图,支撑产品系统的便捷开发,降低硬件设备的开发门槛。

HarmonyOS系统架构整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。因为系统比较庞大,今天主要是针对其中一个内核进行分析,即LiteOS内核。

Huawei LiteOS

Huawei LiteOS是华为针对物联网领域推出的轻量级物联网操作系统,是华为物联网战略的重要组成部分,具备轻量级、低功耗、互联互通、组件丰富、快速开发等关键能力,基于物联网领域业务特征打造领域性技术栈,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期,可广泛应用于可穿戴设备、智能家居、车联网、LPWA等领域。

Huawei LiteOS自开源社区发布以来,围绕物联网市场从技术、生态、解决方案、商用支持等多维度使能合作伙伴,构建开源的物联网生态,目前已经聚合了50+ MCU和解决方案合作伙伴,共同推出一批开源开发套件和行业解决方案,帮助众多行业客户快速的推出物联网终端和服务,客户涵盖抄表、停车、路灯、环保、共享单车、物流等众多行业,加速物联网产业发展和行业数字化转型。

关键特性

1)低功耗框架:

LiteOS是轻量级的物联网操作系统,最小内核尺寸仅为6KB,具备快速启动、低功耗等优势,Tickless机制显著降低传感器数据采集功耗。

2)OpenCPU架构:

专为LiteOS小内核架构设计,满足硬件资源受限需求,比如LPWA场景下的水表、气表、车检器等,通过MCU和通信模组二合一的OpenCPU架构,显著降低终端体积和终端成本。

3)安全性设计:

构建低功耗安全传输机制,支持双向认证、FOTA固件差分升级,DTLS/DTLS+等,构建低功耗安全传输机制。

4)端云互通组件:

LiteOS SDK端云互通组件是终端对接到IoT云平台的重要组件,集成了 LwM2M、CoAP、MQTT、mbed TLS、LwIP等全套IoT互联互通协议栈,大大减少开发周期,快速入云。

5)SOTA远程升级:

SOTA远程升级,通过差分方式降低升级包的尺寸,更能适应低带宽网络环境和电池供电环境,经过特别优化差分合并算法,对RAM资源要求更少,满足海量低资源终端的升级诉求。

系统支持对比

从官网的数据来看,目前HUAWEI LiteOS支持的硬件比鸿蒙还丰富一些,提供了更多内核案例和移植策略,从代码来看,它们都支持Cortex-M内核和Cortex-A内核,HarmonyOS内核文件分别有两个,即liteos-a和liteos-m,例程分别有对应的支持,从内核名称上看到liteos的字样,可以推测鸿蒙内核对于Huawei LiteOS内核具有一定的继承性;而Huawei LiteOS开源主线上仅用一个统一的内核支持了多种CPU架构,可以从Arch目录下看到提供了对Cortex-A(包括32位及64位处理器)的支持,以及Cortex-M的支持。

总结两个系统对硬件内核架构的支持情况。

因为产品定位不同,两个系统的对内存的差别也是非常大,HUAWEI LiteOS因为其具有很高的剪裁特性,在硬件资源有限的时候的仅保留内核,可以剪裁到6KB的ROM以及消耗2KB的RAM资源,可以说对资源的消耗是低到一定程度,而HarmonyOS为了保证系统性能要求,对硬件的资源则是128K的ROM及2MB的RAM的要求。

从资源消耗可以看出,HUAWEI LiteOS主打IOT物联网业务领域,更适合硬件低配置、低成本、低功耗的应用场景;HarmonyOS更适合多媒体交互,需要Js增加开发效率的复杂大应用的场合使用。

现在两个系统都已经开始在市场在开发者在进行学习和开发,那对其硬件的支持又是如何,总结如下表:

HarmonyOS的开发板支持目前还是以华为自研的芯片为主,都是自身主打的IOT及视频处理芯片,这样开发速度快可以更快的应用到自己的设备上,验证系统可靠性;HUAWEI LiteOS除了支持华为自研芯片的开发板外,还支持了市场上主流的ARM开发学习板(如STM原生、小熊派、野火、正点原子等),同时提供了移植指南,可以让开发者更容易进行开发板适配以及内核移植,并轻松进行IoT业务的上手和开发。

内核文件对比

因为两者对Cortex-M的内核名字都是liteos-m,因为我就对比了两者的内核kernel文件夹。

首先分别从各自的git库下载master下发布的最新文件

文件库地址

HarmonyOS-liteos-m:

https://gitee.com/openharmony/kernel_liteos_m.git;

HUAWEI LiteOS:

https://gitee.com/LiteOS/LiteOS.git;    

从gitee上的库kernel文件夹下的文件的日期都是两个月前,说明内核的发布时间比较一致,那文件的内容,分别对比文件目录,发现有很大的相似性,共有文件目录都是/base;/extended;/include;HUAWEI LiteOS下会有一个Kconfig和Makefile用于文件包含定义和Kconfig文件菜单生成;而HarmonyOS则是BULD.gn和los_init.c分别用于IDE的文件编译及内核文件剪辑初始化文件,文件功能基本移植,只是适配的编译环境不同。

从这里开始就有些不同,base下的文件夹设置两者的区别较大。

左边是HarmonyOS,右边是HUAWEI LiteOS的base文件下的文件部分,HarmonyOS把内核文件封装在IPC和Core两个文件中,而HUAWEI LiteOS则是放在的base文件下,对比文件发现,HarmonyOS内核的文件名字大部分在HUAWEI LiteOS base文件夹下找到,但文件大小都不相同,这次仅对比一个文件,task.c,观察两者的异同,虽然有部分接口名字已经不一样,但实际的实现基本类似,可以看出对于LiteOS kernel的继承性。

左边是HarmonyOS提供task操作接口,右边是HUAWEI LiteOS提供task操作接口,都提供了task的初始化(建立),文件上下文查询,钩子函数的使用,同时HarmonyOS提供了所有task的信息获取,HUAWEI LiteOS提供了task入口地址的获取的细节功能。

今天分享到这里,后面希望可以分享各自系统移植及使用。

本文分享自华为云社区《鸿蒙LiteOS-M内核与HUAWEI LiteOS内核对比》,原文作者:o0龙龙0o 。

 

点击关注,第一时间了解华为云新鲜技术~