OpenHarmony标准系统全栈开发实战导论
第一章 OpenHarmony标准系统全栈开发实战导论
第二章 OpenHarmony开发环境搭建
第三章 iTop3588平台移植OpenHarmony-4.0-Release(待发)
第四章 内核程序开发示例:HelloWorld(待发)
第五章 OpenHarmony标准系统全栈开发全流程第一例:开关工作指示灯(待发)
南向开发篇
第六章 Linux驱动适配HDF框架开发(待发)
第七章 GPIO设备纯HDF驱动开发(待发)
第八章 iTop3588平台Touchscreen驱动适配与功能调测(待发)
第九章 iTop3588平台Wifi驱动适配与功能调测(待发)
第十章 iTop3588平台Gmac驱动适配与功能调测(待发)
第十一章 iTop3588平台Bluetooth驱动适配与功能调测(待发)
第十二章 iTop3588平台Audio驱动适配与功能调测(待发)
第十三章 iTop3588平台Camera驱动适配与功能调测(待发)
第十四章 使用PWM调节补光灯全栈开发(待发)
第十五章 使用GPIO和PWM驱动云台电机全栈开发(待发)
前言
“苔花如米小,亦学牡丹开。”——袁枚
我自2020年底从Java开发岗位转做OpenHarmony开发,至今已有四年多了,基本上与OpenHarmony项目开源进程是同步的。所做的任务也多是啃硬骨头——内核适配和驱动开发,沿途都是文档不全、调试崩溃,境况甚是艰难。又因十几年前做过iOS生态相关的开发技术教学与培训工作,故也曾质疑OpenHarmony能否突破Android/iOS生态壁垒,选择做OpenHarmony技术工作是否有前景。但看到当前OpenHarmony通过技术架构创新与开源生态协同,已初步构建万物智联底座,随着华为10万原生应用目标的推进及统一互联标准的落地,其有望在2025-2030年成为全球第三大操作系统生态[1][2]时,我则感到做OpenHarmony技术能行。
2023年7月我买上一台iTop-RK3588平台开发板,自己搭建一套OpenHarmony标准系统开发与实验环境,成功移植过OpenHarmony-3.2-Release和OpenHarmony-4.0-Release,当前正在完善部分外部设备驱动适配、后续在工作闲暇时,会按OpenHarmony子系统(如内核、编译构建、图形、多模输入等子系统)、专用模型框架(如:音频驱动模型(ADM)、企业设备管理(EDM)等)进行研发,并将研发的实战成果和心得整理成系统性技术方案,以OpenHarmony标准系统全栈开发实战录系列文章方式,不定期分享给同途的小伙伴们学习与参考。本人技术水平和文字功底均有限,若有错误之处,请小伙伴们批评指正。
OpenHarmony 标准系统是面向全场景智能设备的操作系统核心,具备分布式架构与跨设备协同能力。其全栈开发需贯通设备端(南向)与应用端(北向),结合OpenHarmony分布式能力实现端到端闭环。
一、OpenHarmony项目介绍
OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。[^3]
鸿蒙生态包括 OpenHarmony 和 HarmonyOS,当然还包括开发工具以周边的一些开发库。当我们在说“鸿蒙”的时候,也许就是指鸿蒙生态。
1.OpenHarmony技术架构与特性
图1 :OpenHarmony技术架构图
- 子系统
OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照**“系统 > 子系统 > 组件”**逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。子系统是一个逻辑概念,它具体由对应的组件构成。 - 组件(部件)
对子系统的进一步拆分,可复用的软件单元,它包含源码、配置文件、资源文件和编译脚本;能独立构建,以二进制方式集成,具备独立验证能力的二进制单元。 - 技术特性
- 硬件互助,资源共享
主要通过分布式软总线、分布式数据管理、分布式任务调度和设备虚拟化等模块实现。 - 一次开发,多端部署
OpenHarmony提供用户程序框架、Ability框架以及UI框架,能够保证开发的应用在多终端运行时保证一致性。 - 统一OS,弹性部署
OpenHarmony通过组件化和组件弹性化等设计方法,做到硬件资源的可大可小,在多种终端设备间,按需弹性部署,全面覆盖了ARM、RISC-V、x86等各种CPU,从百KiB到GiB级别的RAM
- 硬件互助,资源共享
2.OpenHarmony与HarmonyOS(鸿蒙操作系统、鸿蒙OS)关系
HarmonyOS作为新一代的智能终端操作系统,是华为是基于 OpenHarmony、AOSP(Android 开源项目)等开源项目开发的面向多种全场景智能设备的商用版本。所以HarmonyOS包含OpenHarmony,如果将OpenHarmony理解成地基,则HarmonyOS则是在这个地基基础上修建的精装房。
图2 :OpenHarmony与HarmonyOS关系图
- OpenHarmony与HarmonyOS的技术上实现区别
- 语言支持
- SDK 的不同
- 运行调测方式不同
- 对APK的兼容性不同
- 如何选择OpenHarmony或是HarmonyOS?
- 专注于HarmonyOS底层的技术与定制OS时,选择OpenHarmony。
- 专注于华为终端设备的应用开发时,选择HarmonyOS。
3.系统类型与应用场景
OpenHarmony支持的系统类型:
- 轻量系统(mini system)
面向MCU类处理器例如Arm Cortex-M、RISC-V 32位的设备,硬件资源极其有限,支持的设备最小内存为128KiB,可以提供多种轻量级网络协议,轻量级的图形框架,以及丰富的IOT总线读写部件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。支持的平台如:小熊派BearPi-HM Nano等。 - 小型系统(small system)
面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为1MiB,可以提供更高的安全能力、标准的图形框架、视频编解码的多媒体能力。可支撑的产品如智能家居领域的IP Camera、电子猫眼、路由器以及智慧出行域的行车记录仪等。支持的平台如:Hi3516DV300等。 - 标准系统(standard system)
面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为128MiB,可以提供增强的交互能力、3D GPU以及硬件合成能力、更多控件以及动效更丰富的图形能力、完整的应用框架。可支撑的产品如高端的冰箱显示屏、多媒体、视频安全监控。支持的平台如:yangfan、dayu200、dayu210等。
二、OpenHarmony全栈开发技术架构
图3 :OpenHarmony全栈开发技术架构与模块示意图
南向开发主要侧重于硬件层面的开发,涉及硬件接口控制、设备驱动开发、鸿蒙系统内核开发等,目的是使硬件设备能够兼容并运行鸿蒙系统,或者开发具有特定功能的物联网(IoT)设备,需要开发者具备一定的硬件知识、嵌入式系统开发能力以及对鸿蒙操作系统内核的熟悉度。
北向主要侧重于应用层的开发,如APP开发、用户界面设计等,更多地关注用户体验、应用性能优化、上层业务逻辑的实现,需要开发者具备基本的编程知识、对操作系统原理的简单理解,以及一定的UI设计感。
1.技术分层与能力融合
OpenHarmony作为面向全场景的开源分布式操作系统,采用分层架构设计:
- 内核层:支持Linux内核(LTS 4.19/5.10版本)及轻量化内核,提供基础硬件驱动与资源管理能力。
- 系统服务层:以SystemCapability(SysCap)为核心定义标准化能力集(如蓝牙、摄像头等),实现跨设备能力调用与API动态适配。
- 框架层:提供分布式任务调度、数据管理及安全模块,支撑多设备协同场景。
- 应用层:支持一次开发多端部署,通过组件化设计灵活适配不同形态终端。
OpenHarmony全栈开发指开发者具备覆盖技术体系全链路的能力,从底层硬件/系统到上层应用,能够独立完成多层级技术栈的设计、开发与调优,其内涵进一步延伸为**“南向+北向”协同开发**,贯穿设备驱动、系统服务到应用生态的全流程。
- 南向开发:基于HDF驱动框架实现硬件资源调度(如GPIO点灯、I2C通信),支持Linux内核与轻量内核灵活切换。
- 北向开发:使用ArkUI 3.0构建自适应UI,集成分布式数据管理能力(如跨设备文件同步)。
- 系统服务层:通过SysCap动态适配设备能力(如音频播放、摄像头调用、蓝牙互联)。
2.实战技术要点
-
技术广度
- 横向覆盖:从硬件驱动、内核定制(南向开发)到应用框架、UI交互(北向开发)的多领域技术能力。
- 纵向贯通:理解从芯片资源调度到用户界面逻辑的完整数据流与交互链路。
-
跨层级整合能力
-
能基于系统架构(如OpenHarmony的分层设计)实现模块间高效协同,例如:驱动层适配硬件(如摄像头传感器) → 系统服务层暴露API → 应用层调用接口实现功能。
-
解决跨层级问题,如性能瓶颈定位(从内存泄漏到UI卡顿的根因分析)。
-
场景化思维
-
针对全场景需求(如智能家居、车载系统),设计可灵活裁剪的分布式架构,平衡性能、功耗与用户体验。
开发层级 | 典型任务 | 技术栈示例 |
---|---|---|
南向开发 | 内核移植、内核补丁合入、HDF驱动开发、硬件资源调度 | C/C++、HDF框架、设备树配置 |
系统服务层 | 分布式能力接口封装、原子化服务、子系统定制 | Java/JS、SysCap能力定义、RPC通信 |
北向开发 | 分布式数据管理、跨设备应用开发、自适应UI设计 | ArkUI、ETS语言、分布式数据管理 |
系统调优 | 启动加速、内存压缩 | 性能分析工具、SysCap检测器 |
3.关键工具链
- 南向:HiTool、RKDevTool等烧录工具、hdc调试。
- 北向:DevEco Studio。
三、OpenHarmony 全栈开发流程
图4 :OpenHarmony全栈开发流程图
1.开发环境搭建
- 安装基础工具链
- 开发工具:如安装与配置Ubuntu系统、支持OpenHarmony编译的必要工具、VSCode、DevEco Studio(集成OpenHarmony SDK)等。
- 交叉编译工具:gcc、clang、llvm。
- 硬件支持:配置RK3588开发板调试环境,安装RKDevTool烧录工具。
- 依赖项:JDK、Node.js、Python。
- 通过DevEco Studio创建应用端工程(北向)。
- 配置跨设备通信参数(如设备ID绑定、分布式服务声明)。
2.工程源代码获取
- 注册gitee帐号与设置SSH公钥。
- 通过repo工具获取工程源码。
repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-4.0-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
3.平台移植ohos
- 定义产品(如:vendor/topeet/iTop3588)。
- 定义设备解决方案(如:device/borad/topeet/iTop3588,device/soc/rockchip/rk3588)。
- 适配内核(如:针对iTop3588平台增加的内核补丁)。
4.HDF驱动开发
- 注册驱动
- 发布驱动服务
- 实现消息机制
- 定义与实现硬件抽象层接口(HAL)
- 定义与实现硬件设备接口(HDI)
5.系统服务集成
- 通过SysCap声明硬件能力(如音频、蓝牙、NFC),生成标准化API接口(如NAPI)。
- 实现跨设备通信协议(如基于RPC的分布式任务调度)。
6.分布式应用架构设计
- 设备发现:调用@ohos.distributedHardware模块实现设备动态绑定。
// 设备发现示例
distributedHardware.discoverDevice({
filters: [{ deviceType: 'smart_light' }]
});
- UI开发:使用ArkUI 3.0构建自适应界面(如3D仪表盘、瀑布流布局)。
7.跨设备数据同步
- 通过
distributedData
模块实现多端数据一致性(如拳击游戏挥拳动作实时同步)。
8.联调测试
- 南向验证:使用hdc命令行工具测试驱动稳定性。
- 北向联调:通过Wi-Fi/蓝牙连接多设备,验证分布式任务迁移性能。
9.性能优化
- 启动优化:裁剪非必要子系统(如移除冗余图形服务)。
- 内存管理:如利用队列算法优化消息处理效率。
10.固件烧录
- 使用RKDevTool将南向系统镜像写入iTop3588开发板。
11.应用分发
- 通过AppGallery Connect发布北向应用,支持多设备自动适配。
四、OpenHarmony 全栈开发核心价值
OpenHarmony 全栈开发通过统一技术架构与生态协同能力,构建了面向万物智联时代的开发范式[^4]。
1.统一架构设计:全场景无缝适配
- 分层解耦与弹性扩展
- 分层解耦与弹性扩展, 基于 内核层 → 系统服务层 → 框架层 → 应用层 的分层架构,支持按需裁剪子系统与组件,适配从128MB到高端设备的全场景覆盖。
- 通过产品配置文件动态定制功能模块(如裁剪非必要图形服务),满足工业、车载等垂直领域差异化需求。
- 分层解耦与弹性扩展
- 提供 **Java/JS/C++** 多语言开发支持,配合ArkUI框架实现“一次开发、多端部署”,降低跨设备应用开发复杂度。
2.分布式能力:突破硬件边界
- 跨设备协同引擎
- 分布式软总线技术实现设备间 **<5ms低延迟通信**,支持智能家居多协议设备组网与数据同步(如海尔智慧家庭场景)。
- 分布式数据管理框架保障跨端数据一致性,典型场景如车载导航与手机实时同步路线规划。
- 异构算力调度
- 动态任务分割算法优化工业网关等场景下的资源分配效率,降低运维成本。
3.开发效能提升:全生命周期支持
- 高效工具链体系
- 云原生开源套件整合 低代码平台+微服务框架+分布式中间件,加速企业级应用开发(如华为云原生基础设施套件)。
- HDI(硬件设备接口)标准化驱动开发流程,通过IDL自动生成跨平台代码,缩短硬件适配周期(如MIPI DSI显示模块快速移植)。
- 性能优化闭环
- 内存管理模块采用 TLSF算法优化堆内存分配,减少碎片率并提升轻量设备运行效率。
4.生态协同与安全底座
- 开源共建生态
- 社区汇聚了几十家单位共建、和近万名开发者协作,覆盖智能家居、工业物联网等八大领域,加速技术方案商业化落地。
- 原生安全机制
- 内置设备认证、数据加密、权限分级等多维度防护,满足车规级等高可靠性场景需求(如DMS驾驶员监控系统)。
五、OpenHarmony 全栈开发者能力提升途径
OpenHarmony全栈开发者需覆盖系统架构、驱动开发、应用开发及生态协同四大领域,其能力提升路径可归纳为以下四个方面:
1.技术体系构建
- 系统架构与原理
- 掌握内核层 → 系统服务层 → 框架层的分层设计,重点学习分布式软总线、分布式数据管理等子系统实现原理。
- 深入研究设备认证、数据加密、权限分级等安全技术,满足车规级等高可靠性场景需求。
- 分布式技术专项
- 学习跨设备协同开发框架(如分布式任务调度、设备虚拟化),实现多终端数据同步与异构算力调度。
- 内核与驱动开发
- 掌握HDF驱动框架与HDI接口规范,通过IDL语言定义硬件服务并生成跨平台代码,适配不同芯片(如Hi3516、RK3568、RK3588)。
2.开发实战能力提升
- 组件化开发与复用
- 基于ArkUI框架构建高复用性组件库,利用条件渲染、数据驱动等策略实现跨场景组件复用(如智能家居统一控制组件)。
- 实践企业级项目开发流程,例如通过低代码平台快速搭建工业物联网告警模块。
- 全栈工具链应用
- 熟练使用DevEco Studio进行应用开发调试,结合hdc命令行工具分析系统日志与性能瓶颈。
- 通过产品配置文件定制系统功能模块,支持轻量设备裁剪与行业定制化需求。
- 性能优化实践
- 优化内存分配算法(如TLSF堆管理),提升轻量设备运行效率。
- 降低分布式通信延迟至5ms内,适配智能座舱等实时性要求高的场景。
3.生态协同与认证体系
- 开源社区参与
- 加入OpenHarmony SIG工作组,贡献代码或文档(如完善分布式软总线协议栈),提升技术影响力。
- 通过Gitee等平台学习50+共建单位的行业方案(如金融终端安全加固、工业相机AI协同)。
- 认证与职业发展
- 报考华为开发者联盟认证(如鸿蒙应用开发、嵌入式+鸿蒙开发认证),获得生态企业内推资格。
- 参加OpenHarmony 全栈开发类专项培训,系统学习OpenHarmony 全栈开发技术。
4.持续学习路径
方向 | 学习资源 |
---|---|
系统底层 | OpenHarmony移植指南(如标准系统方案之瑞芯微RK3568移植案例[^5])、HDF驱动开发文档 |
应用开发 | ArkUI组件化开发案例、分布式数据管理实战项目 |
前沿技术 | 生成式AI与大模型开发课程(RAG增强检索、Agent智能体开发) |
总结
OpenHarmony 标准系统通过模块化架构与分布式能力,正加速渗透工业、家居等高价值领域,但其技术成熟度与生态完整性仍需在跨设备协同、开发者工具链等维度持续突破。
OpenHarmony全栈开发需融合 系统移植→驱动开发→应用设计→性能调优 全链路能力,通过分层解耦架构与分布式技术实现跨场景快速落地。开发者需重点关注HDI接口标准化、ArkUI跨端组件复用及内核级性能优化,以满足工业、车载等高实时性场景需求。
参考
[1] https://baijiahao.baidu.com/s?id=1828098386753388079&wfr=spider&for=pc
[2] https://baijiahao.baidu.com/s?id=1823179630341376863&wfr=spider&for=pc
[3] https://gitee.com/openharmony
[4] https://baijiahao.baidu.com/s?id=1812705711568535764&wfr=spider&for=pc
[5] https://blog.csdn.net/maniuT/article/details/140859212
[6] 李传钊.深入浅出OpenHarmony架构、内核、驱动及应用开发全栈[M].北京:中国水利水电出版社,2021.
Device开发官网:https://device.harmonyos.com
OpenHarmony的Gitee仓库:https://gitee.com/openharmony
OpenHarmony官网:https://www.openharmony.cn/mainPlay
OpenHarmony官方文档:https://docs.openharmony.cn/