OpenHarmony智能开发套件[环境搭建篇]

前言

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

Windows[新手推荐]

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

DevEco Device Tool安装

DevEco Device Tool

DevEco.png

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

20230511173539.png

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

20230511173709.png

​ 点击“下一步”。

QQ图片20230511174019.png

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

QQ图片20230511174133.png

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

QQ图片20230511174247.png

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

QQ图片20230511174718.png

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

Python

VsCode

​ 点击“安装”等待...

QQ图片20230511174855.png

​ 点击“完成”完成DevEco Device Tool的安装

QQ图片20230511175245.png

​ 现在我们打开VsCode,就会发现左侧栏中多了一个工具。

QQ图片20230511175349.png

​ 那么至此Windows开发OpenHarmony的环境已经完成了一大半,是不是很简单。

使用DevEco Device Tool创建项目

  1. 点击New Project

QQ图片20230511175712.png

  1. 输入自己的项目名,在SOC中选择Hi3861

QQ图片20230511180332.png

  1. 点击“Download”下载SDK

QQ图片20230511180547.png

  1. 下载完成后,点击“Confirm”完成项目的创建

QQ图片20230511180940.png

​ 我们创建的项目,OpenHarmony的源码在src目录下

QQ图片20230511181204.png

编译

​ 项目已经建好了,下面就可以开始编译了。

  1. 打开“DevEco”工具,点击“Biuld”

QQ图片20230511181509.png

​ 我们可以看到控制台的输出,表示我们在32秒的时间完成了编译[首次编译时会自动下载相关的依赖耗时可能较长]

QQ图片20230511181723.png

烧录

​ 点击“upload”进行烧录,我们发现控制台报了错,是因为烧录工具和端口我们自己去手动配置

QQ图片20230511182033.png

​ 在进行烧录端口配置之前我们需要将智能家居板连接到我们的主机上,并确保主机能够识别到这个端口。在设备管理器中可以查看智能家居板的端口信息

QQ图片20230511182417.png

​ 在DevEco中,配置端口号,图片中漏标了upload_speed 建议改成115200

QQ图片20230511182220.png

​ 完成配置后我们再次点击“upload”,看到控制台输出如下“Connrct....”就说明我们的烧录配置已经成功完成,此时只需要点击主板右下角的RET按钮,重启开发板即可开始烧录。如果还出现了相同的错误就点击“manager”,再点击底下的“confirm”刷新一下配置。

QQ图片20230511182949.png

​ 完成烧录

QQ图片20230511183120.png

串口调试

​ 点击“Monitor”开始串口调试,点击主板“RET”键重启开发板,开始调试,注意观察控制台输出的信息。

QQ图片20230511183334.png

​ 如果需要中断程序,按下[Ctrl + C]即可。

​ 至此我们已经完成了Windows下OpenHarmony环境的配置。

Windows + Linux

​ 尽管Windows很方便,可以独立完成OpenHarmony开发的大部分工作,但是难免有时候需要使用到Linux系统对源码进行编译,那么就不得不使用Windows + Linux的环境进行开发。本篇不使用虚拟机搭建Windows,因为虚拟机的性能受到了限制,对开发效率而言是个痛点,本篇将使用WSL详细讲解Windows + Linux的环境搭建。

WSL

​ 不了解WSL的伙伴们可以查询相关信息,这里就不细说了,简单的讲就是Windows subSystem Linux,是不是一下就理解了,我们的Linux将不再局限于原来虚拟机的配置,而是直接作为我们Windows系统下的一个子系统进行运营,性能将被大大地释放出来。

安装WSL

  1. 打开管理员终端 PowerShell 输入以下命令[他可能会将wsl和ubuntu一起给你装了]
wsl --install
  1. 配置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
  1. 重启电脑,打开资源管理器,出现Linux的图标就说明我们的WSL安装完成了

image20230511185121390.png

  1. 下面我们安装Linux,这里推荐使用Ubuntu。打开微软的商店下载Ubuntu,这里提供了3个LST长期支持版本,笔者之前已经使用20.04LTS版本完成的环境的搭建,这里就使用22.04LTS版本为大家重新演示。

QQ图片20230511185425.png 5. 完成安装后打开Ubuntu,创建好账户。

QQ图片20230511191343.png

​ 至此WSL安装完成了

QQ图片20230511191426.png

​ 但是我们还需要做一些额外的配置去优化我们的WSL,WSL是装在我们的系统盘的,时间长了很容易占用我们的系统盘空间,空间不足还会导致WSL系统崩溃,因此需要把WSL导出到别的盘符。

  1. 停止WSL的运行,打开PowerShell输入一下命令
wsl --shutdown
  1. 输入一下命令检测WSL是否停止
wsl -l -v

QQ图片20230511193111.png

  1. 这里笔者把WSL导出至D盘了,目录建议先建好[一定要加xxx.tar文件]不然会出现拒绝访问的错误
wsl --export Ubuntu-22.04 D:\wsl2-ubuntu22.04\ubuntu.tar

QQ图片20230511193957.png 4. 注销Linux

 wsl --unregister Ubuntu-22.04

image20230511194202647.png

  1. 导入Linux
wsl --import Ubuntu-22.04 D:\wsl2-ubuntu22.04\ D:\wsl2-ubuntu22.04\ubuntu.tar --version 2

QQ图片20230511194324.png

  1. 点进我们设置好的目录,ext4.vhdx说明导出,导入成功了。xxx.tar文件大家自行删除即可
del D:\wsl2-ubuntu22.04\ubuntu.tar

QQ图片20230511194536.png

  1. 设置默认登录用户
ubuntu20.04 config --default-user xxx

Windows连接Linux

  1. 打开VsCode,安装“WSL”这个插件

QQ图片20230511190911.png

  1. 安装完成后点击左下角后,选择自己要连接的Linux子系统,右下角变成笔者所示的显示

    Ubuntu xxx 就说明成功了。

image20230511191955868.png

  1. 打开终端,我们发现控制台显示的东西很熟悉,没错,这就是你的Linux终端了,你可以在这里使用Linux指令去操作你的系统了。

QQ图片20230511192222.png

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
环境搭建
  1. 安装必要的库和工具
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
  1. 配置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
  1. 安装pip
sudo apt install python3-pip
4. 在家目录下创建源码目录
mkdir /home/ohos/openharmony
  1. 安装编译工具
pip3 install scons

scons -v

pip3 install kconfiglib

pip3 install pycryptodome ecdsa
  1. 安装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
  1. 安装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
  1. 配置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

将公钥添加到自己的账户中

QQ图片20230511202400.png

  1. 安装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'
在源码的同级目录补充环境
  1. 安装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
  1. 安装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
  1. 安装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] 打开这个文件

QQ图片20230511214132.png

from collections import Mapping 
# 改为
from collections.abc import Mapping 

修改完文件后保存,再次执行hb -h就解决了。用Ubuntu20.04的伙伴们内置python3.8就不会出现这样的问题。

编译

使用hb对源码进行编译,在源码根目录下输入以下指令进行编译

hb set

选择hisillicon wifiiot_hispark_pegasus

QQ图片20230511214610.png 输入最后的编译指令

hb build -f

观察控制台的输出情况

QQ图片20230511214802.png ​编译完成,Linux环境搭建成功!

Windows环境搭建

完成了Linux下的源码编译,下面开始配置Windows环境

HiBurn下载

HiBurn-资源下载-开源基础软件社区-51CTO.COM

MobaXTerm下载

MobaXterm

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

QQ图片20230511204326.png

烧录

  1. 将智能家居板连接至主机
  2. 打开HiBurn

QQ图片20230511204624.png

  1. 配置Hiburn

QQ图片20230511204727.png

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

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

串口调试

创建连接

QQ图片20230511215121.png

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

QQ图片20230511215322.png 到这里,Windows + Linux 环境下的开发环境也搭建完成了。

结束语

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

本文作者:stackor

想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com/#bkwz​