Advertisement

OpenHarmony开源项目

阅读量:

OpenHarmony开源项目

项目介绍

作为由开放原子开源基金会(OpenAtom Foundation)孵化和运营的开源项目, OpenHarmony旨在构建适用于全场景、全连接以及智能化时代的生态系统, 通过采用开放源代码模式构建智能终端操作系统框架, 从而推动万物互联产业的发展与繁荣.

技术架构

遵循分层架构设计原则, OpenHarmony由内而外分为内核层, 系统服务层, 框架层和应用layer四个主要部分. 其 system功能遵循'system>Subsystem>Component'的层级结构展开, 在适用于多设备部署环境的情况下提供模块可扩展性设计.

内核层

该系统采用基于多核心架构的设计方案,并根据具体设备的资源状况动态选择最适合的操作系统内核版本。该系统的核心抽象层(KAL)通过消除不同核心之间的技术差异,在上层为用户提供一致的基础级操作能力服务,并实现对进程与线程的管理、内存的有效调度、文件系统的可靠访问、网络通信的基本保障以及对外设资源的高效控制等功能。

驱动子系统模块:构成了系统硬件生态开放的基础的是一个基于统一外设访问能力的驾驶管理模块。它不仅实现了统一外设访问能力,并且提供了开发与管理的综合框架。

系统服务层

底层服务架构作为OpenHarmony的核心功能模块,在框架层为应用程序提供底层支持。该架构包括但不限于以下几项:

内核层

内核子系统:基于 多核心架构(采用 Linux kernel 或 LiteOS 作为基础)的设计方案,并支持针对不同资源受限设备需求时选择合适的 OS 核心。混合架构设计允许系统根据具体情况灵活切换至最佳匹配的核心方案。同时具备 多层次抽象能力 的 KAL 层面将多核心系统的差异进行屏蔽 为上层构建统一的核心组件 包括进程/线程管理 内存管理 文件系统 网络连接以及外设控制 等基本功能。

软件组件:HDF平台是系统硬件生态开放的核心支撑点,并支持统一外设访问能力,并结合开发与管理功能。

系统服务层

系统服务模块是OpenHarmony的核心功能集合,由框架层为应用程序提供各项所需的服务。该模块包含以下几个部分:

系统基本能力子系统集:主要承担了分布式应用在多设备环境下的运行协调与资源调度管理等功能,在设备间数据传输与任务分配等方面形成了完整的处理框架。该集合主要包含以下核心组件:分布式通信机制(实现软总线功能)、分布式数据管理(支持异构数据集成)、智能任务调度(优化作业执行顺序)、基础服务库(提供底层功能支持)、多设备输入接口模块(处理各类端点数据采集)、图形界面模块(实现用户交互展示)以及安全防护体系(保障系统稳定性)。

基础软件服务子系统集合旨在包含具有公共性和通用性的软件服务。该集合包括事件通知系统、电话通信系统以及多媒体处理等技术支撑系统的集合。

通过强化...软件服务子系统集来实现...根据不同设备需求提供差异化的功能提升能力,并由智慧屏专有业务、穿戴专有业务以及IoT相关业务共同构成。

硬 件 服 务 子 系 统 集 :支 持 硬 件 服 务 , 包 括 位 置 相 关 的 服 务 (如位置服务)、用户 IAM(即身份属性与)?.管理)、可穿戴设备相关的专用服务(如穿戴专有硬件服务)以及物联网相关的专用服务(如IoT专有 hardware service)等子系统组成

基于不同设备形态的部署环境,在基软SSUJ、增软SSUJ以及硬服SSUJ内部均可依据子系统级别进行裁剪;其中基软SSUJ主要负责数据存储与管理功能实现;而增软SSUJ则聚焦于智能计算能力优化;同时每个子系统内部又均可依据具体的功能划分实施相应的策略优化

框架层

采用C/C++、JS等多语言构建的应用程序架构,并支持Ability功能;同时适用于基于JavaScript语言设计的ArkUI架构;并包含开放获取的各种软硬件服务接口及相应的多语言API;依据系统组件化裁剪的程度不同,在设备上开放的服务接口也会有所差异。

应用层

在云平台架构中构建服务时应充分考虑其可扩展性和高可用性特点。
服务实例通常采用异构架构设计以提升性能。
其中每个应用程序通常由一个或多个功能模块构成,在这里我们定义了两种基本类型:FA(Feature Ability)和PA(Particle Ability)。其中FA代表功能增强能力。
具体来说:

  • FA模块具备用户界面交互功能;
  • 而PA模块不具备直接的用户界面交互能力;
    这类模块负责后台运行特定任务,并提供统一的数据访问接口。
    基于这两种功能模块开发的应用程序能够实现特定的业务功能,并支持跨设备调度与分发策略。

技术特性

硬件互助,资源共享

主要通过下列模块达成

分布式软总线

分布式软总线作为多设备终端的统一基座,在实现无缝互联方面发挥着重要作用,并承担了保障网络架构一致性和实现分布式通信能力的任务;同时能够迅速实现端到端的通信连接,并在传输效率方面达到了事半功倍的效果。

分布式数据管理

分布式数据管理依托分布式软总线实现了应用程序级和用户级的数据分散化管理。该系统使业务逻辑与存储机制相互独立,并在跨设备运行中实现了无缝的数据传输连接。系统设计确保了在不同设备间的切换不会影响用户体验的一致性和流畅性

分布式任务调度

分布式任务调度利用分布式软总线等技术特性为基础,在分布式数据管理与Profile的支持下,建立起一套统一的分布式服务管理机制(探测设备状态、协调资源分配、完成服务注册与交互),从而实现跨设备应用的远程启动与调用功能;该系统具备根据各设备性能定位及资源使用情况动态匹配的能力,并结合用户需求与行为模式优化配置策略

设备虚拟化

分布式设备虚拟化平台能够支持不同设备的资源融合、设备管理以及数据处理,并通过使周边设备成为手机能力的延展而共同形成一个超级虚拟终端。

一次开发,多端部署

OpenHarmony支持用户程序框架、Ability框架以及UI框架,并能确保开发的应用能够在多终端运行时保持一致性。实现了单一开发模式下的跨终端应用部署。

多终端软件平台API具备一致性,确保用户程序的运行兼容性。

  • 在开发过程中支持预见到终端的资源适配情况(包括CPU、内存、外设以及软件资源等)。
    • 根据用户的程序与软件平台是否兼容来决定展示顺序。

统一OS,弹性部署

OpenHarmony采用了组件化与组件弹性化的技术方案,在多种终端设备之间实现了动态伸缩部署模式,并支持涵盖所有ARM、RISC-V、x86等多种处理器架构的硬件配置,在RAM存储空间方面则从百千比特扩展到了千兆字节至吉字节的范围。

系统类型

OpenHarmony支持如下几种系统类型:

轻量系统(mini system)

适用于包括ButterflyARM Cortex-M、RISC-V 32位架构在内的MCU类处理器。这些设备在硬件资源上极为有限,并且最低内存配置为128KiB。该处理器提供多种轻量级通信协议,并具备轻量级图形处理框架功能。此外还集成了一套丰富的一系列IOT总线接口模块等技术特性

小型系统(small system)

面向应用处理器如Arm Cortex-A系列设备的应用环境需求方面展开讨论,在最低内存配置要求为1MiB的前提下提供以下功能:较高的安全性保障、通用图形处理架构以及完整的多媒体处理功能(包括视频编解码)。产品适用范围涵盖智能家居领域中的IP摄像头、电子猫眼镜头及其他相关网络设备;同时适用于路由器端点及智慧出行领域中的智能车辆行驶监控设备等不同应用场景。

标准系统(standard system)

面向应用处理器例如Arm Cortex-A系列设备的支持者方面,在硬件资源配置上要求最低内存配置为128MiB的基础上提供各类功能组件的优化解决方案;该处理器架构能够实现增强型人机交互界面、具备独立运行3D图形加速单元的能力以及支持硬件级功能合成技术;在图形显示控制功能方面整合了更多元化的控制模块,并提供更丰富的动态效果生成能力;在应用框架构建方面实现了从基础开发到完整生态系统的全方位支持;该处理器架构能够覆盖包括高端专业显示产品在内的各类应用场景需求

详细特征

在介绍OpenHarmony特性前,需要先明确以下两个基本概念:

子系统

OpenHarmony遵循层次化架构设计原则, 自上而下分为底层架构包含内核模块、服务组件等部分。其功能体系遵循'系统>子系统>组件'的层级结构展开, 在多设备环境下能够灵活去除不必要的组件以优化性能。作为抽象的概念, 子系统具体由相关组件实现

组件

对子系统进行深入细分后形成可重用的软件模块;该模块由源码文件组成,并包含配置文件、资源文件以及编译脚本;能够独立构建,并通过二进制形式整合到整体系统中;该二进制单元具有自主验证能力

在OpenHarmony生态系统中有关其相关子系统的详细信息,请参阅其官方README文件。入口:docs: OpenHarmony documentation | OpenHarmony开发者文档 - Gitee.com

子系统 简 介 适用范围

| 内核| 支持适用于嵌入式设备及资源受限设备,具有小体积、高性能、低功耗等特征的LiteOS内核;支持基于linux kernel演进的适用于标准系统的linux内核。| 小型系统
标准系统 |

分布式文件 提供本地同步JS文件接口。 标准系统
驱动 OpenHarmony驱动子系统采用C面向对象编程模型构建,通过平台解耦、内核解耦,兼容不同内核,提供了归一化的驱动平台底座,旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。 所有系统
电源管理服务 电源管理服务子系统提供如下功能:重启系统;管理休眠运行锁;系统电源状态管理和查询;充电和电池状态查询和上报;显示亮灭屏状态管理,包括显示亮度调节。 标准系统
泛Sensor服务 泛Sensor中包含传感器和小器件,传感器用于侦测环境中所发生事件或变化,并将此消息发送至其他电子设备,小器件用于向外传递信号的设备,包括马达和LED灯,对开发者提供控制马达振动和LED灯开关的能力。 小型系统
多模输入 OpenHarmony旨在为开发者提供NUI(Natural User Interface)的交互方式,有别于传统操作系统的输入,在OpenHarmony上,我们将多种维度的输入整合在一起,开发者可以借助应用程序框架、系统自带的UI组件或API接口轻松地实现具有多维、自然交互特点的应用程序。具体来说,多模输入子系统目前支持传统的输入交互方式,例如按键和触控。 标准系统
启动恢复 启动恢复负责在内核启动之后,应用启动之前的操作系统中间层的启动。并提供系统属性查询、修改及设备恢复出厂设置的功能。 所有系统
升级服务 可支持OpenHarmony设备的OTA(Over The Air)升级。 标准系统
帐号 支持在端侧对接厂商云帐号应用,提供分布式帐号登录状态查询和更新的管理能力。 标准系统
编译构建 编译构建子系统提供了一个基于Gn和ninja的编译构建框架。 所有系统
测试 开发过程采用测试驱动开发模式,开发者基于系统新增特性可以通过开发者自己开发用例保证,对于系统已有特性的修改,也可通过修改项目中原有的测试用例保证,开发者测试旨在帮助开发者在开发阶段就能开发出高质量代码。 所有系统

| 数据管理| 数据管理支持应用本地数据管理和分布式数据管理:
- 支持应用本地数据管理,包括轻量级偏好数据库,关系型数据库。
- 支持分布式数据服务,为应用程序提供不同设备间数据库数据分布式的能力。| 标准系统 |

语言编译运行时 语言运行时提供了JS、C/C++语言程序的编译、执行环境,提供支撑运行时的基础库,以及关联的API接口、编译器和配套工具。 所有系统
JS UI框架 JS UI框架是OpenHarmony UI开发框架,支持类Web范式编程。 所有系统
媒体 提供音频、视频、相机等简单有效的媒体组件开发接口,使得应用开发者轻松使用系统的多媒体资源。 所有系统
事件通知 公共事件管理实现了订阅、退订、发布、接收公共事件(例如亮灭屏事件、USB插拔事件)的能力。 标准系统
杂散软件服务 提供设置时间的能力。 标准系统
包管理子系统 提供包安装、卸载、更新、查询等能力。 所有系统
电话服务 提供SIM卡、搜网、蜂窝数据、蜂窝通话、短彩信等蜂窝移动网络基础通信能力,可管理多类型通话和数据网络连接,为应用开发者提供便捷一致的通信API。 标准系统
公共基础类库 公共基础库存放OpenHarmony通用的基础组件。这些基础组件可被OpenHarmony各业务子系统及上层应用所使用。 所有系统
研发工具链 提供设备连接调试器hdc;提供了性能跟踪能力和接口;提供了性能调优框架,旨在为开发者提供一套性能调优平台,可以用来分析内存、性能等问题。 标准系统
分布式软总线 分布式软总线旨在为OpenHarmony系统提供跨进程或跨设备的通信能力,主要包含软总线和进程间通信两部分。其中,软总线为应用和系统提供近场设备间分布式通信的能力,提供不区分通信方式的设备发现,连接,组网和传输功能;而进程间通信则提供了对设备内或设备间无差别的进程间通信能力。 所有系统
XTS XTS是OpenHarmony兼容性测试套件的集合,当前包括acts(application compatibility test suite)应用兼容性测试套,后续会拓展dcts(device compatibility test suite)设备兼容性测试套等。 所有系统
系统应用 系统应用提供了OpenHarmony标准版上的部分系统应用,如桌面、SystemUI、设置等应用,为开发者提供了构建标准版应用的具体实例,这些应用支持在所有标准版系统的设备上使用。 标准系统
DFX DFX是OpenHarmony非功能属性能力,包含日志系统、应用和系统事件日志接口、事件日志订阅服务、故障信息生成采集等功能。 所有系统
全球化 当OpenHarmony设备或应用在全球不同区域使用时,系统和应用需要满足不同市场用户关于语言、文化习俗的需求。全球化子系统提供支持多语言、多文化的能力,包括资源管理能力和国际化能力。 所有系统
安全 安全子系统包括系统安全、数据安全、应用安全等模块,为OpenHarmony提供了保护系统和和用户数据的能力。安全子系统当前开源的功能,包括应用完整性保护、应用权限管理、设备认证、密钥管理服务。 所有系统

支持的开发板

当前OpenHarmony社区拥有22款设备,在此为您展示三种率先接入OpenHarmony核心网络的设备列表(更多详细信息,请参阅社区官方设备清单)。您可随时访问每日构建版本地址以获取最新构建信息

系统类型 开发板型号 芯片型号 主要能力及适配案例 典型应用场景 开发板代码仓

标准系统

小型系统

快速入门

代码仓地址

OpenHarmony主库组织地址为[OpenHarmony: 该开源项目由开放原子开源基金会(OpenAtom Foundation)孵化并运营而成。其旨在致力于构建一个覆盖全场景、全连接与全智能时代的智能终端操作系统架构,并为万物互联产业的发展提供相应的技术支撑与平台服务。]https://gitee.com/openharmony "

OpenHarmonySIG组织地址:OpenHarmony-SIG: OpenHarmony SIG组织位置, 旨在孵化相关的开源生态系统项目

三元库组织地址:OpenHarmony-TPC: OpenHarmony third party components

说明

OpenHarmony归档组织的具体地址:OpenHarmony-Retired: OpenHarmony 归档项目组织的位置, 专门用于存储OpenHarmony相关的子项目

开发者文档

查看开放和谐社区官方网站

[OpenHarmony开发者文档](https://gitee.com/openharmony/docs/tree/master/zh-cn OpenHarmony开发者文档)

English Version

源码下载

访问OpenHarmony源代码库:详细说明

示例教程

示例代码

示例代码

示例代码

Codelabs:教程指导

如何参与

加入我们的开源社区:访问此链接以获取《开源社区管理规范》

加入贡献:如何贡献

许可协议

OpenHarmony主要基于Apache License V2.0协议,请参考各代码仓LICENSE声明。

OpenHarmony采用了三款三方开源软件及其许可证说明,并在参考文档中提供了详细的技术支持信息(第三方开源软件说明)。

联系方式

网站:

https://openharmony.gitee.com/ "https://openharmony.gitee.com"

https://openharmony.gitee.com/ "https://openharmony.gitee.com"

邮箱:

contact@openharmony.io

全部评论 (0)

还没有任何评论哟~