赞
踩
Part 1.windows搭建
Part 2.windows开发
Part 3.linux搭建(wsl)
Part 4.linux开发
Part 5.学习心得
//设置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
//设置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
由于编译还不需要开发板,我们先不连接。直接编译代码即可。
当然,我们还可以在获取Hi3861的代码上再根据我们的需要修改。例如,调用灯光函数,让其每一次复位闪烁五次。
接着将获取的信息写入启动函数根目录下的Build.gn中:
然后再一次编译。
打开工具包路径下的启动编译程序:
然后进入启动函数根目录(application目录),利用hb,运行命令行:
hb set //并选择对应的产品
hb build //进行编译
最后也能进行编译成功,可见不一定需要IDE。
例如:
我做了如下的的解决方法与错误查询:
首先烧录需要主板连接到本机localhost,我于是利用USB达到目的。
接着我仍然可以用两种以上方式烧录
首先需要设置USB的具体端口作为烧录端口。接着直接点击upload就可以进行烧录,烧录时,按下reset键,进行烧入,同时,我加入了灯光的函数,可以通过烧录后按下reset键,看奥灯光闪烁五次来验证烧录成功。:
注意选择烧录文件为编译输出(out)目录下的*allinone.bin文件
并且选择端口为COM5,勾选自动烧录(Auto burn),同时烧录前点击连接(connect),连接后按下reset键。烧录完成后,点击断开连接(disconnected)。
同样的,再次按下reset键,就可以通过灯光验证烧录成功。
由于在虚拟机中,编译速度远不如wsl环境下编译,因此我选择wsl搭建环境。(当然,虚拟机也有很多好处,例如内存占用问题等)
由于我很早已经下载好了ubuntu20.04,并且已经升级了wsl2,并且挂载到了本地的文件下,就不再详细说明。这里直接开始讲解如何搭建linux环境。
sudo ln -sf /bin/bash /bin/sh
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
//安装并升级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
//安装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
首先安装scons
sudo apt install scons
接着安装java
sudo apt install -y default-jre default-jdk ca-certificates-java
然后安装编译工具
//官网下载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
如果想要利用VScode,由于可以通过wsl远程连接,不需要再下载VScode,但是,必须要下载linux下的DevEco Device Tool。当然,如果不需要利用VScode,直接用linux下命令行编译烧录也是完全可以的。
这里,我详细介绍如何使用MobaXterm终端安装DevEco Device Tool工具。
首先在powershell下,启动ssh服务(配置ssh过于简单不再介绍):
sudo service ssh start
接着在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
接着按照安装的指示,进行就可以成功了。
接着 我们在VScode里面,远程连接wsl,就可以使用linux下,DevEco Device Tool工具了。
到这里,我们linux的环境就搭建完成了。
//创建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条代码即可。同时工具要是出错,可以删除工具,再利用最后一条代码构建。
然后我们需要配置环境,下载工具链,烧录器,环境依赖。
我们可以利用hb,以及python进行编译,这里我使用了hb来进行编译。在这里使用hb时遇到了问题:
这里提出解决方法:
//首先进入源码根目录
python3 -m pip install --user ohos-build==0.4.3
接着,利用hb进行编译:
hb set
//接着选择所要的产品
hb build
然后,就可以看编译的结果。
但是,我仍然研究了如何在wsl下利用VScode进行烧录。其中最主要解决的问题,就是如何将本地的USB接口,连接到wsl下。
首先在windows上下载usbipd。其中下载的方式有两种,可以直接在github上下载开源项目,而我利用winget,在windows终端执行命令行:
winget install --interactive --exact dorssel.usbipd-win
接着就会交互式的安装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
接着在windows下查看USB接口信息:
usbipd wsl list
然后在ubuntu下输入命令行:
//2-1只是示例,要看上一步自己的接口具体是什么
usbipd wsl attach --busid 2-1
出现这个问题,很可能是由于在本地上,还没有断开USB,但我们不能直接断开,这样wsl是不可能连上的(网络连接除外),因此我们在powershell中输入命令行断开USB连接:
usbipd wsl detach --busid 2-1
这时,我们再在Ubuntu上执行以下命令行:
usbip list -r $HOSTNAME.local
sudo usbip attach -r $HOSTNAME.local -b 2-1
最终,便可以在wsl下,连接到本地的USB接口。
本周学会了如何在windows、linux下搭建openharmony环境。同时学会了如何利用gn、ninja工具对代码进行编译,对开发板进行烧录。了解了构建子系统,以及openharmony的启动流程。(git等操作早已熟悉),了解了repo并与git相区分开。
在本周中,特别解决了一些难疑问题,都已经在上述文档写出,例如hb构建失败问题、编译失败无法找到文件问题、端口如何从主机连接到linux子系统问题以及验证是否能在linux下烧录Hi3861问题等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。