春节期间在家组装了一台鸿蒙小车,但是,还不会玩,准备烧个鸿蒙系统体验一下。

https://harmonyos.51cto.com/posts/3161
但是,折腾了一天发现,这个小车其实是已经内置鸿蒙系统了。
小车通电以后,显示屏上会快速显示:Hello Harmony,然后变成 Robot Car Stop。
如果按小车的按键 1,小车就会自动向前走,同时显示屏上显示:trace。
再多按几次,显示屏会出现“ultrasonic”字样,但是我还没有发现这个超声波的作用。

其中,小车的左上角的模块是主控模块,插上 Type-C 线以后,可以对小车进行调试和供电,就不需要电池了。
小车已经就位,下一步,就是试着写一个 hello world 了。
在 51CTO 的鸿蒙社区以及鸿蒙官网上找了好几圈,发现还是连老师的资料最完整,最后折腾了一天,终于完成了第一个 Hello World。
01
参考文献
作为一个没有开发过南向设备应用的北向应用开发者,面对这么一个小车,是既兴奋又懵逼的状态。
好在 51CTO 的鸿蒙社区分享的开发者很多,而华为的鸿蒙开发者网站的资料也非常的全,尤其是连志安老师的鸿蒙设备开发的系列文章,让我能够摸着石头过河,并最终实现一个小目标。在此非常感谢。
对于鸿蒙设备开发的新新新手,推荐以下资料,建议详细阅读:
连老师《第1~2章 鸿蒙系统介绍 和 编译环境搭建 持续更新 》
鸿蒙开发网站《HUAWEI DevEco Device Tool使用指南》
鸿蒙开发网站 《Hi3861搭建环境》
02
调试笔记
接下来,我整理一下自己摸索的笔记,作为嵌入式开发 0 经验的非专业设备开发者,有些名词表述不专业,敬请见谅。
①环境搭建
目前鸿蒙设备的开发环境,可以分为 2 个部分:Windows 调试环境,和 Linux 编译环境。
其中:
Linux 环境负责编译代码,并生成鸿蒙的包。
Windows 环境负责连接设备,进行烧录和调试。

Visual Studio Code
Python v3.7/v3.8
Node.js v12.0.0+
hpm
DevEco Device Tool
https://device.harmonyos.com/cn/docs/ide/user-guides/install_windows-0000001050164976%C2%A0

一些要点如下:
1).建议按照列表的顺序安装各个工具。
2).Python 只能是 3.7 或者 3.8,否则会导致 DevEco Device Tool 无法安装。


3).Node.js 需要 v12 以上。
4).hpm 安装完毕以后,需要设置一个特殊权限,否则在执行的时候,会报错“无法加载文件” 。
可以通过在命令行里用管理员执行 “set-executionpolicy remotesigned”来解决。
参考:《Windows 鸿蒙环境搭建 hpm 报错:无法加载文件 hpm.ps1,因为在此系统上禁止运行脚本》
https://xmanyou.com/hpm-cannot-run-securityerror-unauthorizedaccess/

5).打开 VSCode,看到这个画面,表示所需的工具安装成功。

用 USB 线将小车连接到电脑后,可以先到系统的设备里查看一下,是否能找到对应的设备。

如果出现了感叹号,表示需要安装相关的驱动。参考开发者文档《Hi3861 系列开发板串口驱动安装》。
1).下载驱动
http://www.wch.cn/search?q=ch340g&t=downloads



4).在 VSCode 里检查,DevEco Home→Devices 可以看到跟设备管理器里一样名字的设备,注意对应的 COM 口编号。

③安装 Linux 编译环境
我本来想自己装一个 Ubuntu,但是发现速度有点慢,就直接用了连老师给的虚拟机了。建议用百度网盘的虚拟机,这个已经预装了 samba 服务。
链接:https://pan.baidu.com/s/163JxuvZux01Fd407_WbK-g
提取码:bny6
连老师给的虚拟机是 VMWare 格式的,可以用 VMWare 的 Player 直接打开。

关于 Linux 虚拟机的详情,具体的可以看连老师的文章,这里只列几个要点:
虚拟机的账号是 harmony,密码 123456
使用 VMWare Player 打开虚拟机以后,需要安装 VMWare Tools 才可以调整虚拟机窗口的大小。
首次开机后,需要手动启动 samba 服务,运行 "sudo service smbd start"
开机后,运行 ifconfig -a 查看 ip
④Windows 连接 Linux
利用已经安装好的 samba 服务,Windows 可以很方便的访问 Linux 中的文件。
在文件浏览器,而不是 IE 浏览器的地址栏中,输入 \\\\<linux 系统 ip> 或者通过网上邻居查找也可以。
通过在 Windows 的 VSCode 中打开 Linux 中的鸿蒙项目,就可以把 Linux 环境中编译好的鸿蒙包,在 Windows 下烧录到鸿蒙小车中。
另,连老师还很贴心地建议映射成网络驱动器,比如我就把它映射成了 Y 盘。
⑤烧录第一个鸿蒙系统
1).打开鸿蒙项目
在 Windows 的 VSCode 中,打开 Linux 环境下的鸿蒙源码目录,在 harmony\code\code-1.0 文件夹。




然后点 Open 打开项目,留意左边第二列的 PROJECT TASKS,这是一系列快捷指令,接下去的操作要用到这些指令。
另外,这个地方,与鸿蒙开发者网站的截图略有不同,我找了好久也没有找到官网图示的位置,好在不影响 hello world。
python build.py wifiiot

出现 Connecting, please reset device 的日志时,在 30 秒内,按一下小车的系统复位键(RST):


如果动作太慢,烧录指令就会失败。否则,应该能看到日志继续刷新,直到出现 SUCCESS 字样,表示烧录成功。

但是,这还没有完,因为我们还没有写 HelloWorld。参考:《开发Hi3861第二个示例程序》
https://device.harmonyos.com/cn/docs/start/introduce/oem_wifi_start-0000001050168544
1).添加 HelloWorld App 目录
切换到 Explorer 模式,查看文件列表。

创建一个 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);
创建一个 BUILD.gn 文件,内容如下:
static_library("helloworld") {
sources = [
"hello_world.c"
]
include_dirs = [
"//utils/native/lite/include"
]
}
4).添加 HelloWorld 作为应用启动入口
修改 code-1.0/applications/sample/wifi-iot/app/BUILD.gn:
import("//build/lite/config/component/lite_component.gni")
# 旧的
#lite_component("app") {
# features = [
# "startup",
# ]
#}
# 新的
lite_component("app") {
features = [
"helloworld:helloworld",
]
}
https://device.harmonyos.com/cn/docs/ide/user-guides/serial_port-0000001057649420


在 VSCode 的命令行里,按下 Ctrl+T,然后选择目标 COM 口序号,这里就一个 COM,所以按下 1。

然后按下小车的系统复位键(RST),系统会重启,然后就可以看到 Hello World 了。

👇扫码关注鸿蒙技术社区👇

点“阅读原文”了解更多






