鸿蒙LiteOS-M内核与HUAWEI LiteOS内核对比

举报
o0龙龙0o 发表于 2020/11/16 20:20:53 2020/11/16
【摘要】 鸿蒙和LiteOS的内核都是一样的名字,来对比一下文件吧
HarmonyOS系统

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

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

分布式软总线

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

分布式设备虚拟化

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

分布式数据管理

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

分布式任务调度

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

一次开发,多端部署

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

统一OS,弹性部署

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

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

Huawei LiteOS

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

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

关键特性

低功耗框架:

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

OpenCPU架构:

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

安全性设计:

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

端云互通组件:

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

SOTA远程升级:

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

系统支持对比

       从官网的数据来看,HUAWEI LiteOS支持硬件比较鸿蒙还是丰富一些,提供了更多内核案例和移植策略,从代码来看鸿蒙支持ARM类型更多,分别支持Cortex-M内核和Cortex-A内核,内核文件也分别有两个,即liteos-a和liteos-m,例程分别有对应的支持;而HUAWEI LiteOS现阶段仅是对Cortex-M内核的支持,因为也是产品地位不同,估计未来也不会去适配A系列内核的处理吧,因为更好性能的需求,HarmonyOS应该是更好的选择。总结两个系统对硬件内核架构的支持情况。

 

支持内核架构 HarmonyOS HUAWEI LiteOS
Cortex-M
Cortex-A ×
RISC-V 未来 未来
X86 未来 ×

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

 

资源消耗 HarmonyOS HUAWEI LiteOS
RAM

128KB

(JS开启建议256)kB

2KB
ROM 2MB 6KB

        从资源消耗可以看出,HUAWEI LiteOS更适合资源需求低,应用要求不高,对成本功耗要求较高的应用场合;HarmonyOS更适合多媒体交互,需要Js增加开发效率的复杂大应用的场合使用。

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

开发板支持

HarmonyOS

HUAWEI LiteOS
  Hi3861 Cloud_STM32F429IGTx_FIRE
 

Hi3516

STM32F769IDISCOVERY
 

Hi3518

STM32L431_BearPi

        HarmonyOS的开发板支持还是以华为自研的芯片为主,都是自身主打的IOT及视频处理芯片,这样开发速度快可以更快的应用到自己的设备上,验证系统可靠性;HUAWEI LiteOS的开发板支持更多的是市场上主流的ARM开发学习板(STM原生、小熊派、野火),这样的原因推测是让开发者更好的做芯片切换和容易学些如何进行内核移植的工作内容,以便上手容易快捷。

内核文件对比

        因为两者对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,看看两者的异同,发现基本没有使用过相同的方法实现功能,所以不展示方法内容对比,对比一下各自提供了哪些方法用于task的操作接口。

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

 

 

 

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

欢迎大家关注我的公众号,谢谢。

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。