【PowerHarmony】电鸿蒙学习记录-编写helloworld!

入门

  • 一、编写HelloWorld
    • 1.1 编译SDK
    • 1.2 业务构建
      • 1.2.1 编写HelloWorld业务代码
      • 1.2.3 编辑业务构建文件
    • 1.3 添加新组件
    • 1.4 编辑组件条目
    • 1.5 编译验证
    • 1.6 新增文件结构展示

一、编写HelloWorld

1.1 编译SDK

可以在VSCode终端中编译SDK源码,确认编译通过后即可开始编写HelloWorld 。
在这里插入图片描述

1.2 业务构建

1.2.1 编写HelloWorld业务代码

业务代码一般新增于applications文件夹下

// 工程结构目录一般如下
--applications--sample--wifi-iot--app--my_first_app--hello_world.c--BUILD.gn
// 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);

1.2.3 编辑业务构建文件

该系统下业务系统由BUILD.gn文件完成配置,包括目标、源文件路径、头文件路径三部分。

// BUILD.gn文件
static_library("myapp"){	//目标,编译结果为静态库文件libmyapp.asources = [				//源文件及路径,指定静态库文件所依赖的c文件及路径,此处未加"//"为相对路径,加"//"为绝对路径。"hello_world.c",]include_dirs = [		//头文件路径,指定静态库文件所依赖的h文件路径"//utils/native/lite/include",]
}

1.3 添加新组件

电鸿下各类驱动可以作为一个组件,组件的添加同样需要配置json文件以新增组件,否则不会在组件条目中包含编译。

/*	在build/lite/components/applications.json中新增该组件注意组件名称(component)、路径(dirs)、以及源文件及路径(targets)要正确
*/
{"components":[{"component":"hello_world_app","description":"hello world samples.","optional":"true","dirs":["applications/sample/wifi-iot/app/my_first_app"],"targets":["//applications/sample/wifi-iot/app/my_first_app:myapp"],"rom":"","ram":"","output":[],"adapted_kernel":["liteos_m"],"features":[],"deps":{"components":[],"third_party":[]}}]
}

1.4 编辑组件条目

组件条目修改后会自动按配置将编写的业务进行包含编译

/*	在vender/hisilicon/hispark_pegasus/config.json中新增hello_world_app组件的条目需要注意归属到那个子系统(subsystem),组件名称(component)要正确。
*/
{"subsystem":"applications","components":[{"component":"hello_world_app","features":[]}]
}

1.5 编译验证

编译通过后,查看串口是否有打印输出

1.6 新增文件结构展示

// An highlighted block
--applications/sample/wifi-iot/app--my_first_app			//新增文件夹--BUILD.gn			//新增 myapp静态库文件--hello_world.c		//新增 c文件
--build/lite/components--applications.json		//新增 配置component:hello_world_app的相关信息
--vender/hisilicon/hispark_pegasus--config.gn				//新增 在子系统applications中新增component:hello_world_app

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Excel】ToRow超级查找函数

看拼写ToRow的作用该是转换为行&#xff0c;的确如此&#xff0c;它可以把一个表格转换为一行。TOROW(A1:C6) 之所以敢挑Vlookup&#xff0c;是因为它的第2个参数为2时可以忽略错误值。TOROW(F9:F13,2) 所以要查找出符合条件的&#xff0c;只需要把不符合条件的变成错误值&am…

前缀和技巧解析

前缀和技巧解析 前缀和&#xff08;Prefix Sum&#xff09;是一种常用的算法技巧&#xff0c;用于高效地处理一系列连续子数组和的问题。通过构建一个额外的数组来存储从数组起始位置到当前位置的累计和&#xff0c;可以在常数时间内快速计算任意区间的和。 前缀和应用的典型…

分享 pdf 转 word 的免费平台

背景 找了很多 pdf 转 word 的平台都骗进去要会员&#xff0c;终于找到一个真正免费的&#xff0c;遂分享。 网址 PDF转Word转换器 - 100%免费市面上最优质的PDF转Word转换器 - 免费且易于使用。无附加水印 - 快速将PDF转成Word。https://smallpdf.com/cn/pdf-to-word

前端面试笔试(二)

目录 一、数据结构算法等综合篇 1.HTTP/2、ETag有关 二、代码输出篇 1.new URL&#xff0c;url中的hostname&#xff0c;pathname&#xff0c;href 扩展说一下url的组成部分和属性 URL的组成部分 urlInfo 对象的属性 2.一个递归的输出例子 3.数组去重的不普通方法1 4.数…

netmap.js:基于浏览器的网络发现工具

netmap.js是一款基于浏览器&#xff0c;用于提供主机发现和端口扫描功能的网络发现工具。 netmap.js的执行速度也非常的快&#xff0c;由于其使用了es6-promise-pool&#xff0c;因此它可以有效地运行浏览器允许的最大并发连接数。 动机 由于我正需要一个基于浏览器的端口扫…

MySQL(5)【数据类型 —— 字符串类型】

阅读导航 引言一、char&#x1f3af;基本语法&#x1f3af;使用示例 二、varchar&#x1f3af;基本语法&#x1f3af;使用示例 三、char 和 varchar 比较四、日期和时间类型1. 基本概念2. 使用示例 五、enum 和 set&#x1f3af;基本语法 引言 之前我们聊过MySQL中的数值类型&…

百度搜索AI探索版多线程批量生成TXT原创文章软件-可生成3种类型文章

百度搜索AI探索版是百度推出的一款基于大语言模型文心一言的综合搜索产品‌。以下是关于百度搜索AI探索版的详细介绍&#xff1a; ‌产品发布‌&#xff1a;百度搜索AI探索版在百度世界大会上进行了灰度测试&#xff0c;并面向用户开放体验‌。 ‌核心功能‌&#xff1a;与传…

websocket初始化

websocket初始化 前言 上一集我们HTTP的ping操作就可以跑通了&#xff0c;那么我们还有一个协议---websocket&#xff0c;我们在这一集就要去完成我们websocket的初始化。 分析 我们在初始化websocket的之前&#xff0c;我们考虑一下&#xff0c;我们什么时候就要初始化我们…

Git在版本控制中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Git在版本控制中的应用 Git在版本控制中的应用 Git在版本控制中的应用 引言 Git 概述 定义与原理 发展历程 Git 的关键技术 分布…

[JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决

目录 一. 多线程下使用ArrayList 1.1. 自行判断加锁 1.2 使用Collections.synchronizedList()套壳加锁 1.3 CopyOnWriteArrayList类 二. 总结 一. 多线程下使用ArrayList 多线程下使用ArrayList会涉及到线程安全问题, 例如: public static void main(String[] args) thro…

python——面向对象

一、面向对象编程 1.1 面向过程与面向对象 面向过程和面向对象都是一种编程方式&#xff0c;只不过再设计上有区别。 1.1.1 面向过程pop&#xff1a; 举例&#xff1a;孩子上学 1. 妈妈起床 2. 妈妈洗漱 3. 妈妈做饭 4. 妈妈把孩子叫起来 5. 孩子起床 6. 孩子洗漱 7. 孩子吃…

【缺陷检测】Anomaly Detection via Reverse Distillation from One-Class Embedding

论文地址 代码地址 动机 论文针对传统的知识蒸馏的方案提出了一个问题&#xff1a;认为之前的&#xff08;基于像素点的重建&#xff09;方案[1,2]容易阻碍异常表现的多样性 传统的知识蒸馏teacher和student的网络架构很相似或者几乎相同而且teacher和student的输入流都是…

【PHP】ThinkPHP基础

下载composer ComposerA Dependency Manager for PHPhttps://getcomposer.org/ 安装composer 查看composer是否安装 composer composer --version 安装 ThinkPHP6 如果你是第一次安装的话&#xff0c;首次安装咱们需要打开控制台&#xff1a; 进入后再通过命令,在命令行下面&a…

SpringBoot(十八)SpringBoot集成Minio

项目上传文件集成一下Minio,下面是我在项目中集成Minio的全过程。 首先介绍一下Minio:MinIO是高性能的对象存储,单个对象最大可达5TB。适合存储图片、视频、文档、备份数据、安装包等一系列文件。是一款主要采用Golang语言实现发开的高性能、分布式的对象存储系统。客户端支…

宗馥莉的接班挑战:内斗升级,竞品“偷家”

内斗不止&#xff0c;外患环伺&#xff0c;情怀助力娃哈哈短暂回暖&#xff0c;但市场认可与持续增长仍充满不确定性。 转载&#xff1a;原创新熵 作者丨晓伊 编辑丨蕨影 一波未平&#xff0c;一波又起。继换办公楼、逼员工签新合同和宗馥莉疑似出走等事件后&#xff0c;娃哈哈…

K8S单节点部署及集群部署

1.Minikube搭建单节点K8S 前置条件&#xff1a;安装docker&#xff0c;注意版本兼容问题 # 配置docker源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo# 安装docker环境依赖 yum install -y yum-utils device-m…

MySQL —— MySQL逻辑架构与查询过程

文章目录 MySQL逻辑架构整体分为三层连接层服务层查询缓存解析器优化器执行器 存储引擎层系统文件层 MySQL 查询过程查询过程框图 博客1 博客2 MySQL逻辑架构整体分为三层 最上层为客户端层&#xff0c;并非MySQL所独有&#xff0c;诸如&#xff1a;连接管理、授权认证、权限校…

【大数据学习 | HBASE高级】storeFile文件的合并

Compaction 操作分成下面两种&#xff1a; Minor Compaction&#xff1a;是选取一些小的、相邻的StoreFile将他们合并成一个更大的StoreFile&#xff0c;对于删除、过期、多余版本的数据不进行清除。 Major Compaction&#xff1a;是指将所有的StoreFile合并成一个StoreFile&am…

微服务day08

Elasticsearch 需要安装elasticsearch和Kibana&#xff0c;应为Kibana中有一套控制台可以方便的进行操作。 安装elasticsearch 使用docker命令安装&#xff1a; docker run -d \ --name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \ //设置他的运行内存空间&#x…

操作系统lab4-页面置换算法的模拟

操作系统lab4-页面置换算法的模拟 文章目录 操作系统lab4-页面置换算法的模拟实验目的实验内容实验分析 代码测试用例运行结果 实验目的 1、掌握请求分页存储管理的常用理论&#xff1a;页面置换算法。 2、理解请求分页中的按需调页机制。 实验内容 独立地用高级语言编写和…