第二章:开发环境搭建
说实话,很多初学者在传感器驱动开发上栽跟头,不是因为代码写不好,而是环境没搭对。我见过太多人花一整天折腾编译不过,最后发现是工具链版本不对。这一章,咱们就把这些坑提前填上。
2.1 OpenHarmony源码获取
源码获取是第一步。我个人习惯用repo工具来管理,因为OpenHarmony的仓库实在太多了,手动git clone会疯掉。
核心步骤:
- 安装repo工具:
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3/repo > /usr/local/bin/repo - 创建源码目录:
mkdir ohos && cd ohos - 初始化仓库:
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify - 同步代码:
repo sync -c -j4
这里有个小技巧:-j4表示4个线程并行下载。如果你网络好,可以改成-j8甚至-j16。我曾经在客户现场用-j32,结果把人家公司的出口带宽全占了,被网管找上门…嗯,悠着点。
避坑指南:如果你在gitee上下载慢,可以试试镜像站。我个人习惯用华为云的镜像:repo init -u https://mirrors.huaweicloud.com/openharmony/manifest.git,速度能快3-5倍。
2.2 DevEco Device Tool安装与配置
DevEco Device Tool是华为官方出的IDE插件,说白了就是帮你管理编译、烧录这些杂活。我刚开始用的时候也觉得多余,但用顺手了真离不开。
安装方式有两种:
- VS Code插件方式:在VS Code里搜索“DevEco Device Tool”直接安装。我个人推荐这种方式,轻量、好管理。
- 独立安装包:去华为开发者官网下载。适合不想装VS Code的同学。
配置时要注意几点:
- 安装完成后,打开VS Code,点击左侧的DevEco图标
- 在“Home”页面配置你的工具链路径
- 选择对应的芯片平台——比如我们做传感器驱动,一般选Hi3861或Hi3516
注意:DevEco Device Tool的版本必须和OpenHarmony源码版本匹配。我踩过这个坑:用2.2版本的Tool去编译3.0的源码,报了一堆莫名其妙的错。查了两天才发现是版本不兼容。
2.3 编译环境搭建(Ubuntu + Docker)
编译环境我强烈推荐用Docker。为什么?因为OpenHarmony的编译依赖太多了,Python版本、交叉编译工具链、各种库…手动配一遍至少半天,而且不同项目可能还需要不同版本。
我的做法是这样的:
# 拉取官方Docker镜像
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony/docker:latest
# 运行容器,挂载源码目录
docker run -it -v /path/to/ohos:/home/openharmony \
swr.cn-south-1.myhuaweicloud.com/openharmony/docker:latest /bin/bash
进到容器里后,环境就已经配好了。你想想看,省了多少事?
Docker的优势:
- 环境隔离:不会污染你的宿主机
- 版本可控:想换版本就换个镜像标签
- 团队协作:大家用同一个环境,减少“在我机器上能跑”的尴尬
如果你实在不想用Docker,也可以用Ubuntu 20.04物理机。但记得安装这些依赖:
sudo apt-get install -y python3 python3-pip binutils build-essential git
sudo pip3 install setuptools kconfiglib pycryptodome ecdsa
2.4 源码编译与烧录
编译命令其实很简单,但参数容易搞混。我一般这样操作:
# 进入源码根目录
cd ohos
# 设置编译目标(以Hi3861为例)
hb set -p hi3861
# 开始编译
hb build -f
hb是OpenHarmony的编译工具,-f表示全量编译。第一次编译会比较慢,大概20-30分钟。之后如果只改了几个文件,可以用hb build(不加-f)做增量编译,快很多。
个人经验:编译时建议开一个单独的终端窗口,用top命令观察CPU和内存使用。如果发现内存不够(比如只有8GB),可以加--ccache参数启用缓存,能省不少时间。
烧录这一步,不同板子方法不同。以Hi3861为例:
- 用USB线连接开发板和电脑
- 在DevEco Device Tool里选择“Upload”
- 选择对应的串口(一般是/dev/ttyUSB0或COM3)
- 点击烧录,同时按住开发板的复位键
注意:烧录时如果提示“无法打开串口”,八成是权限问题。运行sudo chmod 666 /dev/ttyUSB0可以临时解决。永久方案是把用户加到dialout组:sudo usermod -aG dialout $USER。
烧录成功后,你会看到开发板的LED灯闪烁,串口输出“Hello World”。那一刻,嗯,挺有成就感的。
本章知识体系
下面这张图总结了整个开发环境搭建的流程,我建议你保存下来,以后每次搭环境时对照着看:
环境搭好了,下一章咱们就开始真正写传感器驱动了。到时候你会发现,前面这些折腾都是值得的。
公众号:蓝海资料掘金营,微信deep3321