OpenHarmony开源项目
项目介绍
OpenHarmony开放原子开源基金会(OpenAtom Foundation)旗下开源项目,定位是一款面向全场景的开源分布式操作系统。
OpenHarmony在传统单设备系统能力的基础上,创造性地提出了基于同一系统能力的概念,适应各种终端形式,支持各种终端设备的运行,第一个版本支持128K~128M欢迎参与开源社区的持续演进。针对设备开发者,OpenHarmony采用组件化设计方案,可根据设备的资源能力和业务特点灵活切割,满足不同形式的终端设备对操作系统的要求。资源有限的设备和可穿戴设备可以可穿戴设备,也可运行100M级智能家用摄像头/行车记录仪等相对资源丰富的设备。
技术架构
OpenHarmony整体遵循分层设计,从下到上分为内核层、系统服务层、框架层和应用层。系统功能按系统执行 > 子系统 > 在多设备部署场景下,支持根据实际需要切割一些不必要的子系统或功能/模块。OpenHarmony如下所示。
[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-LiyvKpkp-1633933606393)(https://gitee.com/openharmony/docs/raw/master/zh-cn/readme/figures/1.png)]
-
内核子系统多内核系统:(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支持以下设备类型:
-
面向MCU例如类处理器Arm Cortex-M、RISC-V 32位设备资源极其有限,参考内存≥128KB,提供丰富的近距离连接能力和外设总线访问能力。典型产品包括智能家居领域的连接模块、传感器设备等。智能物联网设备于智能物联网设备,负责实现连接部分的硬件模块,由制造商集成到智能家居领域的设备中。例如,提供联接模块WLAN/Bluetooth模块和制造商的家庭芯片通常通过接入和数据连接UART或GPIO通信等总线接口。
-
面向应用处理器,如Arm Cortex-A参考内存的设备≥1MB,提供更高的安全性、标准的图形框架和视频编解码的多媒体能力。典型产品包括智能家居领域IPCamera、智能出行域的电子猫眼、路由器和行车记录仪。
-
面向应用处理器,如Arm Cortex-A参考内存的设备≥128MB,提供增强的交互能力,提供3D GPU以及硬件合成能力,提供更多的控件和更有效的图形能力,并提供完整的应用框架。典型产品包括高端冰箱显示屏等。
-
面向应用处理器,例如Arm Cortex-A参考内存的设备≥1GB,提供完整的兼容应用框架。典型产品有智能屏幕、智能手表等。
详细特征
入口:https://gitee.com/openharmony/docs/tree/master/zh-cn/readme
*开源部分主要支持100K、100M设备,以下内容主要介绍相关子系统内容。
系 统 |
简 介 |
链 接 |
---|---|---|
JS应用开发框架 |
作为JS应用开发框架的轻量实现,提供一套跨平台的类web应用开发框架,通过Toolkit将开发者编写的HTML、CSS和JS 文件编译打包成JS Bundle,然后再将JS Bundle解析运行成C++ UIKit的View 组件进行渲染。通过支持三方开发者使用声明式的API进行应用开发,以数据驱动视图变化,避免了大量的视图操作,大幅降低应用开发难度,提升开发者开发体验。 |
README |
DFX |
针对不同硬件架构和资源提供组件化且可定制的DFX框架。根据RISC-V、Cortex-M、Cortex-A不同硬件平台,提供两种不同的轻量级DFX框架。 |
README |
XTS认证 |
XTS是OpenHarmony生态认证测试套件的集合,当前包括acts(application compatibility test suite)应用兼容性测试套,后续会拓展dcts(device compatibility test suite)设备兼容性测试套等。 |
README |
全球化 |
全球化资源管理子系统主要提供语言资源回溯和多偏好语言支持的能力,包括多语言资源回溯和多偏好语言支持。 |
README |
公共基础 |
公共基础库存放OpenHarmony通用的基础组件。这些基础组件可被OpenHarmony各业务子系统及上层应用所使用。 |
README |
内核 |
OpenHarmony内核是面向IoT领域的实时操作系统内核,它具备类似RTOS般轻快和Linux般易用的特点。包括功能组件部分:进程和线程调度、内存管理、IPC机制、timer管理等操作系统基础组件。 |
README |
分布式任务调度 |
分布式任务调度模块负责跨设备组件管理,提供访问和控制远程组件的能力,支持分布式场景下的应用协同。 |
README |
分布式软总线 |
实现近场设备间统一的分布式通信能力管理,提供不区分链路的设备发现和传输接口。包含服务发布、数据传输、安全等功能。 |
README |
启动恢复 |
启动恢复负责在内核启动之后,应用启动之前的操作系统中间层的启动。支持使用LiteOS-A内核的平台,当前包括:Hi3516DV300平台和Hi3518EV300平台。 |
README |
图形 |
主要包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,构建基于轻量OS的应用框架,满足硬件资源较小的物联网设备的OpenHarmony系统应用开发。 |
README |
媒体 |
为多媒体应用开发者提供统一的开发接口,使得开发者可以专注于应用业务的开发,轻松使用多媒体的资源。 |
README |
安全 |
主要提供样例给开发者展示如何去使用已有的安全机制来提升系统的安全能力,包括安全启动、应用权限管理、IPC通信鉴权、HUKS、HiChain、应用签名验签。 |
README |
测试 |
开发过程采用测试驱动开发模式,开发者基于系统新增特性可以通过开发者自己开发用例保证,对于系统已有特性的修改,也可通过修改项目中原有自测试用例保证,旨在帮助开发者在开发阶段就能开发出高质量代码。 |
README |
用户程序框架 |
包含两个模块:Ability子系统和包管理子系统。Ability子系统,是OpenHarmony为开发者提供的一套开发OpenHarmony应用的开发框架。包管理子系统,是OpenHarmony为开发者提供的安装包管理框架。 |
README |
AI子系统 |
AI业务子系统是提供原生的分布式AI能力的子系统,提供了统一的AI引擎框架,实现算法能力快速插件化集成。框架中主要包含插件管理、模块管理和通信管理等模块,对AI算法能力进行生命周期管理和按需部署。后续,会逐步定义统一的AI能力接口,便于AI能力的分布式调用。同时,提供适配不同推理框架层级的统一推理接口。 |
README |
泛Sensor |
泛Sensor中包含传感器和小器件,传感器用于侦测环境中所发生事件或变化,并将此消息发送至其他电子设备,小器件用于向外传递信号的设备,包括马达和LED灯,对开发者提供控制马达振动和LED灯开关的能力。 |
README |
电源管理 |
电源管理子系统主要提供了电池、充放电状态查询能力和系统电源管理服务能力,目前主要包括电量查询和亮灭屏控制锁的能力。 |
README |
升级服务 |
升级服务是提供设备远程升级的能力,可以让你的设备轻松支持OTA升级能力。目前仅支持全量包升级方式,全量包是将新系统全部内容做成升级包,进行升级。 |
README |
编译构建 |
编译构建提供了一个在GN与ninja基础上的编译构建框架。支持以下功能:1.构建不同芯片平台的产品。如:Hi3518EV300平台的ipcamera产品,Hi3516DV300平台的ipcamera产品,Hi3861平台的WLAN模组产品。2.构建HPM包管理配置生成的自定义产品。 |
README |
驱动 |
OpenHarmony驱动子系统采用C面向对象编程模型构建,通过平台解耦、内核解耦,兼容不同内核,提供了归一化的驱动平台底座,旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。 |
README |
快速入门
入口:https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/Readme-CN.md
开发板类型 |
简述 |
链 接 |
---|---|---|
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
开发者文档
简体中文:OpenHarmony开发者文档
English Version:OpenHarmony Documentation
源码下载
获取OpenHarmony源码:下载说明
如何参与
参与社区:社区介绍链接
参与贡献:如何贡献链接
参与API治理:OpenHarmony API治理章程
许可协议
OpenHarmony主要遵循Apache License V2.0协议,详情请参考各代码仓LICENSE声明。
OpenHarmony引用三方开源软件及许可证说明,参考第三方开源软件说明。
联系方式
网站:
https://openharmony.gitee.com
邮箱:
contact@openharmony.io