鸿蒙OS配置

当前鸿蒙系统需要采用Linux进行编译,然后通过windows下的Hiburn进行上传。由于需要两个操作系统,因此推荐采用Windows 10 的最新功能WSL(Windows Subsystem for Linux,适用于 Linux 的 Windows 子系统)进行开发,可以在一台机器上完成所有的功能。

安装WSL+Ubuntu

  • 如果下述安装过程出现了什么问题参见微软官方的安装教程

  • 安装前,先确保Windows 10的版本在Version 1903 Build 18362 以上PS:使用 win + r 输入 winver 可快速查看 Windows 版本。

  • 如果你的 Win10 版本号过低,可使用 Windows 10 易升工具手动升级。下载 Windows 10 易升工具。下载后双击运行,等待完成升级即可(升级过程比较漫长)。

  • 使用管理员权限打开PowerShell, 并运行, 以便打开WSL功能:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  • 请务必重启电脑
  • 下载补丁包, 并安装, 便能升级成WSL 2.
  • 使用管理员权限打开PowerShell, 并运行, 以便默认使用WSL 2:
wsl --set-default-version 2
  • 打开Microsoft Store安装Ubuntu 18.04 LTS

  • 点击启动, 启动Ubuntu

  • 依次输入用户名和密码

  • 安装WSL+Ubuntu成功.

Ubuntu 编译环境配置

由于采用了WSL的方式, 因此和官方的使用方式有些区别. 如果出现死链或者新版本, 或者在安装过程中出现问题, 详见华为官方的使用教程

  • 安装Visual Studio Code, 链接

  • 安装Remote - WSL插件, 可以直接用VSCode访问WSL中的Ubuntu.

  • 单击左侧边栏, 进入Remote Explorer, 单击dfrobot /home/dfrotot右侧的文件夹, 打开Ubuntu的Home目录.

  • 单击顶部Terminal菜单, 单击New Terminal, 即可使用Ubuntu下的命令行.

  • 默认使用 bash 而不是 dash. 输入下述命令, 并选择No

sudo dpkg-reconfigure dash

  • 验证是否采用了Bash
ls -l /bin/sh

返回应为:

lrwxrwxrwx 1 root root 4 Dec  2 11:04 /bin/sh -> bash
  • 依次输入下述命令, 进行Python3.8的安装.
sudo apt update
sudo apt-get install python3.8 python3-setuptools python3-pip -y
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 10
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 10
  • 确认Python版本, 确认Python为3.8的版本.
python --version
  • 安装pip 以及相关库文件
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo -H python get-pip.py
sudo -H pip3 install setuptools kconfiglib==13.2.0 pycryptodome==3.7.3 six==1.12.0 ecdsa==0.14.1
wget https://sourceforge.net/projects/scons/files/scons/3.1.2/scons-3.1.2.tar.gz/download
tar -xvf scons-3.1.2.tar.gz
cd scons-3.1.2/
sudo -H python3 setup.py install
  • 确认scons是否可用.
scons -v

返回应为:

SCons by Steven Knight et al.:
        script: v3.1.2.bee7caf9defd6e108fc2998a2520ddb36a967691, 2019-12-17 02:07:09, by bdeegan on octodog
        engine: v3.1.2.bee7caf9defd6e108fc2998a2520ddb36a967691, 2019-12-17 02:07:09, by bdeegan on octodog
        engine path: ['/usr/local/lib/scons/SCons']
Copyright (c) 2001 - 2019 The SCons Foundation
  • 安装编译链工具
cd ~
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
tar -xvf gn.1523.tar -C ~/
wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
tar -xvf ninja.1.9.0.tar -C ~/
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 ~/
echo 'export PATH=~/gn:$PATH' >> ~/.bashrc 
echo 'export PATH=~/ninja:$PATH' >> ~/.bashrc 
echo 'export PATH=~/gcc_riscv32/bin:$PATH' >> ~/.bashrc 
source ~/.bashrc
  • 确认GCC是否可用
riscv32-unknown-elf-gcc -v

返回为(有缩减):

Using built-in specs.
COLLECT_GCC=riscv32-unknown-elf-gcc
COLLECT_LTO_WRAPPER=/home/dfrobot/gcc_riscv32/bin/../libexec/gcc/riscv32-unknown-elf/7.3.0/lto-wrapper
Target: riscv32-unknown-elf
...................
Thread model: single
gcc version 7.3.0 (GCC) 
  • 下载HarmonyOS源码, 并进行编译
mkdir HarmonyOS
cd HarmonyOS
wget https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz
tar -xvf code-1.0.tar.gz
python build.py wifiiot
chmod 777 -R ~/HarmonyOS

返回如下, 即表示编译成功:

-------------output/bin/Hi3861_wifiiot_app_ota.bin image info print end--------------

< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >
                              BUILD SUCCESS                              
< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >

See build log from: /home/dfrobot/HarmonyOS/vendor/hisi/hi3861/hi3861/build/build_tmp/logs/build_kernel.log
[197/197] STAMP obj/vendor/hisi/hi3861/hi3861/run_wifiiot_scons.stamp
ohos wifiiot build success!

Visual Studio 安装其他插件

  • 安装c/c++

  • 安装gn

共享Ubuntu的文件

  • 打开File Explorer, 右键Network, 选择Map network drive...

  • 键入\\wsl$\Ubuntu-18.04

  • V:盘里面的文件即Ubuntu的文件

安装HUAWEI DevEco Device Tool

如安装过程中出现问题, 详见华为官方使用指南

安装Node.js

  • 如果曾安装过Python, 请将其卸载.

  • 安装Node.js, 链接

  • 勾选自动安装必要工具

  • 按任意键继续安装

  • Visual Studio 2017 的安装会花很长时间, 请耐心等待.

  • 安装成功.

  • 用管理员权限打开powershell, 键入代码, 添加环境变量

[Environment]::SetEnvironmentVariable("NODE_PATH",
"$HOME\AppData\Roaming\npm\node_modules", "Machine")

安装JDK

安装hpm

  • 以管理员权限打开powershell, 键入代码, 随后键入Y确认.
set-ExecutionPolicy RemoteSigned
  • 安装hpm
npm install -g @ohos/hpm-cli
  • 验证hpm
hpm -V

返回版本号即为成功

  • 删除配置文件中多余的空行, 如果不删除会造成烧录错误.
hpm config

返回最后一行为

Create a hpm-cli configuration file, or change file 'C:\Users\Angelo\.hpm\hpmrc' to be a hpm-cli configuration file.
  • 用文本编辑器打开C:\Users\Angelo\.hpm\hpmrc, 删除第二行的空行, 并保存

硬件及驱动安装

  • 通过USB连接HarmonyOS Dev Board

  • 安装驱动, 下载链接

  • 安装完成后打开设备管理器, 会看到该串口设备, 需要记住串口编号, 此处为COM7

安装DevEco Device Tool插件

由于官方插件由于一些原因无法烧录程序(版本:devicetool-device-1.0.0.1.zip), 因此需要替换一些文件. 如果之后的版本有做更新, 则替换文件的步骤可以省略

  • 如果之前安装过该插件, 请先卸载

  • 登录HarmonysOS设备开发门户,点击右上角注册按钮, 进行注册

  • 进入HUAWEI DevEco Device Tool产品页,下载DevEco Device Tool安装包。

  • 使用7-zip打开刚下载的DevEcoDeviceTool-1.0.1.vsix文件

  • 下载需要替换的hiburn-jlink-upload.js 文件, 下载链接. (在Chrome中右键>>另存为)

  • 直接把上述文件拖拽到压缩包的对应文件夹中DevEcoDeviceTool-1.0.1.vsix\extension\deveco\ohos_bundles\@huawei\deveco_config\scripts\upload\

  • 确认直接替换

  • 打开VSCode, 由于默认启动了上次使用WSL的Ubuntu环境. 因此需要新建一个窗口

  • 单击左边栏进入Extensions, 单击...>>Install from VSIX

  • 选择经过更改的DevEcoDeviceTool-1.0.1.vsix文件

  • 安装完成后, 单击左侧的DEVECO DEVICE TOOL按钮, 并单击import, 选择导入文件夹v:\home\dfrobot\HarmonyOS, 该文件夹即为之前共享的Ubuntu的HarmonyOS源码文件夹

  • 单击左侧的DEVECO DEVICE TOOL按钮, 并单击Configure, 选择HI3861

  • 选择右侧的Burn进行配置

  • 选择串口, 及其波特率

  • 更改烧录文件位置为:v:\home\dfrobot\HarmonyOS\out\wifiiot\Hi3861_wifiiot_app_allinone.bin, 并按Save保存

  • 单击左下角Burn开始烧录

  • 按板子上的Reset按键后, 烧录程序开始工作

  • 按回车键结束.

  • 单击左下角Serial port

  • 键入串口号COM7

  • Set endline characters as "\r\n"? 输入1

  • 显示如下信息则初始化成功.

  • 直接输入下列命令, 连接WiFi

#启动STA模式:
AT+STARTSTA
#扫描周边AP:
AT+SCAN
#显示扫描结果:
AT+SCANRESULT
#连接指定AP,其中SSID/PASSWORD为待连接的热点名称和密码:
AT+CONN="SSID",,2,"PASSWORD"
#查看连接结果:
AT+STASTAT
#通过DHCP向AP请求wlan0的IP地址:
AT+DHCP=wlan0,1

  • 查看联网是否正常
#查看模组接口IP:
AT+IFCFG
#检查模组与网关的联通性,其中X.X.X.X需替换为实际的网关地址
AT+PING=114.114.114.114

运行Hello World

如有问题, 详见华为官方快速入门

  • 打开Visual Studio Code, 单击左侧REMOTE EXPLORER, 在Ubuntu-18.04右侧单击小文件夹图标

  • 单击左侧EXPLORER, 单击Open Folder 打开目录/home/dfrobot/HarmonyOS/

  • 新建下列文件夹及文件

  • 其中applications/sample/wifi-iot/app/my_first_app/hello_world.c为:

#include <stdio.h>
#include "ohos_init.h"
#include "ohos_types.h"
 
void HelloWorld(void)
{
    printf("[DEMO] Hello world.\n");
}
SYS_RUN(HelloWorld);
  • 其中applications/sample/wifi-iot/app/my_first_app/BUILD.gn文件为:
static_library("myapp") {
    sources = [
        "hello_world.c"
    ]
    include_dirs = [
        "//utils/native/lite/include"
    ]
}
  • applications/sample/wifi-iot/app/BUILD.gn 改为:
import("//build/lite/config/component/lite_component.gni")

lite_component("app") {
    features = [
        #"startup",
        "my_first_app:myapp",
    ]
}
  • 保证所有修改后的代码已经保存.

  • Terminal中, 输入指令, 进行编译

  • 单击File >> New Windows新建窗口

  • 按照之前的方法import, 并进行烧录

  • 使用Serial port连接, 输出了Hello world则表示运行成功.

  • 大功告成.