花粉乐分享平台宣传视频
> 华为资讯 > 华为资讯 > 鸿蒙编程 > 折腾一天,在鸿蒙小车上写了个hello world
折腾一天,在鸿蒙小车上写了个hello world
来源:51CTO
2022-07-01 12:35:16
752
管理
春节期间在家组装了一台鸿蒙小车,但是,还不会玩,准备烧个鸿蒙系统体验一下。 组装小车请参考文章《鸿蒙陪我(们)过大年~》: https://img.hflfx.com/pic/onyifrbgeq2 但是,折腾了一天发现,这个小车其实是已经内置鸿蒙系统了。 小车通电以后,显示屏上会快速显示: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 环境负责连接设备,进行烧录和调试。
特别注意,Linux 环境不可少,因为目前只支持在 Linux 环境下编译,我不信邪,强行在 Windows 上编译的结果就是: ②Windows 开发环境搭建 安装开发工具,Windows 环境需要的工具列表:
  • Visual Studio Code
  • Python v3.7/v3.8
  • Node.js v12.0.0
  • hpm
  • DevEco Device Tool
详情可以参考鸿蒙开发者网站: 《Windows开发环境准备》 https://img.hflfx.com/pic/gesjqc03cfx  一些要点如下: 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 驱动: 用 USB 线将小车连接到电脑后,可以先到系统的设备里查看一下,是否能找到对应的设备。 如果出现了感叹号,表示需要安装相关的驱动。参考开发者文档《Hi3861 系列开发板串口驱动安装》。 步骤如下: 1).下载驱动 https://img.hflfx.com/pic/sq1dgy2cjvf src="https://p3.toutiaoimg.com/large/pgc-image/eec649c571c943528af949229f9483ff"> 2).安装,如下图: 3).检查,在设备管理器里看到 USB-SERIAL CH340,表示识别成功。
4).在 VSCode 里检查,DevEco Home→Devices 可以看到跟设备管理器里一样名字的设备,注意对应的 COM 口编号。 ③安装 Linux 编译环境 这个可以参考 《Ubuntu 开发环境准备》,从文档里可以看到,所需的开发工具跟 Windows 是一致的。 我本来想自己装一个 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 环境下的鸿蒙源码目录,在 harmonycodecode-1.0 文件夹。 如果提示这不是一个鸿蒙项目,选择“继续打开”,即可。 2).配置项目 DevEco Home→Projects→Settings 配置好 upload_port 为刚刚在设备管理器看到的 COM 口,如果只连了一个鸿蒙设备,直接从列表里选中就可以了。 其他 upload_protocol 和 upload_partitions 没什么可选的,按照截图别放空就好。记得保存 Save。 然后点 Open 打开项目,留意左边第二列的 PROJECT TASKS,这是一系列快捷指令,接下去的操作要用到这些指令。 另外,这个地方,与鸿蒙开发者网站的截图略有不同,我找了好久也没有找到官网图示的位置,好在不影响 hello world。 3).编译 Build 前边说过,直接在 Windows 的 VSCode 里执行 build,是不可以的。连老师的这个虚拟机貌似是没有装 VSCode 的,但是支持从命令行进行编译。 所以,编译可以直接在 Linux 虚拟机上进行,也可以选择在 Windows 上利用 ssh 连接到 Linux 来进行。 具体的做法是,打开控制台,进入到项目目录下,执行编译命令: python build.py wifiiot 看到这段日志,表示编译成功: 4).烧录 烧录可以在 Windows 上进行,从刚刚的 PROJECT TASKS 中执行 Upload 指令即可。 出现 Connecting, please reset device 的日志时,在 30 秒内,按一下小车的系统复位键(RST): 如果动作太慢,烧录指令就会失败。否则,应该能看到日志继续刷新,直到出现 SUCCESS 字样,表示烧录成功。 怎么知道烧录成功了呢?还记得小车显示屏上显示的文字吗?如果现在看不到了,那就表示你把原来自带的鸿蒙系统给覆盖了,说明烧录成功了…… ⑥编写 HelloWorld 但是,这还没有完,因为我们还没有写 HelloWorld。参考:《开发Hi3861第二个示例程序》 https://img.hflfx.com/pic/ycvdx2ehc33 1).添加 HelloWorld App 目录 切换到 Explorer 模式,查看文件列表。 在 code-1.0/applications/sample/wifi-iot/app 目录下,创建一个 helloworld 目录。 2).添加 c 代码 创建一个 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); 3).添加 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", ]} 5).重新编译并烧录 修改完,保存,重新编译,并烧录。 虽然我们尝试在输出 hello world 日志,但是,这个日志并不会出现在小车的显示屏上,也不会直接出现在 VSCode 的 Output 里。 6).查看 Hello World 要想看到 hello world 的输出,需要读取串口的数据。参考:《串口工具使用》 https://img.hflfx.com/pic/02lyxf3bg2t src="https://p3.toutiaoimg.com/large/pgc-image/e7285f89bc8f41d18c521e4096c80fc0"> 在 VSCode 的命令行里,按下 Ctrl T,然后选择目标 COM 口序号,这里就一个 COM,所以按下 1。 然后按下小车的系统复位键(RST),系统会重启,然后就可以看到 Hello World 了。 至此,Hello World 的任务就完成了。 作者: IT男阿斌 原文链接:https://img.hflfx.com/pic/zw13owyqpms

花粉社群VIP加油站

2
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与花粉乐分享无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
凡本网注明 “来源:XXX(非花粉乐分享)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。
如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。
QQ:2443165046 邮箱:info@hflfx.com
关于作者
lulu(花粉渠道)
文章
467
主题
0
关注
0
粉丝
1
点击领取今天的签到奖励!
签到排行
随手拍
54个圈友 0个话题
华为手机随手拍,记录生活点滴之美好
华为P30pro
51个圈友 0个话题
这里是华为P30pro手机交流圈,欢迎华为P30pro用户进群交流
体验官
60个圈友 2个话题
华为花粉体验官,体验官专属的交流群
登录后查看您创建的圈子
登录后查看您创建的圈子
所有圈子
2
0
分享
请选择要切换的马甲: