1. 鸿蒙南向开发环境搭建:从零开始,让代码跑起来
说实话,很多初学者卡在环境搭建这一步。我见过不少人,源码下载了三天三夜,结果编译报错,心态直接崩了。别急,咱们一步步来。
这一章,我带你搞定四件事:拿到 OpenHarmony 源码、装好 DevEco Device Tool、配好编译工具链、最后把固件烧进 Hi3861 开发板。每一步我都会把坑指出来。
1.1 整体流程:一张图看懂
先看整体流程。环境搭建不是乱来的,有清晰的依赖关系。我画了张图,你一看就明白。
1.2 获取 OpenHarmony 源码
源码获取,我推荐用 repo 工具。为什么?因为 OpenHarmony 项目由几百个 Git 仓库组成,手动 clone 会疯掉。
1.2.1 安装 repo 工具
# 创建 bin 目录并加入 PATH
mkdir -p ~/bin
export PATH=~/bin:$PATH
# 下载 repo 工具
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo
chmod a+x ~/bin/repo
# 验证安装
repo --version
嗯,这里要注意:国内访问 GitHub 有时很慢。我建议直接用 Gitee 镜像,省心。
1.2.2 下载源码
# 创建工作目录
mkdir -p ~/openharmony
cd ~/openharmony
# 初始化 repo(以 3.2 Release 为例)
repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-3.2-Release --no-repo-verify
# 同步源码(这一步很慢,建议挂代理或夜间跑)
repo sync -c -j4
--fail-fast 参数,或者写个脚本自动重试。我个人习惯用 while ! repo sync -c -j4; do sleep 5; done 循环拉取。
同步完成后,源码目录大约 8-10 GB。你可以用 du -sh 确认一下。
1.3 安装 DevEco Device Tool
DevEco Device Tool 是华为官方提供的集成开发环境。说白了,它帮你管理源码、编译、烧录,一条龙服务。
1.3.1 下载与安装
去华为开发者官网下载 Linux 版本。我用的版本是 3.1.0。
# 解压安装包
tar -xvf DevEco-Device-Tool-3.1.0-Linux.tar.gz
# 运行安装脚本
cd DevEco-Device-Tool-3.1.0-Linux
./install.sh
安装过程中会检测 Python、Node.js 等依赖。如果缺了什么,它会提示你安装。
1.3.2 配置项目
安装完成后,启动 DevEco Device Tool:
deveco-device-tool
然后导入我们刚才下载的源码:
- 点击 "File" → "Open Project"
- 选择
~/openharmony目录 - 等待索引完成(第一次会比较慢)
out/ 和 third_party/ 目录。这些目录文件多,但编译时才用到。
1.4 搭建编译工具链
Hi3861 使用的是 RISC-V 内核,所以我们需要交叉编译工具链。OpenHarmony 源码里自带了一套工具链脚本,但需要手动触发下载。
1.4.1 下载工具链
cd ~/openharmony
# 执行工具链下载脚本
bash build/prebuilts_download.sh
这个脚本会下载 gn、ninja、llvm、gcc_riscv32 等工具。下载完成后,它们会被放在 prebuilts/ 目录下。
1.4.2 验证工具链
# 检查 RISC-V GCC
prebuilts/gcc/linux-x86/riscv32/riscv32-unknown-elf/bin/riscv32-unknown-elf-gcc --version
# 检查 GN
prebuilts/build-tools/linux-x86/bin/gn --version
# 检查 Ninja
prebuilts/build-tools/linux-x86/bin/ninja --version
如果都能正常输出版本号,说明工具链没问题。
gcc_riscv32 工具链。不要用 64 位的,否则链接会报错。
1.5 Hi3861 开发板烧录与验证
终于到了最激动人心的环节——让代码跑在硬件上。
1.5.1 编译 Hi3861 示例工程
OpenHarmony 为 Hi3861 提供了默认示例。我们先编译它:
cd ~/openharmony
# 设置编译环境
hb set
# 选择 "wifiiot_hispark_pegasus" 或 "hispark_pegasus"
# 按回车确认
# 开始编译
hb build -f
第一次编译会比较慢,大概 5-10 分钟。编译成功后,会在 out/hispark_pegasus/wifiiot_hispark_pegasus/ 目录下生成 Hi3861_wifiiot_app_allinone.bin 文件。
1.5.2 连接开发板
用 USB 线连接 Hi3861 开发板到电脑。在 Linux 下,它会识别为 /dev/ttyUSB0 或 /dev/ttyACM0。
# 查看串口设备
ls -l /dev/ttyUSB*
如果没有显示,检查驱动。Hi3861 使用 CH340 或 CP2102 串口芯片,一般 Linux 内核自带驱动。
1.5.3 烧录固件
在 DevEco Device Tool 中烧录:
- 点击左侧 "Project" 面板
- 找到 "Hi3861" 配置项
- 设置串口号(如
/dev/ttyUSB0) - 点击 "Upload" 按钮
或者用命令行烧录:
# 进入烧录工具目录
cd ~/openharmony/vendor/hisi/hi3861/hi3861/tools
# 执行烧录脚本
python3 hi_flash.py -i /dev/ttyUSB0 -b 921600 -f ../../../../out/hispark_pegasus/wifiiot_hispark_pegasus/Hi3861_wifiiot_app_allinone.bin
1.5.4 验证运行
烧录完成后,按一下 "RST" 键复位开发板。用串口工具(如 minicom 或 screen)连接:
sudo minicom -D /dev/ttyUSB0 -b 115200
你会看到类似下面的输出:
......
[I] [app] Hello, OpenHarmony!
[I] [app] WiFi IoT SDK version: 1.0.0
[I] [app] Starting...
[I] [app] System init done.
看到 "Hello, OpenHarmony!" 了吗?恭喜,环境搭建成功了!
1.6 常见问题与避坑指南
| 问题 | 原因 | 解决方案 |
|---|---|---|
repo sync 卡住不动 |
网络不稳定或 Git 仓库过大 | 使用 repo sync -c -j1 单线程拉取,或换用 Gitee 镜像 |
编译报错 riscv32-unknown-elf-gcc: not found |
工具链未下载或路径不对 | 重新执行 build/prebuilts_download.sh |
烧录时提示 No such file or directory |
串口设备权限不足 | 执行 sudo chmod 666 /dev/ttyUSB0 或加入 dialout 用户组 |
| 开发板无输出 | 串口波特率设置错误 | 确认使用 115200 波特率,8N1 格式 |