HarmonyOS技术社区 · 2021年01月13日

用鸿蒙开发AI应用(三)软件篇

前言

上一篇,我们在 Win10 上用虚拟机安装了 Ubuntu,并设置了文件共享。这一篇,在此基础上编译鸿蒙os的源码,并进行设备烧录。
image1

HarmonyOS 简介

1. 系统定义

HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。

2. 技术架构

HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。

 image2

这次开源的内核仅包含HarmonyOS微内核的部分,Linux内核要等下一个版本。

3. 分布式软总线

分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发任务和传输数据。

image3

4. 分布式设备虚拟化

分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,多种设备共同形成一个超级虚拟终端。针对不同类型的任务,为用户匹配并选择能力合适的执行硬件,让业务连续地在不同设备间流转,充分发挥不同设备的资源优势。

image4

主要特性还是分布式架构和设备虚拟化技术,更详细的资料,参考官网描述

https://device.harmonyos.com/cn/docs/start/learn/oem\_des\_define-0000001055232642

DevEco Device Tool(windows下)

官网下载Visual Studio Code软件包,要求为1.45.1及以上版本。

1. 工具简介

HUAWEI DevEco Device Tool(以下简称DevEco Device Tool)是HarmonyOS面向智能设备开发者提供的一站式集成开发环境,支持HarmonyOS的组件按需定制,支持代码编辑、烧录和调试等功能,支持C/C++语言,以插件的形式部署在Visual Studio Code上。该工具具有以下特点:

DevEco Device Tool以Visual Studio Code插件形式提供,体积小巧。
支持代码查找、代码高亮、代码自动补齐、代码输入提示、代码检查等,开发者可以轻松、高效编码。
支持多种类型开发板,包括ARM架构的Hi3516/Hi3518系列和RISC-V架构的Hi3861系列开发板,提供一键式的烧录和调试GUI界面。
支持单步调试能力和查看内存、变量、调用栈、寄存器、汇编等调试信息。

2. 安装 Visual Studio Code

https://code.visualstudio.com/

image5

懒得下载的,在文末网盘里也能获取最新版本的安装包。

3. 安装Node.js

官网下载链接,请选择LTS版本12.0.0及以上,Windows 64位对应的软件包。

https://nodejs.org/en/download/

image6

安装完毕,在“此电脑 > 属性 > 高级系统设置 > 高级 > 环境变量 >系统变量”中,新增NODE\_PATH变量,值为:C:\Users\{userName}\AppData\Roaming\npm\node\_modules,其中userName请替换为实际的用户名称。

image6

4. 安装JDK

下载并安装JDK,版本要求为:1.8版本。

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
image7

下载完成后,安装 jdk-8u271-windows-x64.exe即可。

5. 安装hpm

基于 node.js ,全局模式安装脚手架

npm install -g @ohos/hpm-cli

测试安装是否成功

hpm -V

image8

6. 安装DevEco Device Tool插件

如果您已经安装过DevEco Device Tool 插件,在您安装新版本前,请先手动将已安装的DevEco Device Tool 插件卸载后再按照如下步骤进行安装。

image9

在产品页下载工具插件

https://device.harmonyos.com/cn/ide

image10

采用从本地磁盘安装方式,安装DevEco Device Tool。

image11

7. 安装C/C++插件

HarmonysOS设备开发采用C/C++语言,Visual Studio Code工具对C/C++语言的支持插件非常丰富,可以安装“C/C++”插件来实现C/C++代码智能提示、代码高亮、格式化等功能,帮助您更高效、便利的开发更规范和优美的代码。

在Visual Studio Code的插件市场,输入“C/C++”,然后点击“Install”。

image12

获取源码(切换到ubuntu)

官网提供了4种方式,这里我们采用从代码仓库获取,进入虚拟机的 ubuntu 系统。

1. 将Linux shell改为bash

查看shell是否为bash,在终端运行如下命令

ls -l /bin/sh

如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改:

在终端运行如下命令,然后选择 no。

sudo  dpkg-reconfigure dash

image13

2. 安装ssh server (可选)

如果要通过ssh对外提供链接的话,可以安装ssh服务

sudo apt-get   install  openssh-server

其余相关命令

# 查看ssh 服务
sudo ps -e | grep ssh  
# 开启服务
sudo /etc/init.d/ssh start
# 查看服务状态
sudo service ssh status
# 关闭服务
sudo service ssh stop
# 重启服务
sudo service ssh restart 

这时其他电脑就能通过 ssh 命令来访问 ubuntu 了,如果喜欢的话,也可以安装putty-64bit-0.74-installer.msi来连接。

image14

3. 配置 python 环境

Ubuntu 20.04.1 默认已经带了 python3.8

which  python/usr/bin/python3.8

建立软链接,指向 python

cd /usr/bin
sudo ln -s /usr/bin/python3.8 python && python --version

image15

4. 安装并升级Python包管理工具(pip3)

sudo apt-get  install  python3-setuptools python3-pip -y
sudo pip3  install  --upgrade pip

配置 pip 换源,新建 \~/.pip/pip.conf ,写入清华源

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

安装python模块setuptools

pip3 install setuptools

安装GUI menuconfig工具(Kconfiglib),建议安装Kconfiglib 13.2.0+版本

sudo pip3 install kconfiglib

5. 安装文件打包工具

sudo apt-get install dosfstools mtools mtd-utils

6. 下载、配置编译工具链

mkdir -p ~/harmony/tools && cd ~/harmony/tools

# 下载gn/ninja/LLVM/hc-gen包:
URL_PREFIX=https://repo.huaweicloud.com/harmonyos/compiler
wget $URL_PREFIX/gn/1523/linux/gn.1523.tar
wget $URL_PREFIX/ninja/1.9.0/linux/ninja.1.9.0.tar
wget $URL_PREFIX/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar
wget $URL_PREFIX/hc-gen/0.65/linux/hc-gen-0.65-linux.tar

# 解压gn/ninja/LLVM/hc-gen包:
tar -C ~/harmony/tools/ -xvf gn.1523.tar
tar -C ~/harmony/tools/ -xvf ninja.1.9.0.tar
tar -C ~/harmony/tools/ -xvf llvm-linux-9.0.0-34042.tar
tar -C ~/harmony/tools/ -xvf hc-gen-0.65-linux.tar

# 向 ~/.bashrc 中追加gn/ninja/LLVM/hc-gen路径配置:
cat <<EOF >> ~/.bashrc
export PATH=~/harmony/tools/gn:\$PATH
export PATH=~/harmony/tools/ninja:\$PATH
export PATH=~/harmony/tools/llvm/bin:\$PATH
export PATH=~/harmony/tools/hc-gen:\$PATH
EOF

# 生效环境变量
source ~/.bashrc

7. 安装虚拟环境

sudo pip3 install -U virtualenv
virtualenv -p python3 ~/my_envs/harmonyos
source ~/my_envs/harmonyos/bin/activate
pip install requests  # 后续repo需要

8. 配置 repo 工具

sudo apt install curl
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/harmony/tools/repo
chmod +x ~/harmony/tools/repo
echo 'export PATH=~/harmony/tools:$PATH'  >> ~/.bashrc
source ~/.bashrc

9. 下载Harmony OS源码

mkdir -p ~/harmony/openharmony && cd ~/harmony/openharmony
sudo apt install git 

# 配置用户信息
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c  # 同步远程仓

image16.jpg

稍等一会儿,源码仓的代码就同步到 openharmony目录下了。

10. 编译源码

python build.py ipcamera_hi3516dv300

image17.jpg

稍微等待一会儿,编译时间取决于虚拟机的资源,如果太慢可以多分配一些。详细方法可以参照上一篇文章所述。

image18.png

同样根据用鸿蒙开发AI应用(二)系统篇里的方法,将 ~/harmony共享给 Win10系统来访问。

烧录程序(切换回windows)

1. 映射网络驱动器

将 ubuntu 里共享的源码目录,映射成网络驱动器

image19.jpg

2. 导入源码

HarmonyOS暂不支持Windows系统源码,请从映射的Linux服务器的共享路径,导入源码。

image20.jpg

3. 配置工程

导入工程源码文件后,请对工程进行配置,如工程烧录和调试依赖的工具等信息。

点击底部工具栏中的“Board”按钮,选择对应开发板的配置模板,例如:Hi3516DV300。

image21.jpg

4. 安装烧录依赖工具

网络烧录ftp工具

npm install -g tftp

image22.png

串口烧录工具

npm install -g serialport
npm install -g @serialport/parser-readline

image23.png
image24.png

usb 烧录工具

npm install -g usb

image25.png

烧录后 crc 校验工具

npm install -g crc

image26.png

5. 安装串口驱动

PL-2303 的驱动文件,USB-to-Serial Comm Port.exe

image27.png

插上串口线和网线,

image28.jpg

在设备管理器中,可以找到对应的串口号(COM4)

image29.png

6. 串口调试

点击底部串口,可进行串口连接,用命令行进行设备配置。你也可以用 SSCOM这类传统串口调试工具来测试。

image30.png

7. 插件网络方式烧录

硬件连接方式如下图所示,这里我们的 Linux 编译服务器为虚拟机形式。

image31.png

7.1 查询 IP 地址

ubuntu的ip地址采用ifconfig 查询,映射网络驱动器用;

image32.jpg

windows的ip地址采用ipconfig 查询,烧录时需要用到;

image33.jpg

7.2 配置串口

打开 vscode,点击 配置-烧录,选择烧录方式为 network;选择对应的串口号(这里是COM4)

image34.jpg

7.3 配置目标板网络

Hi3516DV300的ip地址,可以设置到同网段下未使用的地址,最末段取 2-254 均可(这里58除外)。

image35.png

7.4 配置存储器类型

根据之前的硬件定义,Hi3516DV300 存储器类型设置为 emmc

image36.jpg

7.5 配置文件和写入地址

在之前编译生成的文件夹中找到以下文件,按下列表格进行配置

Z:\openharmony\out\ipcamera_hi3516dv300
image37.jpg

点击保存按钮,保存设置。

7.6 运行烧录命令

在DevEco Device Tool中,点击烧录后的箭头图标。插件会执行 upload命令进行烧录。

image38.jpg

7.7 设置脚本权限

如果遇到这个错误信息

image39.png

在系统中搜索框 输入 Windows PowerShell
点击“管理员身份运行”
输入“ set-ExecutionPolicy RemoteSigned”回车
根据提示,输入A,回车
image40.png

7.8 设置防火墙

如果网络地址完全正确(仔细查看setenv命令参数),遇到 crc32 校验错。

image41.jpg

则需设置防火墙通行

image42.jpg

放行 vscode 应用程序

image43.jpg

放行 node.js 程序 (这个特别容易遗漏)

image44.jpg

7.9 烧录成功

一切顺利的话,看到提示重启开发板,就能写入成功,网络烧录速度还是非常快的。

image45.jpg

8. HiTool 烧录(推荐)

采用 HiTool 工具来烧片就不需要安装node.js 以及前面一堆依赖包了,相对来说会更为方便。

解压Hi3516-HiTool.zip,直接运行HiTool.exe即可。

8.1 选择芯片

菜单芯片-切换芯片-Hi3516DV300

image46.jpg

8.2 关闭 tftp 加速

菜单窗口-首选项-TFTP设置里,由于Hi3516DV300不支持加速功能,取消这个配置的复选框。

image47.png

8.3 串口烧录

串口选择 COM4,填好文件和写入地址,点击烧写按钮即可。不过速度会慢到令人怀疑人生...

image48.png

8.4 网口烧录

参数设置见下图,不多叙述了。网络烧录则速度快得多,2 分钟搞定!

image49.png

这里注意,一定要同时插串口线和网线,因为即使是网口烧录方式,网络配置命令和fastboot段都是通过串口传输的。

另有 usb烧录方式,需要多插一根usb线,速度也不快。默认还会对开发板充电,有时候会干扰重启操作,蛮鸡肋的,就不详述了。

image50.jpg

重启开发板后,就能看到久违的 demo示例程序了。

资料下载

image51.jpg

至此所有配置都已打通,

下一篇,可以开始编写自己的程序,真正进行应用开发之旅了

作者:bluishfish
原文链接:https://harmonyos.51cto.com/posts/2717#jssq

系列篇

想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/

推荐阅读
关注数
2957
内容数
446
华为鸿蒙相关技术,活动及资讯,欢迎关注及加入创作
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息