基于 Hi3861 平台的 HarmonyOS Device 开发体验
大家好,我是不务正业的非著名 Copy 攻城狮,此篇应是 Copy 攻城狮 2020 年最后一个”Hello,World“–基于 Harmony OS 的 Hi3861 开发板进行物联网应用开发实战。Copy 攻城狮的“Hello World”之路 [1]从来都不是一帆风顺的,此次尝试开(拷)发(贝)物联网应用也走了不少弯路,最后终于跑通了蜂鸣器版的《Jingle Bells》,预祝大家新年快乐!
编程界有个传承了几十年的”规矩“–入门先从环境搭建开始,有的时候环境搭建比较简单,比如学习 HTML 编程,有浏览器就行;有时候又比较繁琐,比如 React Native 开发,需要安装 NodeJS、Python、Java、Android SDK……而 HarmonyOS Device 开发属于后者,环境搭建比较繁琐,比如需要 Linux 系统进行编译,烧录到设备时又需要用到 Windows。如果您还想体验 Wifi 模组或者“碰一碰”等其他功能,还需要提供热点及其他设备。HarmonyOS 官方提供了详细的环境搭建文档[2] 以及 Hi3861 开发板介绍[3],理论上跟着文档走一遍就能正常运行“Hello,HarmonyOS Device”。
尽管如此,不过每个人的开发习惯或者工具口味不一样,因此在实际搭建环境的时候还是会和官方文档有些不一样的地方。由于手头有点乞丐版的云主机资源,因此我选择将他们派上用场,用 Linux 的云主机作为编译机,在本地的 Window 10 电脑上安装 SFTP Drive 将 Linux 云主机挂载到本机,使得烧录的时候能直接读取到 Linux 上的文件;通过 VSCode 的 Remote SSH 扩展以及 HUAWEI DevEco Device Tool 扩展来开发调试代码,此外通过某大佬分享的 sscom 串口调试工具进行更加便捷的调试。如果您恰好和我一样的情况,或者您也想尝试一下我的搭建思路,那我们就开始吧!
1. Windows 环境(开发、调试、烧录)
在 Windows 上,因为涉及到开发调试,因此我们需要安装 VS Code 及扩展(也就是插件)、SFTP Drive(烧录时用来直接访问 Linux 上的文件)、CH341SER.EXE(USB 转串口驱动)、sscom(可选,方面连接串口调试)。我这边本地已经安装了 VS Code 就不过多赘述,相信大家都安装了,从我接触过的几个软硬件开发教程都推荐安装 VS Code,真香!
1.1 Remote – SSH[4]和 SFTP Drive
可能大家会有疑问,这两个玩意都是访问远程主机上文件的,装一个就行了吧?刚开始我也有同样的想法,后来在实操中发现:如果只安装 Remote – SSSH,烧录配置时无法读取远程文件;如果只安装 SFTP Drive,在编辑代码时访问远程文件非常慢;在座的给位大佬有好的方案的话一定要传授一下哦。我这里安装的是 Remote – SSH,如果您想体验更多的功能,可以直接安装 Remote Development,Remote 系列是巨硬公司针对远程开发而开发的扩展。安装完 Remote – SSH 之后,为了免密码登录 Linux(有风险需谨慎),我们需要操作一下 SSH 密钥配置。
在 VSCode 的 Remote 扩展和 SFTP Drive 中先通过账号密码访问远程主机,确保能正常访问到 Linux 主机中的代码和文件。
SSH 密钥配置的时候,我们可以在远程主机上生成密钥,也可以在本机生成密钥,最终将配置关联就可以。我们这里采用的是 Windows 机使用 PowerShell 执行ssh-keygen
生成密钥到文件C:\Users\您的用户名\.ssh\id_rsa
(私钥),同时会生成文件C:\Users\您的用户名\.ssh\id_rsa.pub
(公钥),通过 SFTP Drive 拷贝公钥到远程主机的~/.ssh
目录,在 VSCode 中连接远程主机执行命令cat id_rsa.pub >> authorized_keys
追加到 authorized_keys 中,由于我本机已经有了公钥私钥,直接拿来用即可。 此步需注意的是:
cd ~/.ssh
cat id_rsa.pub >> authorized_keys #追加公钥
sudo chmod 600 authorized_keys
sudo chmod 700 ~/.ssh #文件及文件夹加权限
sudo vim /etc/ssh/sshd_config #准备修改sshd配置
# PubkeyAuthentication yes 确保此处注释放开
sudo service sshd restart #重启sshd
完事之后关闭 VSCode 再打开,不出意外再连接远程主机就不需要输入访问密码了,彻底告别每次连接都要输密码的烦恼。
1.2 HUAWEI DevEco Device Tool 及依赖安装
HUAWEI DevEco Device Tool[5]可以理解为是 HarmonyOS Device 的开发工具,“HarmonyOS 智能设备一站式集成开发环境,支持 HarmonyOS 组件按需定制、一键编译和烧录、可视化调试、分布式能力集成等,帮助开发者高效开发和创新新硬件”。
官网:https://device.harmonyos.com/cn/ide[6],目前只支持 Windows,这也是为什么我们需要用到 Windows 本机的原因!另外 HUAWEI DevEco Device Tool 没有上架到 VSCode 扩展市场,只能通过从 VSIX 安装的方式进行安装,也就是说我们需要解压从官网下载的安装包,另外将.vsix
文件后缀修改为.zip
解压有惊喜哦 — 在 DevEcoDeviceTool\extension\deveco\tool
您能得到HiBurn.exe
,这个程序就可以用来烧录(相当于不使用 VSCode 的扩展在程序中配置烧录参数直接烧录)。
根据官方文档的指引,我们还需要:
- 安装 Node.js(尽量别装最新的)
- 安装 JDK
- 安装 hpm
- 安装 VSCode C/C++扩展
- 安装 CH341SER.EXE
- 安装 Jlink 工具(可选,V6.54c 及以上版本)
- 安装 hcc_riscv32(这个我没装成功,所以调试全靠手打)
鉴于前期跑过“Hello, HarmonyOS”(因此才获得的开发板),大部分环境我都有,不过在安装 Jlink 工具的时候卡了很久,主要是网络的问题,导致下载的文件不全,好在想方设法终于下好了,又在安装 hcc_riscv32 时卡住了,幸好不是关键,索性放弃!……费了九牛二虎之力,终于完成 Windows 部分的环境搭建,可以直接烧录别人编译好的程序了!
2. Linux 环境(编译)
相比 Windows 环境,HarmonyOS Device Linux 的环境搭建显得微不足道,跟着文档走一遍就完事了。不过,经过实操,如果您是 Ubuntu 18.04,我更加推荐润和许老师的文档–Harmony OS 开发指南——源码下载和编译[7]。如果您和我一样还想尝试一下在 CentOS 上搭建环境,那就推荐鸿蒙社区的文章–在 CentOS 中安装鸿蒙 LiteOS 编译环境-海思 Hi3861[8],同样的也只取我需要的–我只需要编译部分的环境搭建。我的云主机操作系统是 CentOS 7.6 64 位,和博主的大同小异,按照文章中的命令行逐个敲完再去编译就一把过。
老话说得好:”If I have seen further, it is by standing upon the shoulders of giants”,于是我结合许老师和社区文章完成了 HarmonyOS 在 CentOS 上的编译环境搭建。
2.1 源码获取(多种方式其中一种)
# 配置repo工具
mkdir ~/bin/
# sudo apt install curl # 如果没有curl命令需要先下载
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo
chmod +x ~/bin/repo
echo 'export PATH=~/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# 下载Harmony OS源码
mkdir -p ~/harmonyos/openharmony && cd ~/harmonyos/openharmony
sudo apt install --no-install-recommends git python # repo工具本身是python脚本,它会调用git命令下载单个代码仓
# 开始前需要配置`user.name`和`user.email`,如果没有配置,使用如下命令进行配置:
# git config --global user.name "yourname"
# git config --global user.email "your-email-address"
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c # 以后每天同步远程仓的修改,只需要执行这一条命令即可
2.2 安装编译基础环境
依赖 Python 3.7+ 以及SCons[9]安装,我这里通过自行编译安装的 Python 3.9.0。
# 下载Python源码包
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
# 解压源码包
tar -xzvf Python-3.9.0.tgz
# 安装依赖
yum groupinstall -y "Development tools"
yum install -y openssl-devel
yum install -y libffi libffi-devel
yum install -y bzip2-devel
yum install -y sqlite-devel
yum install -y readline-devel
yum install -y libuuid-devel
yum install -y uuid-devel
yum install -y xz-devel
yum install -y gdbm-devel
yum install -y tk-devel
# 配置编译
cd Python-3.9.0
./configure --prefix=/usr/local/python3
# 编译Python
make -j8 && make install
# 创建软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
# 验证
python3 --version
pip3 --version
# 安装编译时需依赖的Python 3组件
pip3 install setuptools
pip3 install kconfiglib
pip3 install pycryptodome
pip3 install six --upgrade --ignore-installed six
pip3 install ecdsa
# 下载SCons源码包
wget http://prdownloads.sourceforge.net/scons/scons-4.0.1.tar.gz
# 解压源码包
tar -xzvf scons-4.0.1.tar.gz
# 安装
cd SCons-4.0.1/
python3 setup.py install
# 创建软链接
ln -s /usr/local/python3/bin/scons /usr/bin/scons
2.3 安装编译工具环境
我们需要用到的编译工具有交叉编译器 gcc_riscv32、 产生 ninja 编译脚本的 gn、执行 ninja 编译脚本的 ninja,虽然我并不知道她们是怎么工作的,但我坚信“Just Do IT”!
# 下载交叉编译工具
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
# 安装交叉编译工具
mv gcc_riscv32 /usr/local/ # 按照个人喜好存放
vi /etc/profile # 将环境变量配置进来export PATH=/usr/local/gcc_riscv32/bin:$PATH
# 如果已存在PATH,需将:/usr/local/gcc_riscv32/bin:$PATH 追加到PATH
source /etc/profile
# 如果还是不生效,请尝试加到全局变量 vim ~/.bashrc 我这边就酱
# 验证
cd
riscv32-unknown-elf-gcc --version
# 下载gn工具源码包
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
# 解压
tar -xvf gn.1523.tar
# 安装
mv gn /usr/local/
ln -s /usr/local/gn/gn /usr/bin/gn
# 验证
gn --version
# 下载ninja
wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
# 解压
tar -xvf ninja.1.9.0.tar
# 安装
mv ninja /usr/local/
ln -s /usr/local/ninja/ninja /usr/bin/ninja
# 验证
ninja --version
2.4 编译测试
通过简单而又繁琐的 Ctrl C 和 Ctrl V 我们终于完成了 HarmonyOS Device 用于编译的 Linux 环境搭建。我已经迫不及待地想编译一次试试:
cd /root/harmonyos/openharmony
python3 build.py wifiiot
至此,完整的 HarmonyOS Device 环境算是搭建完毕,我们可以开始编写自己的程序进行编译、烧录了。接下来,我们尝试从 Hi3861 套件的一些基本功能中了解 HarmonyOS Device 的开发调试。
参考资料
[1]
Copy 攻城狮的“Hello World”之路 : https://juejin.cn/post/6901366425241190407
[2]
环境搭建文档: https://device.harmonyos.com/cn/docs/start/introduce/oem_quickstart_3861_build-0000001054781998
[3]
Hi3861 开发板介绍: https://device.harmonyos.com/cn/docs/start/introduce/oem_wifi_start_des-0000001050168548
[4]
Remote – SSH: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh
[5]
HUAWEI DevEco Device Tool: https://device.harmonyos.com/cn/ide
[6]
https://device.harmonyos.com/cn/ide: https://device.harmonyos.com/cn/docs/ide/user-guides/service_introduction-0000001050166905
[7]
Harmony OS 开发指南——源码下载和编译: https://gitee.com/hihopeorg/HarmonyOS-IoT-Application-Development/blob/master/01_envsetup/hos_source_code_download_and_compile.md
[8]
在 CentOS 中安装鸿蒙 LiteOS 编译环境-海思 Hi3861: https://os.51cto.com/art/202011/630545.htm
[9]
SCons: https://scons.org/
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/9509.html