2. 开发环境搭建:鸿蒙源码获取、编译环境配置、HDF开发工具链安装
说实话,做驱动开发这么多年,我踩过最多的坑就是环境搭建。你想想看,代码还没写一行,光配环境就折腾一整天,心态直接崩了。鸿蒙的HDF驱动开发也不例外,但好在官方这几年把工具链整理得越来越顺手了。这一章,我就带你一步步把环境搭起来。
2.1 鸿蒙源码获取:从repo到本地
鸿蒙的源码托管在码云(Gitee)上,用的是Google的repo工具来管理多仓库。我第一次用repo的时候还闹过笑话——以为直接git clone就行,结果发现鸿蒙有上千个仓库,手动拉取得累死。
安装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 |
装完依赖后,验证一下环境:
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
~/.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专用工具。每一步都有对应的验证方法,确保你走到下一步时不会出问题。
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