OpenHarmony入门攻略:环境搭建

科技   2024-11-06 11:22   上海  

此系列是笔者关于 OpenHarmony 智能家居开发套件(Hi3861 芯片)的学习历程,本篇作为入门环节,将具体介绍 OpenHarmony 的环境搭建。


Windows(新手推荐)

目前 Window 系统已经能够用过 DevEco Device Tool 工具独立完成大部分的 OpenHarmony 开发工作,而先前通过 HiBurn,MobaXterm 工具进行的烧录,串口调试并不方便,下面具体介绍如何在 Windows 系统上配置环境。

①DevEco Device Tool 安装

DevEco Device Tool:
https://device.harmonyos.com/cn/develop/ide#download

我们双击下载 Windows(64-bit)版本的 ZIP 压缩包即可。

下载完成后请各位自行解压,打开解压号的文件,双击 exe 文件进行安装。

点击“下一步”。

选择“我接受…”,点击“下一步”。

选择安装的目录,点击"下一步"[不建议安装在 C 盘]。

因为笔者自己的电脑上已经安装过 Python 和 VSCode 了,这里的状态是 ok,如果没有装过 Python 和 VsCode 的伙伴们也不用担心,你可以通过这个安装软件下载 python 和 VsCode。

如果你想自己安装 Python 和 VsCode,笔者也会提供他们的官网地址,供小伙伴们参考,这里就不详细说明了。要注意工具对应的版本需求,不能错。

Python:
https://www.python.org/downloads/windows/
VsCode:
https://code.visualstudio.com/
点击“安装”等待…

点击“完成”完成 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 版本为大家重新演示。

完成安装后打开 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

④注销 Linux

wsl --unregister Ubuntu-22.04
⑤导入 Linux
wsl --import Ubuntu-22.04 D:\wsl2-ubuntu22.04D:\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 9in <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 下载:

https://ost.51cto.com/resource/29

MobaXTerm 下载:

https://mobaxterm.mobatek.net/download.html

具体的安装流程就不具体说了,没有什么需要注意的,正常安装即可。准备好这两个工具后就可以开始进行烧录和串口调试的测试了。

①烧录

将智能家居板连接至主机,打开 HiBurn:

配置 Hiburn:

选择文件,烧录好的文件在源码根目录下的 out 目录里,选择名为“Hi3861_wifiiot_app_allinone.bin” 的文件,点击 connect 后并重启开发板即可。

烧录完成后点击“disconnect”断开连接,把端口空出来给下一步的串口调试工具使用

②串口调试

创建连接:

重启开发板,观察开发板的信息输出:

到这里,Windows + Linux 环境下的开发环境也搭建完成了。

结束语

初次发帖,还请大家多多指点,希望能够帮助到学习 OpenHarmony 的伙伴们!

关注我们

求分享

求点赞

求在看

Qt教程
致力于Qt教程,Qt技术交流,研发
 最新文章