2. 开发环境搭建:鸿蒙源码获取、编译环境配置、HDF开发工具链安装

说实话,做驱动开发这么多年,我踩过最多的坑就是环境搭建。你想想看,代码还没写一行,光配环境就折腾一整天,心态直接崩了。鸿蒙的HDF驱动开发也不例外,但好在官方这几年把工具链整理得越来越顺手了。这一章,我就带你一步步把环境搭起来。

2.1 鸿蒙源码获取:从repo到本地

鸿蒙的源码托管在码云(Gitee)上,用的是Google的repo工具来管理多仓库。我第一次用repo的时候还闹过笑话——以为直接git clone就行,结果发现鸿蒙有上千个仓库,手动拉取得累死。

我的习惯:先装好repo,再拉源码。别跳过这一步,否则后面编译会报各种奇怪的依赖缺失错误。

安装repo很简单,就几步:

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

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

# 初始化repo仓库(以OpenHarmony 3.2 Release为例)
mkdir ohos_3.2
cd ohos_3.2
repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-3.2-Release --no-repo-verify

# 同步源码(这步最耗时,我建议用-j4,别开太多线程,容易断)
repo sync -c -j4

嗯,这里要注意:repo sync 的时候网络不稳定很容易中断。我曾经在公司配了一下午,断了七八次。后来学乖了,写了个循环脚本:

#!/bin/bash
while true; do
  repo sync -c -j4
  if [ $? -eq 0 ]; then
    echo "同步完成!"
    break
  fi
  echo "网络波动,重试中..."
  sleep 5
done

源码拉下来大概有15GB左右,包含内核、驱动框架、系统服务等。你可以在 drivers/ 目录下找到HDF相关的代码,这是咱们的主战场。

2.2 编译环境配置:别让工具链卡住你

鸿蒙支持Linux和Windows(WSL)两种开发环境。我个人强烈推荐Ubuntu 20.04或22.04 LTS,64位系统。为什么?因为HDF的编译脚本对Python和Node.js的版本很敏感,Windows上容易出编码问题。

你需要安装以下依赖:

软件包 版本要求 安装命令(Ubuntu)
Python 3.8+ sudo apt install python3.8 python3-pip
Node.js 12.x 或 14.x curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
hb工具 最新版 pip3 install --user ohos-build
gn/ninja 随源码自带 无需单独安装
其他 - sudo apt install gcc g++ make cmake unzip
我曾经踩过的坑:Python版本不要用3.10以上,hb工具对3.10的支持有问题。我有一回升级了系统自带的Python到3.11,结果hb build直接报"module not found",折腾了两天才发现是版本兼容问题。

装完依赖后,验证一下环境:

python3 --version
node --version
hb --version

如果hb命令找不到,记得把 ~/.local/bin 加到PATH里:

export PATH=~/.local/bin:$PATH
echo 'export PATH=~/.local/bin:$PATH' >> ~/.bashrc

2.3 HDF开发工具链安装:让驱动开发有趁手的兵器

HDF开发除了基本的编译工具,还需要几个专用工具。说白了,就是帮你生成驱动框架代码、管理驱动配置的。

首先是 hdf-gen 工具,它可以根据HCS(HDF Configuration Source)配置文件自动生成驱动骨架代码。安装方式如下:

# 从源码中提取hdf-gen
cd ohos_3.2
python3 drivers/hdf/tools/hdf-gen/hdf_gen.py --help

# 为了方便,我建议做个软链接
sudo ln -s $(pwd)/drivers/hdf/tools/hdf-gen/hdf_gen.py /usr/local/bin/hdf-gen

然后是 hcs-compiler,用于编译HCS配置文件为二进制格式。驱动加载时读的是二进制文件,不是文本文件。这个工具在源码里已经自带了:

# 编译HCS文件
python3 drivers/hdf/tools/hcs/hcs.py -i your_config.hcs -o output_config.hcb
小技巧:我习惯把这两个工具加到bash别名里,省得每次敲长路径。在 ~/.bashrc 里加上:
alias hdf-gen='python3 /path/to/ohos_3.2/drivers/hdf/tools/hdf-gen/hdf_gen.py'
alias hcs-compile='python3 /path/to/ohos_3.2/drivers/hdf/tools/hcs/hcs.py'

最后,验证工具链是否安装成功:

hdf-gen --version
hcs-compile --help

如果都能正常输出帮助信息,恭喜你,环境搭好了!

2.4 知识体系总览:一张图看懂环境搭建

说了这么多,你可能有点晕。别急,我画了张SVG图,把整个流程串起来。你看一眼就明白了:

HDF开发环境搭建流程 1. 源码获取 安装 repo 工具 repo init 初始化 repo sync 同步 约15GB,耗时30-60分钟 2. 编译环境配置 Python 3.8+ / Node.js 安装 hb 构建工具 安装 gcc/g++/cmake 注意Python版本兼容性 3. HDF工具链安装 hdf-gen 代码生成器 hcs-compiler 配置编译 配置bash别名 验证工具版本 ✅ 环境验证:hb build 测试编译 ⚠️ 常见问题 repo sync 网络中断 → 使用循环脚本重试 hb 命令找不到 → 检查 ~/.local/bin 是否在 PATH 中

这张图把三个步骤串起来了:先拉源码,再配编译环境,最后装HDF专用工具。每一步都有对应的验证方法,确保你走到下一步时不会出问题。

2.5 快速验证:跑一个Hello World驱动

环境搭好了,咱们得验证一下能不能用。我建议你编译一个最小的HDF驱动示例:

# 进入源码根目录
cd ohos_3.2

# 设置产品(以rk3568为例)
hb set -root .
hb set -p rk3568

# 编译HDF驱动模块(只编译驱动,不编译整个系统,省时间)
./build.sh --product-name rk3568 --build-target hdf_core

如果编译成功,你会看到类似这样的输出:

...
[1/1] STAMP obj/drivers/hdf_core/hdf_core.stamp
===== build hdf_core successful =====

看到 build successful 这几个字,说明你的环境完全OK了。接下来就可以正式开始写驱动代码了。

总结一下:环境搭建说白了就三步——拉代码、装依赖、配工具。每一步都有坑,但我把常见的都写在上面了。你照着来,应该半小时内能搞定。如果卡住了,检查一下网络和Python版本,80%的问题出在这两个地方。


公众号:蓝海资料掘金营,微信deep3321