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

news2024/11/24 1:32:54

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.coloradmin.cn/o/1797880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

draw.io 如何设置图形圆角?

draw.io 如何设置图形圆角呢&#xff1f; draw.io 是一款强大的&#xff0c;免费的开源工具&#xff0c;我经常用它来画流程图&#xff0c;但是我发现 draw.io 对于图形圆角的设置&#xff0c;只提供了一个设置选项&#xff0c;如下图&#xff1a; 当你选中某个图形&#xff0…

JustAuth Illegal state xx问题

排查 起因 服务上线生产环境后使用飞书登录有些时候会登录失败,查看日志出现以上错误Illegal state [FEISHU],但是测试环境没有出现这个情况 排查 经过排查发现是JustAuth 报的错 分析出现原因 在JustAuth找到出现原因和解决方案 原文地址:异常相关问题 | JustAuth 异常…

用大模型实现PPT可视化几种思路

https://zhuanlan.zhihu.com/p/700685802 背景 前面一篇文章已经介绍了如何根据用户输入&#xff0c;用大模型实现内容检索、分析、脑图可视化的链路。然而往往投研团队需要针对重要新闻做组内分析解读&#xff0c;需要用ppt的方式来展现&#xff1b;那么优美可能让大模型直…

【全开源】Java同城服务同城信息同城任务发布平台小程序APP公众号源码

&#x1f4e2; 连接你我&#xff0c;让任务触手可及 &#x1f31f; 引言 在快节奏的现代生活中&#xff0c;我们时常需要寻找一些便捷的方式来处理生活中的琐事。同城任务发布平台系统应运而生&#xff0c;它为我们提供了一个高效、便捷的平台&#xff0c;让我们能够轻松发布…

【最新鸿蒙应用开发】——沙箱机制是什么?作用?场景?

沙箱机制 1. 什么是沙箱机制&#xff1f; 1.1. 概念 在操作系统当中&#xff0c;沙箱机制&#xff08;Sandboxing&#xff09;是一种安全机制&#xff0c;用于限制程序代码的访问权限&#xff0c;防止恶意软件对系统造成破坏。在沙箱环境中&#xff0c;程序只能访问特定的资…

Docker 学习总结(83)—— 配置文件daemon.json介绍及优化建议

一、daemon.json 文件概述 daemon.json是Docker守护进程的配置文件,它允许系统管理员自定义Docker守护程序的行为。此文件通常位于/etc/docker/目录下。通过修改daemon.json,可以调整Docker守护进程的多种设置,包括网络配置、日志记录、存储驱动等。 二、daemon.json 文件结…

YoloV8改进策略:Block篇|MobileNetV4——移动生态系统的通用模型

文章目录 摘要1、引言2、相关工作3、硬件无关的帕累托效率4、通用反向瓶颈5、Mobile MQA6、MNv4模型设计6.1、精炼NAS以增强架构6.2、MNv4模型的优化 7、结果7.1、ImageNet分类 8、增强蒸馏方案9、结论10、致谢A、搜索空间细节B、基准测试方法论C、ImageNet-1k分类任务的训练设…

Linux之线程及线程安全详解

前言&#xff1a;在操作系统中&#xff0c;进程是资源分配的基本单位&#xff0c;那么线程是什么呢&#xff1f;线程是调度的基本单位&#xff0c;我们该怎么理解呢&#xff1f; 目录 一&#xff0c;线程概念理解 二&#xff0c;Linux里面的线程原理 三&#xff0c;为什么要…

哈夫曼树的构造,哈夫曼树的存在意义--求哈夫曼编码

一:哈夫曼树的构造 ①权值,带权路径长度。 ②一组确定权值的叶子节点可以构造多个不同的二叉树,但是带权路径长度min的是哈夫曼树 ③算法基本思想及其实操图片演示 注:存储结构和伪代码 1 初始化: 构造2n-1棵只有一个根节点的二叉树,parent=rchild=lchild=-1; 其中…

忆恒创源国产系列新品 —— PBlaze7 7A40 取得 PCI-SIG 兼容性认证

在此前报道中&#xff0c;我们曾预告了忆恒创源国产系列 PCIe 5.0 SSD 新品 —— PBlaze7 7A40&#xff0c;今天&#xff0c;这款 SSD 已经顺利通过 PCI-SIG 的严格测试并出现在 Integrators List 集成商列表当中&#xff0c;标志着距离 PBlaze7 7A40 的正式发布又近了一步。 正…

Spring Boot框架基础

文章目录 1 Spring Boot概述2 Spring Boot入门2.1 项目搭建2.2 入门程序 3 数据请求与响应3.1 数据请求3.2 数据响应 4 分层解耦4.1 三层架构4.2 控制反转4.3 依赖注入 5 参考资料 1 Spring Boot概述 Spring是Java EE编程领域的一个轻量级开源框架&#xff0c;是为了解决企业级…

乐高小人分类项目

数据来源 LEGO Minifigures | Kaggle 建立文件目录 BASE_DIR lego/star-wars-images/ names [YODA, LUKE SKYWALKER, R2-D2, MACE WINDU, GENERAL GRIEVOUS ] tf.random.set_seed(1)# Read information about dataset if not os.path.isdir(BASE_DIR train/):for name in …

Edge 工作区是什么?它都有哪些作用?

什么是工作区 Edge 工作区是什么&#xff1f;它是微软 Edge 浏览器中的一个功能&#xff0c;在帮助用户更好地组织和管理他们的浏览会话。通过工作区&#xff0c;用户可以创建多个独立的浏览环境&#xff0c;每个工作区内包含一组相关的标签页和浏览器设置。这使得用户能够根据…

asp.net core使用httpclient

主要讲解常见的get请求和post请求 GET var client new HttpClient(); //3秒钟不响应就超时 client.TimeoutTimeSpan.FromSeconds(3); using HttpResponseMessage response await client.GetAsync("todos/3"); var jsonResponse await response.Content.ReadAsSt…

变压器绕线完成之后要做的事

1 调整感量&#xff1a;测主绕组电感量&#xff0c;通过磨气隙或垫气隙&#xff0c;测得感量没错以后&#xff0c;用胶带封装磁芯 2 测验同名端是否正确&#xff1a;两绕组首尾相连&#xff0c;测试连接后的总感量&#xff0c;是否比感量大的那个绕组还大。如果是&#xff0c;…

Allegro热风焊盘制作教程

阿里狗热风焊盘制作教程 打开PCB Editor&#xff0c;新建Flash symbol&#xff0c;最好保存在与Pad文件同一个路径 点击Setup–>Design Parameter Editor,设置mm单位&#xff0c;在设置画布&#xff0c;把原点提上去&#xff0c;点击Apply和OK 把视野调整到原点 点击Setup–…

vue面试题2-根据以下问题回答

以下是针对提供的关于Vue的问题的回答&#xff1a; Vue的基本原理&#xff1a; Vue.js是一个流行的JavaScript框架&#xff0c;用于构建用户界面和单页面应用。其基本原理包括响应式数据、模板、组件系统、指令、生命周期钩子和虚拟DOM。 双向数据绑定的原理&#xff1a; Vue通…

咖啡机器人如何精准控制液位流量

在如今快节奏的生活中&#xff0c;精确控制液位流量的需求愈发迫切&#xff0c;特别是在咖啡机器人等精密设备中。为了满足这一需求&#xff0c;工程师们不断研发出各种先进的技术&#xff0c;以确保液体流量的精准控制。其中&#xff0c;霍尔式流量计和光电式流量计就是两种常…

转让北京海淀成立满1年拍卖公司许可证条件和流程

拍卖经营批准证书是拍卖企业经营所需的许可&#xff0c;是为了维护拍卖秩序&#xff0c;保护拍卖活动各方合法权益而颁发的合法凭证。其中个人物品&#xff0c;公司物品&#xff0c;或者国有资源的拍卖可通过普通拍卖资质进行拍卖。而文物古董拍卖类的需取得文物拍卖经营许可证…

google keybox.xml格式 内容有哪些 Keybox数量、设备ID、算法的 私钥 公钥 证书链 (ECDSA即ECC, RSA)

根据您提供的文件内容&#xff0c;keybox.xml 文件包含以下主要信息&#xff1a; Keybox数量 ([NumberOfKeyboxes](file:///d%3A/010F200/svn/ProduceToolMfc/FtSmartPos/FtSmartPos/ToolBydMes/httpclient/e%3A%5CGoogleKey%5CLinux_AttestationKeyboxPack_Tool%5CLinux_Atte…