第一章 OpenHarmony标准系统全栈式开发实战导论

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技术架构与特性

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则是在这个地基基础上修建的精装房。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全栈开发技术架构

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 全栈开发流程

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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值