前言
此系列是笔者关于OpenHarmony智能家居开发套件(Hi3861芯片)的学习历程,本篇作为入门环节,将具体介绍OpenHarmony的环境搭建。
Windows[新手推荐]
目前Window系统已经能够用过DevEco Device Tool工具独立完成大部分的OpenHarmony开发工作,而先前通过HiBurn,MobaXterm工具进行的烧录,串口调试并不方便,下面具体介绍如何在Windows系统上配置环境。
DevEco Device Tool安装
我们双击下载Windows(64-bit)版本的ZIP压缩包即可。
下载完成后请各位自行解压,打开解压号的文件,双击exe文件进行安装。
点击“下一步”。
选择“我接受…”,点击“下一步”。
选择安装的目录,点击"下一步"[不建议安装在C盘]。
因为笔者自己的电脑上已经安装过Python和VSCode了,这里的状态是ok,如果没有装过Python和VsCode的伙伴们也不用担心,你可以通过这个安装软件下载python和VsCode。
如果你想自己安装Python和VsCode,笔者也会提供他们的官网地址,供小伙伴们参考,这里就不详细说明了。要注意工具对应的版本需求,不能错。
点击“安装”等待…
点击“完成”完成DevEco Device Tool的安装。
现在我们打开VsCode,就会发现左侧栏中多了一个工具。
那么至此Windows开发OpenHarmony的环境已经完成了一大半,是不是很简单。
使用DevEco Device Tool创建项目
- 点击New Project。
- 输入自己的项目名,在SOC中选择Hi3861。
- 点击“Download”下载SDK。
- 下载完成后,点击“Confirm”完成项目的创建。
我们创建的项目,OpenHarmony的源码在src目录下。
编译
项目已经建好了,下面就可以开始编译了。
- 打开“DevEco”工具,点击“Biuld”。
我们可以看到控制台的输出,表示我们在32秒的时间完成了编译[首次编译时会自动下载相关的依赖耗时可能较长]。
烧录
点击“upload”进行烧录,我们发现控制台报了错,是因为烧录工具和端口我们自己去手动配置。
在进行烧录端口配置之前我们需要将智能家居板连接到我们的主机上,并确保主机能够识别到这个端口。在设备管理器中可以查看智能家居板的端口信息。
在DevEco中,配置端口号,图片中漏标了upload_speed 建议改成115200。
完成配置后我们再次点击“upload”,看到控制台输出如下“Connrct…”就说明我们的烧录配置已经成功完成,此时只需要点击主板右下角的RET按钮,重启开发板即可开始烧录。如果还出现了相同的错误就点击“manager”,再点击底下的“confirm”刷新一下配置。
完成烧录。
串口调试
点击“Monitor”开始串口调试,点击主板“RET”键重启开发板,开始调试,注意观察控制台输出的信息。
如果需要中断程序,按下[Ctrl + C]即可。
至此我们已经完成了Windows下OpenHarmony环境的配置。
Windows + Linux
尽管Windows很方便,可以独立完成OpenHarmony开发的大部分工作,但是难免有时候需要使用到Linux系统对源码进行编译,那么就不得不使用Windows + Linux的环境进行开发。本篇不使用虚拟机搭建Windows,因为虚拟机的性能受到了限制,对开发效率而言是个痛点,本篇将使用WSL详细讲解Windows + Linux的环境搭建。
WSL
不了解WSL的伙伴们可以查询相关信息,这里就不细说了,简单的讲就是Windows subSystem Linux,是不是一下就理解了,我们的Linux将不再局限于原来虚拟机的配置,而是直接作为我们Windows系统下的一个子系统进行运营,性能将被大大地释放出来。
安装WSL
- 打开管理员终端 PowerShell 输入以下命令[他可能会将wsl和ubuntu一起给你装了]。
wsl --install
- 配置WSL。
启动“适用于Linux的Windows子系统”可选功能,打开PowerShell输入以下命令。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestar/
再输入以下命令,启动虚拟机功能。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
输入以下命令,设置WSL的版本为 2。
wsl --set-default-version 2
- 重启电脑,打开资源管理器,出现Linux的图标就说明我们的WSL安装完成了。
- 下面我们安装Linux,这里推荐使用Ubuntu。打开微软的商店下载Ubuntu,这里提供了3个LST长期支持版本,笔者之前已经使用20.04LTS版本完成的环境的搭建,这里就使用22.04LTS版本为大家重新演示。
5. 完成安装后打开Ubuntu,创建好账户。
至此WSL安装完成了。
但是我们还需要做一些额外的配置去优化我们的WSL,WSL是装在我们的系统盘的,时间长了很容易占用我们的系统盘空间,空间不足还会导致WSL系统崩溃,因此需要把WSL导出到别的盘符。
- 停止WSL的运行,打开PowerShell输入一下命令。
wsl --shutdown
- 输入一下命令检测WSL是否停止。
wsl -l -v
- 这里笔者把WSL导出至D盘了,目录建议先建好[一定要加xxx.tar文件]不然会出现拒绝访问的错误。
wsl --export Ubuntu-22.04 D:\wsl2-ubuntu22.04\ubuntu.tar
4. 注销Linux。
wsl --unregister Ubuntu-22.04
- 导入Linux。
wsl --import Ubuntu-22.04 D:\wsl2-ubuntu22.04\ D:\wsl2-ubuntu22.04\ubuntu.tar --version 2
- 点进我们设置好的目录,ext4.vhdx说明导出,导入成功了。xxx.tar文件大家自行删除即可。
del D:\wsl2-ubuntu22.04\ubuntu.tar
- 设置默认登录用户。
ubuntu20.04 config --default-user xxx
Windows连接Linux
- 打开VsCode,安装“WSL”这个插件。
- 安装完成后点击左下角后,选择自己要连接的Linux子系统,右下角变成笔者所示的显示Ubuntu xxx 就说明成功了。
- 打开终端,我们发现控制台显示的东西很熟悉,没错,这就是你的Linux终端了,你可以在这里使用Linux指令去操作你的系统了。
Linux环境搭建
软件包换源
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
## Not recommended
# deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
在控制台中输入以下指令,更换软件源。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
对于不熟悉Linux的伙伴们,这里提供一些Linux指令帮助大家快速删除文件的内容。
gg
100dd
将软件源复制进去后,点击[esc]键,输入 [ :wq ]保存退出。
更新软件包。
sudo apt-get update
环境搭建
- 安装必要的库和工具。
sudo apt-get install build-essential gcc g++ make zlib* libffi-dev
sudo apt-get install libc6
sudo apt-get install e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi cpio device-tree-compiler
- 配置Python。
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
python --version
- 安装pip。
sudo apt install python3-pip
- 在家目录下创建源码目录。
mkdir /home/ohos/openharmony
- 安装编译工具。
pip3 install scons
scons -v
pip3 install kconfiglib
pip3 install pycryptodome ecdsa
- 安装gcc_riscv32。
wget https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~/
rm gcc_riscv32-linux-7.3.0.tar.gz
echo 'export PATH=~/gcc_riscv32/bin:$PATH' | tee -a ~/.bashrc
source ~/.bashrc
- 安装git、git-lfs。
sudo apt install git-lfs
wget https://gitee.com/oschina/repo/raw/fork_flow/repo-py3
sudo mv repo-py3 /usr/local/bin/repo
sudo chmod a+x /usr/local/bin/repo
pip install requests
- 配置git。
git config --global user.email "xxxx@qq.com"
git config --global user.name "xxxx"
ssh-keygen -t rsa -C 'xxxx@qq.com'
cat ~/.ssh/id_rsa.pub
将公钥添加到自己的账户中。
- 安装repo。
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo
chmod a+x repo
sudo mv repo /usr/local/bin/
OpenHarmony获取源码
3.0LTS长期支持版本
repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony-v3.0-LTS --no-repo-verify
repo sync -c [这一步会稍微有些慢]
repo forall -c 'git lfs pull'
在源码的同级目录补充环境
- 安装gn。
mkdir -p ~/openharmony/prebuilts/build-tools/linux-x86/bin/
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1717/linux/gn-linux-x86-1717.tar.gz
tar -xvf gn-linux-x86-1717.tar.gz -C ~/openharmony/prebuilts/build-tools/linux-x86/bin/
rm gn-linux-x86-1717.tar.gz
- 安装nijia。
wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.10.1/linux/ninja-linux-x86-1.10.1.tar.gz
tar -xvf ninja-linux-x86-1.10.1.tar.gz -C ~/openharmony/prebuilts/build-tools/linux-x86/bin/
rm ninja-linux-x86-1.10.1.tar.gz
- 安装hb。
pip3 install build/lite
echo 'export PATH=~/.local/bin:$PATH' | tee -a ~/.bashrc
source ~/.bashrc
hb -h
最后一步中会报错 [ImportError: cannot import name ‘Mapping’ from ‘collections’ (/usr/lib/python3.10/collections/init.py)]。
这是由于Ubuntu22.04内置了python3.10 版本过高。
解决办法如下:
找到最后一行的报错信息[File “/root/.local/lib/python3.10/site-packages/prompt_toolkit/styles/from_dict.py”, line 9, in <module>from collections import Mapping] 打开这个文件。
from collections import Mapping
# 改为
from collections.abc import Mapping
修改完文件后保存,再次执行hb -h就解决了。用Ubuntu20.04的伙伴们内置python3.8就不会出现这样的问题。
编译
使用hb对源码进行编译,在源码根目录下输入以下指令进行编译。
hb set
选择hisillicon wifiiot_hispark_pegasus。
输入最后的编译指令。
hb build -f
观察控制台的输出情况。
编译完成,Linux环境搭建成功!
Windows环境搭建
完成了Linux下的源码编译,下面开始配置Windows环境。
HiBurn下载
HiBurn-资源下载-开源基础软件社区-51CTO.COM
MobaXTerm下载
具体的安装流程就不具体说了,没有什么需要注意的,正常安装即可。准备好这两个工具后就可以开始进行烧录和串口调试的测试了。
烧录
- 将智能家居板连接至主机。
- 打开HiBurn。
- 配置Hiburn。
- 选择文件,烧录好的文件在源码根目录下的out目录里,选择名为“Hi3861_wifiiot_app_allinone.bin” 的文件 点击connect后并重启开发板即可。
烧录完成后点击“disconnect”断开连接,把端口空出来给下一步的串口调试工具使用。
串口调试
创建连接。
重启开发板,观察开发板的信息输出。
到这里,Windows + Linux 环境下的开发环境也搭建完成了。