第二章:开发环境搭建

说实话,很多初学者在传感器驱动开发上栽跟头,不是因为代码写不好,而是环境没搭对。我见过太多人花一整天折腾编译不过,最后发现是工具链版本不对。这一章,咱们就把这些坑提前填上。

2.1 OpenHarmony源码获取

源码获取是第一步。我个人习惯用repo工具来管理,因为OpenHarmony的仓库实在太多了,手动git clone会疯掉。

核心步骤:

  1. 安装repo工具:curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3/repo > /usr/local/bin/repo
  2. 创建源码目录:mkdir ohos && cd ohos
  3. 初始化仓库:repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
  4. 同步代码: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的同学。

配置时要注意几点:

  1. 安装完成后,打开VS Code,点击左侧的DevEco图标
  2. 在“Home”页面配置你的工具链路径
  3. 选择对应的芯片平台——比如我们做传感器驱动,一般选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为例:

  1. 用USB线连接开发板和电脑
  2. 在DevEco Device Tool里选择“Upload”
  3. 选择对应的串口(一般是/dev/ttyUSB0或COM3)
  4. 点击烧录,同时按住开发板的复位键

注意:烧录时如果提示“无法打开串口”,八成是权限问题。运行sudo chmod 666 /dev/ttyUSB0可以临时解决。永久方案是把用户加到dialout组:sudo usermod -aG dialout $USER

烧录成功后,你会看到开发板的LED灯闪烁,串口输出“Hello World”。那一刻,嗯,挺有成就感的。

本章知识体系

下面这张图总结了整个开发环境搭建的流程,我建议你保存下来,以后每次搭环境时对照着看:

开发环境搭建流程 1. 源码获取 repo init + repo sync 2. IDE安装配置 DevEco Device Tool 3. 编译环境 Ubuntu + Docker 4. 源码编译 hb set + hb build 5. 烧录验证 串口烧录 + 运行 6. 调试优化 日志 + 串口工具 迭代开发循环 环境搭建是基础,基础打牢了,后面写驱动才顺手 关键点:版本匹配 | 权限设置 | Docker环境隔离 | 增量编译

环境搭好了,下一章咱们就开始真正写传感器驱动了。到时候你会发现,前面这些折腾都是值得的。


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