HarmonyOS - 面向全场景的分布式操作系统
OpenHarmony 是开放原子开源基金会(OpenAtom Foundation)旗下开源项目,定位是一款面向全场景的开源分布式操作系统。
OpenHarmony 在传统的单设备系统能力的基础上,创造性地提出了基于同一套系统能力、适配多种终端形态的理念,支持多种终端设备上运行,第一个版本支持 128K~128M 设备上运行,欢迎参加开源社区一起持续演进。针对设备开发者,OpenHarmony 采用了组件化的设计方案,可以根据设备的资源能力和业务特征进行灵活裁剪,满足不同形态的终端设备对于操作系统的要求。可运行在百 K 级别的资源受限设备和穿戴类设备,也可运行在百 M 级别的智能家用摄像头 / 行车记录仪等相对资源丰富的设备。
技术架构
OpenHarmony 整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照 “系统> 子系统 > 功能 / 模块” 逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能 / 模块。OpenHarmony 技术架构如下所示。
内核层
内核子系统:采用多内核(Linux 内核或者 LiteOS)设计,支持针对不同资源受限设备选用适合的 OS 内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程 / 线程管理、内存管理、文件系统、网络管理和外设管理等。
驱动子系统:驱动框架(HDF)是系统硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。
系统服务层
系统服务层是 OpenHarmony 的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:
系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI 等子系统组成。
基础软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 等子系统组成。
增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT 专有业务等子系统组成。
硬件服务子系统集:提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT 专有硬件服务等子系统组成。
根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
框架层
框架层为应用开发提供了 Java/C/C++/JS 等多语言的用户程序框架和 Ability 框架,两种 UI 框架(包括适用于 Java 语言的 Java UI 框架、适用于 JS 语言的 JS UI 框架),以及各种软硬件服务对外开放的多语言框架 API。根据系统的组件化裁剪程度,设备支持的 API 也会有所不同。
应用层
应用层包括系统应用和第三方非系统应用。应用由一个或多个 FA(Feature Ability)或 PA(Particle Ability)组成。其中,FA 有 UI 界面,提供与用户交互的能力;而 PA 无 UI 界面,提供后台运行任务的能力以及统一的数据访问抽象。基于 FA/PA 开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
特点
硬件互助,资源共享
主要通过下列模块达成
分布式软总线
分布式软总线是多设备终端的统一基座,为多设备间无缝互联提供了统一的分布式通信能力,能够快速发现并连接设备,高效地传输任务和数据。
分布式数据管理
分布式数据管理位于基于分布式软总线之上的能力,实现了应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接,为打造一致、流畅的用户体验创造了基础条件
分布式任务调度
分布式任务调度基于分布式软总线、分布式数据管理、分布式 Profile 等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、绑定 / 解绑、以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况并结合用户的习惯和意图,选择最合适的设备运行分布式任务
设备虚拟化
分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,将周边设备作为手机能力的延伸,共同形成一个超级虚拟终端。
一次开发,多端部署
OpenHarmony 提供用户程序框架、Ability 框架以及 UI 框架,能够保证开发的应用在多终端运行时保证一致性。一次开发、多端部署。
多终端软件平台 API 具备一致性,确保用户程序的运行兼容性。
支持在开发过程中预览终端的能力适配情况(CPU / 内存 / 外设 / 软件资源等)。
支持根据用户程序与软件平台的兼容性来调度用户呈现。
统一 OS,弹性部署
OpenHarmony 通过组件化和组件弹性化等设计方法,做到硬件资源的可大可小,在多种终端设备间,按需弹性部署,全面覆盖了 ARM、RISC-V、x86 等各种 CPU,从百 KB 到 GB 级别的 RAM。
设备类型
OpenHarmony 支持如下几种设备类型:
轻量系统类设备(参考内存≥128KB)
面向 MCU 类处理器,例如 Arm Cortex-M、RISC-V 32 位的设备,资源极其有限,参考内存≥128KB,提供丰富的近距连接能力以及丰富的外设总线访问能力。典型产品有智能家居领域的联接类模组、传感器设备等。联接类模组通常应用在智能物联网设备中,负责实现联接部分的硬件模块,在智能家居领域由厂家集成到其设备中。例如:联接类模组提供 WLAN/Bluetooth 的接入和数据的联接,模组与厂家家居的芯片通常通过 UART 或 GPIO 等总线接口进行通信。
小型系统类设备(参考内存≥1MB)
面向应用处理器,例如 Arm Cortex-A 的设备,参考内存≥1MB,提供更高的安全能力,提供标准的图形框架,提供视频编解码的多媒体能力。典型产品有智能家居领域的 IPCamera、电子猫眼、路由器以及智慧出行域的行车记录仪等。
标准系统类设备(参考内存≥128MB)
面向应用处理器,例如 Arm Cortex-A 的设备,参考内存≥128MB,提供增强的交互能力,提供 3D GPU 以及硬件合成能力,提供更多控件以及动效更丰富的图形能力,提供完整的应用框架。典型产品有高端的冰箱显示屏等。
大型系统类设备(参考内存≥1GB)
面向应用处理器,例如 Arm Cortex-A 的设备,参考内存≥1GB,提供完整的兼容应用框架。典型的产品有智慧屏、智能手表等。
详细特征
* 本次开源部分主要支持百 K 级,百 M 级设备,以下内容主要介绍涉及到的相关子系统内容。
系 统
简 介
链 接
JS 应用开发框架
作为 JS 应用开发框架的轻量实现,提供一套跨平台的类 web 应用开发框架,通过 Toolkit 将开发者编写的 HTML、CSS 和 JS 文件编译打包成 JS Bundle,然后再将 JS Bundle 解析运行成 C++ UIKit 的 View 组件进行渲染。通过支持三方开发者使用声明式的 API 进行应用开发,以数据驱动视图变化,避免了大量的视图操作,大幅降低应用开发难度,提升开发者开发体验。
DFX
针对不同硬件架构和资源提供组件化且可定制的 DFX 框架。根据 RISC-V、Cortex-M、Cortex-A 不同硬件平台,提供两种不同的轻量级 DFX 框架。
README
XTS 认证
XTS 是 OpenHarmony 生态认证测试套件的集合,当前包括 acts(application compatibility test suite)应用兼容性测试套,后续会拓展 dcts(device compatibility test suite)设备兼容性测试套等。
全球化
全球化资源管理子系统主要提供语言资源回溯和多偏好语言支持的能力,包括多语言资源回溯和多偏好语言支持。
公共基础
公共基础库存放 OpenHarmony 通用的基础组件。这些基础组件可被 OpenHarmony 各业务子系统及上层应用所使用。
内核
OpenHarmony 内核是面向 IoT 领域的实时操作系统内核,它具备类似 RTOS 般轻快和 Linux 般易用的特点。包括功能组件部分:进程和线程调度、内存管理、IPC 机制、timer 管理等操作系统基础组件。
分布式任务调度
分布式任务调度模块负责跨设备组件管理,提供访问和控制远程组件的能力,支持分布式场景下的应用协同。
分布式软总线
实现近场设备间统一的分布式通信能力管理,提供不区分链路的设备发现和传输接口。包含服务发布、数据传输、安全等功能。
启动恢复
启动恢复负责在内核启动之后,应用启动之前的操作系统中间层的启动。支持使用 LiteOS-A 内核的平台,当前包括:Hi3516DV300 平台和 Hi3518EV300 平台。
图形
主要包括 UI 组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,构建基于轻量 OS 的应用框架,满足硬件资源较小的物联网设备的 OpenHarmony 系统应用开发。
媒体
为多媒体应用开发者提供统一的开发接口,使得开发者可以专注于应用业务的开发,轻松使用多媒体的资源。
安全
主要提供样例给开发者展示如何去使用已有的安全机制来提升系统的安全能力,包括安全启动、应用权限管理、IPC 通信鉴权、HUKS、HiChain、应用签名验签。
测试
开发过程采用测试驱动开发模式,开发者基于系统新增特性可以通过开发者自己开发用例保证,对于系统已有特性的修改,也可通过修改项目中原有自测试用例保证,旨在帮助开发者在开发阶段就能开发出高质量代码。
用户程序框架
包含两个模块:Ability 子系统和包管理子系统。Ability 子系统,是 OpenHarmony 为开发者提供的一套开发 OpenHarmony 应用的开发框架。包管理子系统,是 OpenHarmony 为开发者提供的安装包管理框架。
AI 子系统
AI 业务子系统是提供原生的分布式 AI 能力的子系统,提供了统一的 AI 引擎框架,实现算法能力快速插件化集成。框架中主要包含插件管理、模块管理和通信管理等模块,对 AI 算法能力进行生命周期管理和按需部署。后续,会逐步定义统一的 AI 能力接口,便于 AI 能力的分布式调用。同时,提供适配不同推理框架层级的统一推理接口。
泛 Sensor
泛 Sensor 中包含传感器和小器件,传感器用于侦测环境中所发生事件或变化,并将此消息发送至其他电子设备,小器件用于向外传递信号的设备,包括马达和 LED 灯,对开发者提供控制马达振动和 LED 灯开关的能力。
电源管理
电源管理子系统主要提供了电池、充放电状态查询能力和系统电源管理服务能力,目前主要包括电量查询和亮灭屏控制锁的能力。
升级服务
升级服务是提供设备远程升级的能力,可以让你的设备轻松支持 OTA 升级能力。目前仅支持全量包升级方式,全量包是将新系统全部内容做成升级包,进行升级。
编译构建
编译构建提供了一个在 GN 与 ninja 基础上的编译构建框架。支持以下功能:1. 构建不同芯片平台的产品。如:Hi3518EV300 平台的 ipcamera 产品,Hi3516DV300 平台的 ipcamera 产品,Hi3861 平台的 WLAN 模组产品。2. 构建 HPM 包管理配置生成的自定义产品。
驱动
OpenHarmony 驱动子系统采用 C 面向对象编程模型构建,通过平台解耦、内核解耦,兼容不同内核,提供了归一化的驱动平台底座,旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。
快速入门
开发板类型
简述
链 接
Hi3861 开发板
Hi3861 WLAN 模组是一片大约 2cm*5cm 大小的开发板,是一款高度集成的 2.4GHz WLAN SoC 芯片,集成 IEEE 802.11b/g/n 基带和 RF(Radio Frequency)电路。支持 OpenHarmony/Huawei LiteOS 和第三方组件。
Hi3516 开发板
Hi3516DV300 作为新一代行业专用 Smart HD IP 摄像机 SOC,集成新一代 ISP、业界最新的 H.265 视频压缩编码器,同时集成高性能 NNIE 引擎。
Hi3518 开发板
Hi3518EV300 作为新一代智慧视觉处理 SOC,集成新一代 ISP (Image Signal Processor) 以及业界最新的 H.265 视频压缩编码器。
代码仓地址
OpenHarmony 主库组织地址:https://gitee.com/openharmony
OpenHarmony 归档组织地址:https://gitee.com/openharmony-retired