摘要:相信很多同学都玩过鸿蒙(HarmonyOS)了,不过估计大多数同学都只是用鸿蒙开发App,与开发Android App也没啥区别。不过鸿蒙还有更有意思的玩法,那就是与硬件结合,也就是IoT。本文将教大家如何将鸿蒙刷到开发板上,通过这些开发板可以控制更多的硬件。
本文的目的是将鸿蒙2.0刷到润和Hi3861、Hi3516和Hi3518开发板上。目前网上已经有很多关于刷鸿蒙2.0的文章,我整理了一下,并结合自己的经验,在本文中阐述了从配置环境,到编译鸿蒙源代码,再到刷机的全过程。
注意:这里的Hi3861相当于Ardiuno,价格也差不多,主要用于控制外设,本身并没有多少计算能力,Hi3516和Hi3518的配置相对较高,支持GUI。有点类似于树莓派。
本文主要以Hi3861为例,其他两个开发板的编译和刷机过程类似。
Hi3581需要分为编译环境和烧录环境,目前编译环境只能是Linux,推荐使用Ubuntu Linux 20.04,用这个版本你会少了很多麻烦。至少Python环境直接是3.8.5了,大家可以不用理会Python了,因为编译HarmonyOS,Python的版本是3.7或以上版本即可,经过测试,Python 3.9也没问题。
Hi3581的刷机环境需要使用Windows,推荐使用Windows 10,Home版、专业版都经过了测试,没问题,企业版的Windows还没测试,但大概率也没问题。
所以这里是重点:需要准备Ubuntu 20.04和Windows 10。 Ubuntu 20.04可以安装的虚拟机中,我用的是VMWare,这样可以通过快照在不同状态之前切换。
1. 配置编译环境
现在开始配置Ubuntu 20.04的编译环境,读者需要按着如下几步操作:
(1)配置 repo 工具
如果你的Linux系统上还没有配置repo命令,需要先按下面的操作下载并配置repo命令行工具:
复制
mkdir ~/bin/ curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo chmod +x ~/bin/repo echo 'export PATH=~/bin:$PATH' >> ~/.bashrc source ~/.bashrc
1.
2.
3.
4.
5.
如果还没有curl命令,需要先执行下面的命令下载curl:
复制
sudo apt install curl
1.
(2)下载HarmonyOS源代码
读者可按下面的操作下载HarmonyOS的最新源代码
复制
mkdir -p ~/harmonyos/openharmony && cd ~/harmonyos/openharmony sudo apt install --no-install-recommends git python # repo工具本身是python脚本,它会调用git命令下载单个代码仓 git config --global user.name "yourname" git config --global user.email "your-email-address" repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify repo sync -c # 以后每天同步远程仓的修改,只需要执行这一条命令即可
1.
2.
3.
4.
5.
6.
读者需要将yourname改成自己的名字,将your-email-address改成自己的email。
(3)检测mkfs.vfat和mcopy命令是否安装
在终端执行这两个命令,如果没有安装,使用apt安装这两个命令
(4)安装各种工具和包
在终端执行下面的命令进行安装:
复制
sudo apt-get install dosfstools mtools # 官方文档说明的两个文件系统打包工具 sudo apt-get install zip # 官方文档虽然没有写,但是打包rootfs过程中需要使用 sudo apt install mtd-utils # 3518需要打包 jffs2 镜像的mkfs.jffs2 命令,需要安装这个包 sudo apt install build-essential # 安装gcc/g++/make等工具,ffmpeg的测试过程中需要使用
1.
2.
3.
4.
(5)下载各种编译器和工具包
下面的命令分别下载了gn、ninja、LLVM、hc-gen包,一步到位
复制
# 下载gn/ninja/LLVM/hc-gen包 URL_PREFIX=https://repo.huaweicloud.com/harmonyos/compiler DOWNLOAD_DIR=~/Downloads # 下载目录,可自行修改 TOOLCHAIN_DIR=~/harmonyos/toolchain # 工具链存放目录,可自行修改 [ -e $DOWNLOAD_DIR ] || mkdir $DOWNLOAD_DIR [ -e $TOOLCHAIN_DIR ] || mkdir -p $TOOLCHAIN_DIR wget -P $DOWNLOAD_DIR $URL_PREFIX/gn/1523/linux/gn.1523.tar wget -P $DOWNLOAD_DIR $URL_PREFIX/ninja/1.9.0/linux/ninja.1.9.0.tar wget -P $DOWNLOAD_DIR $URL_PREFIX/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar wget -P $DOWNLOAD_DIR $URL_PREFIX/hc-gen/0.65/linux/hc-gen-0.65-linux.tar # 编译 hi3861 需要 riscv 编译工具链 wget -P $DOWNLOAD_DIR $URL_PREFIX/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz # 解压gn/ninja/LLVM/hc-gen包: tar -C $TOOLCHAIN_DIR/ -xvf $DOWNLOAD_DIR/gn.1523.tar tar -C $TOOLCHAIN_DIR/ -xvf $DOWNLOAD_DIR/ninja.1.9.0.tar tar -C $TOOLCHAIN_DIR/ -xvf $DOWNLOAD_DIR/llvm-linux-9.0.0-34042.tar tar -C $TOOLCHAIN_DIR/ -xvf $DOWNLOAD_DIR/hc-gen-0.65-linux.tar tar -C $TOOLCHAIN_DIR/ -xvf $DOWNLOAD_DIR/gcc_riscv32-linux-7.3.0.tar.gz # 向 ~/.bashrc 中追加gn/ninja/LLVM/hc-gen路径配置: cat <<EOF >> ~/.bashrc TOOLCHAIN_DIR=$TOOLCHAIN_DIR export PATH=\$TOOLCHAIN_DIR/gn:\$PATH export PATH=\$TOOLCHAIN_DIR/ninja:\$PATH export PATH=\$TOOLCHAIN_DIR/llvm/bin:\$PATH export PATH=\$TOOLCHAIN_DIR/hc-gen:\$PATH export PATH=\$TOOLCHAIN_DIR/gcc_riscv32/bin:\$PATH export PATH=~/.local/bin:\$PATH # 用户pip二进制工具目录 EOF # 生效环境变量 source ~/.bashrc
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
(6)改变pip源,加速下载
执行下面的命令重新配置pip.conf文件
复制
mkdir ~/.pip/ cat <<EOF > ~/.pip/pip.conf [global] index-url = https://mirrors.huaweicloud.com/repository/pypi/simple trusted-host = mirrors.huaweicloud.com timeout = 120 EOF
1.
2.
3.
4.
5.
6.
7.
另外,如果没有pip命令,是因为默认叫pip3,可以执行下面的命令创建pip命令。
ln -s /usr/bin/pip3 /usr/bin/pip
(7)继续安装各种包
复制
# 安装 setuptools 和 kconfiglib pip3 install setuptools kconfiglib # 安装编译hi3861需要的pip包 pip3 install scons ecdsa pycryptodome
1.
2.
3.
4.
5.
2. 编译HarmonyOS源代码
(1)查看支持的平台
通过执行python build.py -h命令,可以查看HarmonyOS当前支持哪些平台,如图1所示。
第1个是hi3561,第2个是hi3518,第3个是hi3861。
(2)分别执行和3个命令来编译这3个版本的目标文件
如果要增加调试信息,后面可以加-b debug
复制
# 编译hi3561 python build.py ipcamera_hi3516dv300 -b debug # 编译hi3518 python build.py ipcamera_hi3518dv300 -b debug # 编译hi3861 python build.py wifiiot
1.
2.
3.
4.
5.
6.
执行这3行命令,会在
编译完的二进制文件下载方式在本文后面。
3. 烧录HarmonyOS
本文以Hi3861开发板为例,开发板样式如图2所示。
需要按下面的步骤进行烧录。
(1)将Hi3861_wifiiot_app_allinone.bin文件复制到Windows10中(随便放一个目录就可以)。
(2)用Hi3861连接线将开发板与PC连接。
(3)检查设备管理器,看看是否正确识别Hi3861开发板,如果正确识别,如图3所示。
如果设备管理器没有“端口(COM和LPT)”节点,那是因为被隐藏了,点击“查看”>“显示隐藏的设备”菜单项,就会显示,如图4所示。
通常Windows 10会自动安装驱动,如果不幸没有自动安装驱动,那么可以自行下载。Hi3861使用的是CH340G芯片,读者可自己在google搜索该芯片驱动的下载地址,也可以在本文后面下载驱动文件。
(4)运行HiBurn.exe
这个工具是海思做的,用于烧录开发板,华为推出的驱动开发工具内置了该工具,读者也可以在本文后面下载该工具。
运行后,在COM中选择图3看到的COM端口号(如图5所示),本例是COM4。
(5)选择传输速率
点击HiBurn中的Setting > com settings菜单项,弹出Com settings对话框,在Baud中选择3000000,让烧录速度更快,如图6所示。
(6)点击Select file按钮,选择Hi3861_wifiiot_app_allinone.bin文件,在下方列表中会出现如图7所示的3个烧录项。这个文件其实是多个烧录项的合体。
(7)开始烧录
选中Send file按钮旁边的Auto burn复选框,然后点击上方的connect按钮,这时下方日志栏会出现Connecting字样,如图8所示。
(8)最后按一下图2所示开发板上的Reset Key,就会开始烧录,如图9所示。
这是因为Hi3861开发板需要重启,才会检测boot动作,如果遇到烧录的指令,就会烧录,否则就会正常启动。
如果烧录成功,会显示如图9所示的信息。
另外,AI Camera和DIY IPC套件附赠的USB串口线中集成了PL2302芯片,需要安装USB-to-Serial Comm Port.exe驱动才可以被Windows识别,下载地址: http://www.hihope.org/download
OK,然后就可以愉快滴玩耍了。后期会推出基于HI3861以及其他HarmonyOS开发板的有趣的IoT项目的文章和视频课程,敬请期待。
文章后续内容和相关附件可以点击下面的原文链接前往学习
原文链接: https://developer.51cto.com/art/202102/647152.htm