当前位置:   article > 正文

OpenHarmony基础配置_openharmony开发配置

openharmony开发配置

OpenHarmony搭建学习笔记

写演草纸还需卷子
2023.7.14
以下内容均是本人一步一步完成、并验证的整个学习过程。

文档目录

Part 1.windows搭建
Part 2.windows开发
Part 3.linux搭建(wsl)
Part 4.linux开发
Part 5.学习心得


Part 1.windows搭建

  1. 首先确定使用IDE为VScode
  2. 安装好python,同时设置pip源,方便安装之后的组件包
//设置pip源
pip config set global.trusted-host repo.huaweicloud.com
pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple
pip config set global.timeout 120

  • 1
  • 2
  • 3
  • 4
  • 5
  1. 安装Node.js(官网)
  2. 安装Hpm
//设置npm源为华为云镜像源
npm config set registry https://repo.huaweicloud.com/repository/npm/
//安装最新版npm
npm install -g @ohos/hpm-cli
//更新hpm
npm update -g @ohos/hpm-cli
//查看hpm版本   
hpm -V
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 安装DevEco Device Tool插件(官网)

Part 2.windows开发

  1. 进入VScode新建工程,获取Hi3861代码,并下载SDK,也可选择导入自行下载的SDK。
    在这里插入图片描述
SDK可能会出现某些无法解决(例如找不到文件的问题),可以删除SDK后重新下载来解决。若单纯删除SDK再下载未解决,我的方案是删除工程,重新构建。这里不详细描述,再后面的编译少率会详细介绍这一个问题。

  1. 进行工程配置,下载编译链、烧录器等工具。
    在这里插入图片描述
这里下载的工具,可以直接利用命令行运行使用,不一定依赖IDE,在后续的编译烧录会描述如何运行使用。

  1. 进行代码的编译
在VScode内编译

由于编译还不需要开发板,我们先不连接。直接编译代码即可。
在这里插入图片描述

当然,我们还可以在获取Hi3861的代码上再根据我们的需要修改。例如,调用灯光函数,让其每一次复位闪烁五次。
在这里插入图片描述

注意,由于我们使用了gn,nanja来构建我们的系统,所以,我们的启动函数(startup)引用了亮灯函数(led_example)后,需要在代码根目录下,找到Build.gn,并加入被引用的文件路径以及引用的函数。

因此,我们先查询引用函数代码根目录下的Build.gn,获取信息:

在这里插入图片描述

接着将获取的信息写入启动函数根目录下的Build.gn中:
在这里插入图片描述

.gn文件千万不要打table键,只能打空格键。

然后再一次编译。

在命令行内利用工具包编译

打开工具包路径下的启动编译程序:
在这里插入图片描述

然后进入启动函数根目录(application目录),利用hb,运行命令行:

hb set //并选择对应的产品
hb build //进行编译
  • 1
  • 2

在这里插入图片描述

最后也能进行编译成功,可见不一定需要IDE。

当软件包(sdk)出现问题时(例如找不到文件),可以通过命令行来编译,检查是否是代码或者编译工具问题。

例如:
在这里插入图片描述

我做了如下的的解决方法与错误查询:
在这里插入图片描述


  1. 进行烧录。
  • 首先烧录需要主板连接到本机localhost,我于是利用USB达到目的。
    在这里插入图片描述

  • 接着我仍然可以用两种以上方式烧录

利用VScode烧录

首先需要设置USB的具体端口作为烧录端口。接着直接点击upload就可以进行烧录,烧录时,按下reset键,进行烧入,同时,我加入了灯光的函数,可以通过烧录后按下reset键,看奥灯光闪烁五次来验证烧录成功。:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用烧录工具Hiburn烧录

注意选择烧录文件为编译输出(out)目录下的*allinone.bin文件
在这里插入图片描述

并且选择端口为COM5,勾选自动烧录(Auto burn),同时烧录前点击连接(connect),连接后按下reset键。烧录完成后,点击断开连接(disconnected)。
在这里插入图片描述

同样的,再次按下reset键,就可以通过灯光验证烧录成功。


Part 3.linux搭建(wsl)

由于在虚拟机中,编译速度远不如wsl环境下编译,因此我选择wsl搭建环境。(当然,虚拟机也有很多好处,例如内存占用问题等)
由于我很早已经下载好了ubuntu20.04,并且已经升级了wsl2,并且挂载到了本地的文件下,就不再详细说明。这里直接开始讲解如何搭建linux环境。

  1. 修改shell
    由于OpenHarmony需要使用bash,我将/bin/bash 强制软链接到/bin/sh,以替换掉原有的 dash。
    sudo ln -sf /bin/bash /bin/sh
  • 1

  1. 安装依赖工具
    很多工具不需要先行下载,可以需要时再下载,我在这里先行下载了所有的依赖工具。
sudo apt update && sudo apt install -y vim net-tools tree ssh locales binutils binutils-dev gnupg flex bison gperf build-essential zip unzip curl zlib1g-dev gcc gcc-multilib g++ g++-multilib libc6-dev-i386 libstdc++6 x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-dev libxml2-utils xsltproc m4 bc gnutls-bin genext2fs device-tree-compiler make libffi-deve2fsprogs pkg-config perl openssllibssl-dev libelf-dev libdwarf-devmtd-utils cpio doxygen liblz4-tool texinfo dosfstools mtools apt-utils wget tarrsync lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5 libncurses5-dev lib32ncurses5-dev libncursesw5
  • 1
需要注意,libc6-dev-amd64工具不再下载,可能已经过时。


  1. 安装配置python
    我的ubuntu自带python3.8,因此不需要再安装,但要进行以下配置或升级:
//安装并升级python3工具
sudo apt install -y python3-yaml python3-crypto python3-xlrd python3-dev
//安装并升级python3的包管理工具pip3
sudo apt install -y python3-pip
sudo pip3 install --upgrade pip
//设置pip3镜像
pip3 config set global.trusted-host repo.huaweicloud.com
pip3 config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple
pip3 config set global.timeout 120
//安装setuptools和kconfiglib
sudo pip3 install setuptools kconfiglib
//安装升级文件签名依赖的python组件包
sudo pip3 install pycryptodome
sudo pip3 install six --upgrade --ignore-installed six
sudo pip3 install ecdsa
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

  1. 由于我已经安装git,一下只需要安装curl,和repo
//安装curl
sudo apt install curl
//安装repo,并增加repo权限
sudo chmod a+w /usr/local/bin //先赋予写入文件,不然后续会失败
//然后安装curl
sudo curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo
//接着赋予权限
sudo chmod a+x /usr/local/bin/repo
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

  1. 安装构建编译工具链

首先安装scons

sudo apt install scons
  • 1

接着安装java

sudo apt install -y default-jre default-jdk ca-certificates-java
  • 1

然后安装编译工具

//官网下载node.js
sudo tar -xvf node-v12.18.4-linux-x64.tar.gz -C /opt/
sudo chown -R ohos:root /opt/node-v12.18.4-linux-x64

//通过https://repo.huaweicloud.com/harmonyos/compiler/gn/1717/linux/gn-linux-x86-1717.tar.gz下载gn
sudo mkdir /opt/gn/
sudo tar -xvf gn-linux-x86-1717.tar.gz -C /opt/gn/

//通过https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar下载ninja
sudo mkdir /opt/ninja/
sudo tar -xvf ninja.1.9.0.tar -C /opt/ninja/

//通过https://repo.huaweicloud.com/harmonyos/compiler/clang/10.0.1-53907/linux/llvm.tar.gz下载llvm9
//通过https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar下载llvm10
sudo tar -xvf llvm-linux-9.0.0-36191.tar -C /opt
sudo mv /opt/llvm /opt/llvm-linux-9.0.0-36191
sudo tar -xvf llvm-linux-10.0.1-53907.tar.gz -C /opt/
sudo mv /opt/llvm /opt/llvm-linux-10.0.1-53907
sudo ln -s /opt/llvm-linux-10.0.1-53907 /opt/llvm

//gcc_riscv32
sudo tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C /opt/

//hc-gen
sudo tar -xvf hc-gen-0.65-linux.tar -C /opt/

//添加环境路径
sudo vim ~/.bashrc

#nodejs
export NODE_HOME=/opt/node-v12.18.4-linux-x64
export PATH=$NODE_HOME/bin:$PATH
export PATH=/opt/gn:$PATH
export PATH=/opt/ninja:$PATH
export PATH=/opt/llvm/bin:$PATH
export PATH=/opt/gcc_riscv32/bin:$PATH
export PATH=/opt/hc-gen:$PATH

source ~/.bashrc

//安装hpm
npm config set registry https://repo.huaweicloud.com/repository/npm/
npm install -g @ohos/hpm-cli
npm update -g @ohos/hpm-cli
  • 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
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

  1. 安装VScode、DevEco Device Tool

如果想要利用VScode,由于可以通过wsl远程连接,不需要再下载VScode,但是,必须要下载linux下的DevEco Device Tool。当然,如果不需要利用VScode,直接用linux下命令行编译烧录也是完全可以的。
这里,我详细介绍如何使用MobaXterm终端安装DevEco Device Tool工具。
首先在powershell下,启动ssh服务(配置ssh过于简单不再介绍):

 sudo service ssh start
  • 1

接着在MobaXterm终端点击Session,选择ssh,并输入本机localhost的ip地址。
在这里插入图片描述

然后在接下来登录中输入用户名以及密码,登录成功页面如下:
在这里插入图片描述

接着我到
https://device.harmonyos.com/cn/develop/ide#download 下载linux下的DevEco Device Tool工具
下载并解压后,将devicetool-linux-tool-3.1.0.600目录直接拖到MobaXterm左边目录窗口:
在这里插入图片描述

在右侧窗口输入cd命令进入该目录,并将该目录下的devicetool-linux-tool-3.1.0.600.sh文件设置为可执行权限,并执行

cd devicetool-linux-tool-3.1.0.600
chmod u+x devicetool-linux-tool-3.1.0.600.sh
sudo ./devicetool-linux-tool-3.1.0.300.sh
  • 1
  • 2
  • 3

接着按照安装的指示,进行就可以成功了。

接着 我们在VScode里面,远程连接wsl,就可以使用linux下,DevEco Device Tool工具了。
到这里,我们linux的环境就搭建完成了。


Part 4.linux开发

  1. 首先,获取release分支代码。
//创建B_LTS
mkdir B_LTS

//进入B_LTS,获取Release3.2分支
repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-3.2-Release --no-repo-verify
repo sync -c -j4
repo forall -c 'git lfs pull'
./build/prebuilts_download.sh
//后续拉取更新代码,执行2 3条代码即可。同时工具要是出错,可以删除工具,再利用最后一条代码构建。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

  1. 然后在VScode里面,导入工程即可。
    在这里插入图片描述

然后我们需要配置环境,下载工具链,烧录器,环境依赖。
在这里插入图片描述


  1. 成功后,就可以直接编译了。同样的以下提供两种编译形式:
利用VScode编译

直接点击build就可以编译。与windows结果一样,不再描述。
利用命令行进行编译

我们可以利用hb,以及python进行编译,这里我使用了hb来进行编译。在这里使用hb时遇到了问题:
在这里插入图片描述

这里提出解决方法:

//首先进入源码根目录
python3 -m pip install --user ohos-build==0.4.3
  • 1
  • 2

接着,利用hb进行编译:

hb set
//接着选择所要的产品
hb build
  • 1
  • 2
  • 3

然后,就可以看编译的结果。


  1. linux下烧录
由于Hi3861不能在linux下烧录,具体表现是烧录时,upload终端不显示,同时无法退出upload。

但是,我仍然研究了如何在wsl下利用VScode进行烧录。其中最主要解决的问题,就是如何将本地的USB接口,连接到wsl下。
首先在windows上下载usbipd。其中下载的方式有两种,可以直接在github上下载开源项目,而我利用winget,在windows终端执行命令行:

winget install --interactive --exact dorssel.usbipd-win
  • 1

接着就会交互式的安装usbipd。然后ubuntu,我的ubuntu时20.04,因此:

sudo apt install linux-tools-5.15.0-52-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.15.0-52-generic/usbip 20  #5.15.0-52-generic
  • 1
  • 2
由于我是第一次安装usbipd,这时我的windows无法识别usbipd命令,这种情况很可能不是你的安装问题,经我的考证,应该是需要重启PC机自动运行驱动程序,便可以利用usbipd命令。

接着在windows下查看USB接口信息:

usbipd wsl list
  • 1

在这里插入图片描述

然后在ubuntu下输入命令行:

//2-1只是示例,要看上一步自己的接口具体是什么
usbipd wsl attach --busid 2-1
  • 1
  • 2

在这里插入图片描述

出现这个问题,很可能是由于在本地上,还没有断开USB,但我们不能直接断开,这样wsl是不可能连上的(网络连接除外),因此我们在powershell中输入命令行断开USB连接:

usbipd wsl detach --busid 2-1
  • 1

在这里插入图片描述

这时,我们再在Ubuntu上执行以下命令行:

usbip list -r $HOSTNAME.local
sudo usbip attach -r $HOSTNAME.local -b 2-1
  • 1
  • 2

在这里插入图片描述

最终,便可以在wsl下,连接到本地的USB接口。
在这里插入图片描述

然后,就可以在linux环境下进行烧录,但是由于Hi3861不能再linux下烧录,因此不给出烧录的结果,可自行烧录其他开发板。

Part 5.学习心得

本周学会了如何在windows、linux下搭建openharmony环境。同时学会了如何利用gn、ninja工具对代码进行编译,对开发板进行烧录。了解了构建子系统,以及openharmony的启动流程。(git等操作早已熟悉),了解了repo并与git相区分开。
在本周中,特别解决了一些难疑问题,都已经在上述文档写出,例如hb构建失败问题、编译失败无法找到文件问题、端口如何从主机连接到linux子系统问题以及验证是否能在linux下烧录Hi3861问题等。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/374176
推荐阅读
相关标签
  

闽ICP备14008679号