1. 鸿蒙南向开发环境全景:从源码到烧录

做南向驱动开发,第一步就是把环境搭起来。很多新手一上来就卡在环境配置上,折腾几天还没见到代码长什么样。我刚开始接触 OpenHarmony 时也踩过不少坑,今天就把这些经验梳理清楚。

说白了,整个环境搭建就四步:拿源码 → 装工具 → 配编译 → 烧固件。咱们一个一个来。

核心要点:环境搭建是南向开发的基础,一步错步步错。建议严格按照版本对应关系来,不要混用。

1.1 OpenHarmony 源码获取

源码获取方式有好几种,我个人最推荐用 repo 工具。为什么?因为 OpenHarmony 的仓库太多了,手动一个个 clone 会疯掉。

先装 repo:

# 创建 bin 目录并加入 PATH
mkdir ~/bin
PATH=~/bin:$PATH

# 下载 repo 工具
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo
chmod a+x ~/bin/repo

然后初始化并同步代码:

# 创建工作目录
mkdir ohos_3.1 && cd ohos_3.1

# 初始化 repo(以 3.1 Release 为例)
repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-3.1-Release --no-repo-verify

# 同步源码(这一步很慢,建议挂代理或夜间跑)
repo sync -c -j4

我的经验:第一次同步源码时,我用了 -j8 结果网络频繁断开。后来改成 -j4 反而更稳定。网络不好的话,可以加 --no-tags 跳过标签下载。

同步完成后,源码目录结构大概是这样的:

目录/文件 说明
kernel/ LiteOS 内核源码
device/ 各芯片厂商的 BSP 和驱动
drivers/ HDF 驱动框架核心代码
vendor/ 产品级配置和适配层
build/ 编译构建系统(gn/ninja)
out/ 编译产物目录(首次编译后生成)

1.2 DevEco Device Tool 安装

DevEco Device Tool 是华为官方出的集成开发环境。说白了,它把源码管理、编译、烧录、调试都整合到一起了。我个人觉得,用 IDE 比命令行效率高不少,尤其是烧录和调试阶段。

安装步骤:

  1. 下载安装包:从华为开发者官网下载对应操作系统的版本(Windows/Linux)。
  2. 安装依赖:Windows 下需要提前装好 Python 3.8+、Git、Node.js 14+。
  3. 一键安装:双击安装包,按向导走就行。安装路径不要有中文和空格。
  4. 配置工具链:打开 DevEco Device Tool,在设置里配置 gn、ninja、gcc_riscv32 等工具的路径。

注意:DevEco Device Tool 的版本必须与 OpenHarmony 版本匹配。我见过有人用 2.2 的工具链去编译 3.1 的源码,结果各种报错。建议去官方文档查版本对应表。

1.3 编译环境搭建:gn/ninja 构建系统

OpenHarmony 用的是 gn + ninja 这套构建系统。gn 负责生成构建规则,ninja 负责真正干活——并行编译。

为什么要用这套?因为快。ninja 的并行编译速度比 Makefile 快一个数量级。你想想看,一个全量编译动辄几十分钟,能省一秒是一秒。

环境配置要点:

  • Python 3.8+:gn 和 ninja 的脚本依赖 Python。
  • 交叉编译工具链:Hi3861 是 RISC-V 架构,需要 gcc_riscv32 工具链。
  • gn 和 ninja 二进制:可以从 OpenHarmony 的 prebuilts 目录下找到,或者自己编译。

编译 Hi3861 的示例命令:

# 设置编译环境
hb set -root $PWD

# 选择 Hi3861 开发板
hb set -p hi3861

# 开始编译
hb build -f

编译完成后,固件在 out/hi3861/wifiiot_sdk/ 目录下,文件名是 Hi3861_wifiiot_app_allinone.bin。

避坑指南:我第一次编译时忘了装 gcc_riscv32,报错说找不到编译器。后来发现 DevEco Device Tool 自带工具链,但路径需要手动配置。建议直接用 IDE 的自动检测功能。

1.4 Hi3861 开发板烧录

Hi3861 是海思出的 Wi-Fi IoT 芯片,RISC-V 内核,性价比很高。烧录方式有两种:串口烧录和 JTAG 烧录。咱们开发阶段用串口就够了。

烧录步骤:

  1. 连接硬件:用 USB 转串口线连接 Hi3861 开发板,注意 TX/RX 不要接反。
  2. 进入烧录模式:按住开发板上的 BOOT 键,再按一下 RESET 键,然后松开 BOOT 键。
  3. 选择固件:在 DevEco Device Tool 里选择刚才编译好的 .bin 文件。
  4. 开始烧录:点击烧录按钮,等待进度条走完。

烧录成功后,串口会输出启动日志。如果看到 Hello OpenHarmony,恭喜你,环境搭好了。

注意:烧录时如果提示 Failed to connect,八成是串口驱动没装或者 BOOT 模式没进对。Windows 下需要装 CH340 驱动,Linux 下需要给串口设备加权限:sudo chmod 666 /dev/ttyUSB0。

1.5 整体流程一览

我把整个环境搭建的流程画了张图,方便你对照着操作:

鸿蒙南向开发环境搭建流程 ① 源码获取 ② DevEco Device Tool ③ 编译环境(gn/ninja) ④ 编译固件 ⑤ 烧录到 Hi3861 关键说明 • repo init + sync • 版本分支要选对 • 版本匹配很重要 • 工具链路径配置 • 交叉编译工具链 • gcc_riscv32 • hb set + hb build • 产物在 out/ 目录 • 串口烧录 • BOOT + RESET 模式 • 检查串口日志

1.6 常见问题与排查

环境搭建过程中,我遇到过不少问题。挑几个典型的说说:

问题 原因 解决方法
repo sync 卡住不动 网络不稳定或仓库太大 加 --no-tags 参数,或换时间段重试
编译报错 gn not found gn 未安装或路径未配置 检查 prebuilts 目录,或手动指定路径
烧录时 Failed to connect 串口驱动问题或 BOOT 模式未进入 重装驱动,重新按 BOOT+RESET
烧录成功但无串口输出 串口波特率不匹配或 TX/RX 接反 检查波特率(默认 115200),交换 TX/RX

我的习惯:每次搭建新环境,我都会先跑一遍 hb build -f 确认编译没问题,再烧录。这样能快速定位问题是出在编译阶段还是烧录阶段。

嗯,环境搭建这部分就这些内容。记住一个原则:版本对应、工具链匹配、串口接线别搞反。做到这三点,环境搭建基本不会出大问题。