2、开发环境搭建:搭建OpenHarmony源码编译环境、安装DevEco Studio、配置Hi3861/Hi3516开发板环境

说实话,做嵌入式开发这么多年,我踩过最多的坑就是环境搭建。明明代码逻辑没问题,结果编译不过去,一查是工具链版本不对。所以这一章,咱们把环境一次搞定。

2.1 搭建OpenHarmony源码编译环境

先说说操作系统。我个人习惯用Ubuntu 20.04 LTS,这个版本我试过最稳。Windows用户也别急,装个虚拟机或者WSL2都行。

2.1.1 安装基础依赖

打开终端,先更新包列表:

sudo apt-get update
sudo apt-get upgrade -y

然后安装编译需要的工具:

sudo apt-get install -y python3 python3-pip python3-setuptools
sudo apt-get install -y gcc-arm-none-eabi
sudo apt-get install -y build-essential
sudo apt-get install -y git curl wget
sudo apt-get install -y libssl-dev libffi-dev

嗯,这里要注意。Python版本必须3.7以上。我遇到过有人用Python 2.7折腾半天,最后发现不支持。

2.1.2 配置Python虚拟环境

我建议用虚拟环境,避免污染系统Python。曾经有一次我直接装包,结果把系统Python搞崩了,重装了系统……

sudo pip3 install virtualenv
mkdir ~/openharmony_env
cd ~/openharmony_env
virtualenv -p python3 oh_env
source oh_env/bin/activate

激活后,终端前面会出现 (oh_env) 字样,说明成功了。

2.1.3 下载OpenHarmony源码

源码比较大,我建议用repo工具来管理:

pip3 install repo
mkdir ~/openharmony
cd ~/openharmony
repo init -u https://gitee.com/openharmony/manifest.git -b master
repo sync -c -j8

这里 -j8 表示8个线程并行下载。你机器核多可以调大,比如 -j16。下载时间取决于网速,我一般泡杯咖啡等着。

2.1.4 安装编译工具链

编译Hi3861和Hi3516需要不同的工具链。说白了,就是给不同芯片准备的编译器。

开发板 工具链 安装方式
Hi3861 gcc-arm-none-eabi apt-get install
Hi3516 gcc-arm-linux-gnueabi 手动下载安装

Hi3861的工具链刚才已经装了。Hi3516的需要手动下载:

wget https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-arm-linux-gnueabi.tar.xz
tar -xf gcc-arm-9.2-2019.12-x86_64-arm-linux-gnueabi.tar.xz
sudo mv gcc-arm-9.2-2019.12-x86_64-arm-linux-gnueabi /opt/
export PATH=/opt/gcc-arm-9.2-2019.12-x86_64-arm-linux-gnueabi/bin:$PATH

记得把 export 加到 ~/.bashrc 里,不然每次开终端都要重新设置。

2.2 安装DevEco Studio

DevEco Studio是华为官方IDE,说白了就是定制版的IntelliJ。我用它写过不少鸿蒙应用,感觉比Eclipse顺手多了。

2.2.1 下载与安装

去华为开发者官网下载Linux版本。下载后是个 .tar.gz 包:

tar -xzf DevEco-Studio-*.tar.gz
cd deveco-studio/bin
./studio.sh

第一次启动会引导你配置SDK路径。我建议放在 ~/DevEcoStudio/sdk 下,方便管理。

小提示: 如果启动报错说缺少Java环境,先装JDK 11:sudo apt-get install openjdk-11-jdk

2.2.2 配置SDK与工具链

打开DevEco Studio后,进入 File > Settings > Appearance & Behavior > System Settings > HarmonyOS SDK

这里要配置三样东西:

  • SDK版本: 选最新的稳定版就行
  • NDK路径: 指向你刚才装的交叉编译工具链
  • hb工具: 鸿蒙的编译命令行工具

hb工具需要单独安装:

cd ~/openharmony
python3 -m pip install --user build/hb
hb set

运行 hb set 后,会列出可用的产品。选 hi3861 或者 hi3516 就行。

2.3 配置Hi3861开发板环境

Hi3861是Wi-Fi IoT芯片,说白了就是做智能家居小设备的。我最早拿它做了一个温湿度传感器,跑起来挺稳。

2.3.1 编译Hi3861固件

先确认源码根目录下有 vendor/hisi/hi3861 目录。然后执行:

cd ~/openharmony
hb set
# 选择 hi3861
hb build -f

编译大概5-10分钟。第一次编译会下载一些依赖,后面就快了。

编译成功标志: 看到 BUILD SUCCESS 字样,固件在 out/hi3861/wifiiot_hispark_pegasus/ 目录下,文件名是 Hi3861_wifiiot_app_allinone.bin

2.3.2 烧录固件

烧录工具用HiBurn。下载后解压,打开 HiBurn.exe(Windows下)。

步骤很简单:

  1. 选择COM口(设备管理器里看)
  2. 波特率设为921600
  3. 点击 Connect
  4. 选择刚才编译好的 .bin 文件
  5. 点击 Burn

烧录时记得按住开发板上的 BOOT 键,再按 RST 键进入烧录模式。我曾经忘了按BOOT键,折腾了半小时……

2.4 配置Hi3516开发板环境

Hi3516是视频处理芯片,带摄像头接口。说白了就是做智能摄像头、门禁这类产品的。

2.4.1 编译Hi3516固件

和Hi3861类似,但选择的产品不同:

cd ~/openharmony
hb set
# 选择 hi3516dv300
hb build -f

编译时间会长一些,大概15-20分钟。因为Hi3516的镜像包含了Linux内核和文件系统。

2.4.2 烧录Hi3516固件

Hi3516用USB烧录。需要先安装驱动:

sudo apt-get install -y android-tools-adb
sudo apt-get install -y hisi-idt

烧录命令:

sudo hisi-idt -f u-boot-hi3516dv300.bin
# 然后通过网口烧录内核和文件系统

具体步骤有点繁琐,我建议直接用华为官方的 HiTool 工具,图形化界面,点几下鼠标就行。

注意: Hi3516烧录时,开发板需要进入 uboot 模式。上电后快速按回车键,看到 hisilicon # 提示符就对了。

2.5 验证环境是否正常

环境搭好了,咱们跑个Hello World试试。说白了就是确认工具链能正常工作。

在源码的 applications/sample/wifi-iot/app 目录下,新建一个 hello_world 文件夹,里面放两个文件:

hello_world.c

#include "ohos_init.h"
#include "ohos_types.h"

void HelloWorldTask(void)
{
    printf("Hello, OpenHarmony!\n");
}

SYS_RUN(HelloWorldTask);

BUILD.gn

static_library("hello_world") {
    sources = [
        "hello_world.c"
    ]
    include_dirs = [
        "//utils/native/lite/include"
    ]
}

然后修改 applications/sample/wifi-iot/app/BUILD.gn,加入 "hello_world:hello_world"

重新编译烧录后,串口输出 Hello, OpenHarmony! 就说明环境完全OK了。

我的经验: 第一次跑通Hello World时,那种成就感真的很棒。别着急,慢慢来,环境搭好了后面就顺了。

2.6 本章知识体系

下面这张图帮你理清整个环境搭建的脉络:

OpenHarmony开发环境搭建框架 开发环境搭建 源码编译环境 DevEco Studio 开发板配置 Ubuntu 20.04 Python 3.7+ repo + hb JDK 11 SDK配置 NDK路径 Hi3861 Hi3516 工具链 验证:Hello World 编译烧录

这张图把整个环境搭建分成了三大块。左边是源码编译环境,中间是IDE,右边是开发板配置。最后汇合到验证环节。你按这个顺序来,基本不会出错。


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