鸿蒙嵌入式设备开发之hello world

1. 环境搭建
目前鸿蒙设备的开发环境,可以分为2个部分:Windows调试环境,和Linux编译环境。 

其中,

  • Linux环境负责编译代码,并生成鸿蒙的包。
  • Windows环境负责连接设备,进行烧录和调试。

特别注意,Linux环境不可少,因为目前只支持在Linux环境下编译,不信邪,强行在Windows上编译的结果就是: 

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

1.2. Windows开发环境搭建

安装开发工具
Windows环境需要的工具列表:

  • Visual Studio Code
  • Python v3.7/v3.8
  • Node.js v12.0.0+
  • hpm
  • DevEco Device Tool 

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

一些要点

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

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

  • 3). Node.js 需要 v12 以上
  • 4). hpm安装完毕以后,需要设置一个特殊权限,否则在执行的时候,会报错“无法加载文件” 
    可以通过在命令行里用管理员执行 “set-executionpolicy remotesigned”来解决。

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

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

    嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

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

    嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区


    如果出现了感叹号,表示需要安装相关的驱动。 


步骤

  • 1). 下载驱动 
    http://www.wch.cn/search?q=ch340g&t=downloads 

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

  • 2). 安装 

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

  • 3). 检查,在设备管理器里看到USB-SERIAL CH340,表示识别成功。 

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

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

    嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

    3.3. 安装Linux编译环境

我本来想自己装一个Ubuntu,但是发现速度有点慢,就直接用了虚拟机了。


虚拟机是VMWare格式的,可以用VMWare的Player直接打开。  

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

  • 0). 虚拟机的账号是 harmony,密码 123456
  • 1). 使用VMWare Player打开虚拟机以后,需要安装VMWare Tools才可以调整虚拟机窗口的大小。
  • 2). 首次开机后,需要手动启动samba服务,运行 "sudo service smbd start"
  • 3). 开机后,运行 ifconfig -a 查看 ip

3.4. Windows连接Linux
利用已经安装好的samba服务,Windows可以很方便的访问Linux中的文件:

在文件浏览器,而不是IE浏览器的地址栏中,输入 \\\\<linux 系统 ip>
或者
通过网上邻居查找也可以。

 
通过在Windows的VSCode中打开Linux中的鸿蒙项目,就可以把Linux环境中编译好的鸿蒙包,在Windows下烧录到鸿蒙小车中。

3.5. 烧录第一个鸿蒙系统
1). 打开鸿蒙项目
在Windows的VSCode中,打开Linux环境下的鸿蒙源码目录,在 harmony\code\code-1.0文件夹  

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

 

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区


如果提示这不是一个鸿蒙项目,选择“继续打开”,即可。

2). 配置项目
DevEco Home -> Projects -> Settings 
配置好upload_port为刚刚在设备管理器看到的COM口,如果只连了一个鸿蒙设备,直接从列表里选中就可以了。 
其他upload_protocol和upload_partitions没什么可选的,按照截图别放空就好。 
记得保存Save。

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

然后点Open打开项目,留意左边第二列的PROJECT TASKS,这是一系列快捷指令,接下去的操作要用到这些指令。 
 

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

另外,这个地方,与鸿蒙开发者网站的截图略有不同,我找了好久也没有找到官网图示的位置,好在不影响hello world。  

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

3). 编译Build

前边说过,直接在Windows的VSCode里执行build,是不可以的。 

这个虚拟机貌似是没有装VSCode的,但是支持从命令行进行编译。 

所以,编译可以直接在Linux虚拟机上进行,也可以选择在Windows上利用ssh连接到Linux来进行。 

具体的做法是,

  • 打开控制台
  • 进入到项目目录下
  • 执行编译命令
python build.py wifiiot
  • 看到这段日志,表示编译成功: 
     

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

4). 烧录

烧录可以在Windows上进行,从刚刚的PROJECT TASKS中执行Upload指令即可。 
  
出现Connecting, please reset device的日志时,在30秒内,按一下小车的系统复位键(RST): 
 

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

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

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

怎么知道烧录成功了呢? 
还记得小车显示屏上显示的文字吗? 
如果现在看不到了,那就表示你把原来自带的鸿蒙系统给覆盖了,说明烧录成功了……

3.6. 编写HelloWorld
但是,这还没有完,因为我还没有写HelloWorld。 
 

1). 添加HelloWorld App目录
切换到Explorer模式,查看文件列表。 
在code-1.0/applications/sample/wifi-iot/app目录下,创建一个helloworld目录 
 

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

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的输出,需要读取串口的数据。 

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

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

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

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

嵌入式开发小白跟连老师学鸿蒙设备开发之hello world-鸿蒙开发者社区

至此,Hello World的任务就完成了。

最后

如果你想成为一名鸿蒙开发者,以下这些资料将是十分优质且有价值,让你的鸿蒙开发之路事半功倍!相对于网上那些碎片化的知识内容,这份学习资料的知识点更加系统化,更容易理解和记忆。

内容包含了:【OpenHarmony多媒体技术、Stage模型、ArkUI多端部署、分布式应用开发、音频、视频、WebGL、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战】等技术知识点。

鸿蒙Next全套VIP学习资料←点击领取!(安全链接,放心点击

1.鸿蒙核心技术学习路线

2.大厂面试必问面试题

3.鸿蒙南向开发技术

 4.鸿蒙APP开发必备

 5.HarmonyOS Next 最新全套视频教程

 6.鸿蒙生态应用开发白皮书V2.0PDF

这份全套完整版的学习资料已经全部打包好,朋友们如果需要可以点击→鸿蒙Next全套VIP学习资料:免费领取(安全链接,放心点击

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/687264.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

读书笔记分享

1.绝大多数父母都是爱孩子的&#xff0c;可他们却不是称职的父母。世界上任何职业都要培训、考核、竞争上岗&#xff0c;唯有“父母”这个职业是没有这些程序&#xff0c;只要生了小孩&#xff0c;就是天经地义的父母。 2.由于自身工作特点&#xff0c;“白领”们的部分器官和…

代码审计(1):CVE-2022-4957分析及复现

0x00漏洞描述&#xff1a; ѕрееdtеѕt iѕ а vеrу liɡhtԝеiɡ&#xff48;t nеtԝоrk ѕрееd tеѕtinɡ tооl imрlеmеntеd in Jаvаѕсriрt. Thеrе iѕ а Crоѕѕ-ѕitе Sсriрtinɡ vulnеrаbilitу in librеѕроndеd ѕрееdtеѕt…

SD卡格式化怎么恢复?一键扫描,轻松找回丢失的数据

SD卡格式化怎么恢复数据&#xff1f;在日常生活中&#xff0c;我们常常会使用SD卡来存储各种数据&#xff0c;如照片、视频、文档等。然而&#xff0c;当SD卡意外格式化或者出现其他问题时&#xff0c;里面的数据就会面临丢失的风险。 此时&#xff0c;如何恢复格式化的SD卡就…

聚焦Cayman 环二核苷酸(CDNs)

环二核苷酸CDNs 环二核苷酸&#xff08;cyclic dinucleotides&#xff0c;CDNs&#xff09;是一类天然的环状RNA分子&#xff0c;细菌衍生的CDNs分子包括c-di-GMP、c-di-AMP和3,3-cGAMP&#xff0c;它们介导对恶性、病毒性和细菌性疾病的先天免疫的保护作用&#xff0c;并在自…

遇见桂林山水画廊,深层互联自动讲解耳机走进漓江

遇见山水&#xff0c;听懂山水。由深层互联独家打造&#xff0c;桂林漓江山水画廊导览工程&#xff0c;于不久前正式启动&#xff0c;声情并茂的真人语音引导着游客&#xff0c;走进有声有色的山水画卷中。 桂林山水甲天下&#xff0c;得天独厚的自然景观&#xff0c;奇幻瑰丽…

html5实现端午节网站源码

文章目录 1.设计来源1.1 端午首页页面1.2 端午由来页面1.3 端午图集页面1.4 端午活动页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/139524377 ht…

【Python入门与进阶】Anaconda环境配置

1.Conda换源 1.1.打开Anaconda Powershell Prompt 1.2.在界面中输入以下命名&#xff08;加入清华源并设置搜索优先级&#xff09;&#xff1a; conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.…

计算机毕业设计python+hadoop+spark猫眼电影票房预测 电影推荐系统 猫眼电影爬虫 电影数据可视化 电影用户画像系统 协同过滤算法 数据仓库

山东青年政治学院毕业论文&#xff08;设计&#xff09;开题报告 学生姓名 高宜凡 学 号 202010520237 所在学院 信息工程学院 专 业 信息管理与信息系统&#xff08;云计算与大数据技术&#xff09; 指导教师姓名 李海斌 黄虹 指导教师职称 工程师 副教授 指导教…

二十年编程人生,倾囊相授:自学Python所有方向好书精选,助你全方位攻略!

一、论看书的重要性 现在不像十几年前那样&#xff0c;现在的学习资源很多&#xff0c;出了校园工作了之后&#xff0c;很多人都不怎么喜欢看书&#xff0c;通过看书来学习的人越来越少了&#xff0c;但我一直保持着这个习惯&#xff0c;现在也是&#xff0c;每天早上都会起来…

Win11 ubuntu子系统安装WslRegisterDistribution failed with error: 0x800701bc

执行完这两部&#xff0c;然后再打开ubuntu即可。链接

【成品设计】基于红外线的目标跟踪无线测温系统设计

《基于红外线的目标跟踪无线测温系统设计》 整体功能&#xff1a; A端&#xff1a;无线跟踪端 主控&#xff1a;采用STM32F103C8T6单片机作为核心控制。360度编码模块数字脉冲输出红外解码编码模块OLED屏幕。 B端&#xff1a;无线待测端 主控&#xff1a;采用STM32F103C8T…

数字人的技术实现方案比较

数字人的实现方案通常包括以下几个关键技术领域&#xff0c;数字人的实现是一个跨学科的领域&#xff0c;涉及到计算机图形学、人工智能、机器学习、自然语言处理等多个技术领域&#xff0c;随着技术的不断进步&#xff0c;数字人的能力和应用范围将不断扩大。北京木奇移动技术…

亚马逊新品如何快速吸引流量?自养号测评助卖家一臂之力

在亚马逊平台上每天都会有大量的新品推出&#xff0c;而这些新品中有部分可能并没有什么流量和订单&#xff0c;有些可能上架后立马就能获得流量了&#xff0c;那么亚马逊上新品一般几天出单&#xff1f; 一、亚马逊上新品一般几天出单&#xff1f; 亚马逊上新品出单的时间因…

轻松实现Excel工作表按行拆分,提升办公效率新神器!

在快节奏的现代办公环境中&#xff0c;数据处理和文档编辑成为了我们日常工作中不可或缺的一部分。而Excel工作表作为数据存储和处理的利器&#xff0c;其重要性不言而喻。然而&#xff0c;当面对庞大且复杂的工作表时&#xff0c;如何高效地进行数据拆分和处理&#xff0c;成为…

day52 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

123.买卖股票的最佳时机III 关键在于至多买卖两次&#xff0c;这意味着可以买卖一次&#xff0c;可以买卖两次&#xff0c;也可以不买卖。 动态规划五部曲 1.确定dp数组以及下标的含义 一天一共就有五个状态&#xff0c; 没有操作 &#xff08;其实我们也可以不设置这个状态&a…

QA | 关于智能座舱SusPIS-ATx系统常见问题答疑

前沿 在上一期《基于SusPIS-ATx的座舱仿真系统搭建与评估方法创意研讨会》中&#xff0c;我们围绕汽车智能座舱仿真测试相关评价规范和法规&#xff08;如C-ICAP&#xff09;&#xff0c;引入了智能座舱测试行业难点及次生问题&#xff0c;介绍了基于SusPIS-ATx的智能座舱全域…

Ollama 的 Web Desktop

Ollama 的 Web & Desktop Web & Desktop Ollama的Web & Desktop非常多&#xff0c;比较流行的是 Open WebUl; Open WebUl Github: https://github.com/open-webui/open-webui Open WebUl 官网:https://www.openwebui.com/ Open WebUl是一个可扩展、功能丰富、用户…

这几项合规没做好,50家APP被通报处罚,顶格处罚累计900w(文附APP合规方案)

APP合规 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 近期国家公布了2024年第3批APP不合规的企…

HackTheBox-Machines--Aragog

Aragog 测试过程 1 信息收集 NMAP 服务器开启了 21、22、80端口 21 端口测试 首先测试 21 端口&#xff0c;21端口开启了匿名登录 ftp服务器上存在 test.txt 文件&#xff0c;test.txt 文件是 xml 格式。 80 端口测试 echo "10.129.97.250 aragog.htb" | sudo tee…

<microros> 如何自定义uROS2数据类型

如何自定义数据类型 在microros中&#xff0c;我们可以看到&#xff0c;官方给我们提供了很多数据类型。 如果我们在实际使用的时候&#xff0c;这些类型无法满足我们的传输要求怎么办呢&#xff1f; 官方也提供了自定义数据类型的办法。 参考&#xff1a; https://github…