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

入门

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

一、编写HelloWorld

1.1 编译SDK

可以在VSCode终端中编译SDK源码,确认编译通过后即可开始编写HelloWorld 。

1.2 业务构建

1.2.1 编写HelloWorld业务代码

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

javascript 复制代码
// 工程结构目录一般如下
--applications
	--sample
		--wifi-iot
			--app
				--my_first_app
					--hello_world.c
					--BUILD.gn
javascript 复制代码
// 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文件完成配置,包括目标、源文件路径、头文件路径三部分。

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

1.3 添加新组件

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

javascript 复制代码
/*	在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 编辑组件条目

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

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

1.5 编译验证

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

1.6 新增文件结构展示

javascript 复制代码
// 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
相关推荐
数字芯片实验室2 小时前
分享一个可以学习正则表达式的网址:Pythex.org
学习·正则表达式
陈洪奇2 小时前
注册中心学习笔记整理
笔记·学习
光影少年2 小时前
从前端转go开发的学习路线
前端·学习·golang
爱笑的眼睛114 小时前
08-自然壁纸实战教程-视频列表-云
华为·harmonyos
fen_fen7 小时前
学习笔记(32):matplotlib绘制简单图表-数据分布图
笔记·学习·matplotlib
二二孚日10 小时前
自用华为ICT云赛道AI第三章知识点-MindSpore特性、MindSpore开发组件
人工智能·华为
Georgewu11 小时前
【HarmonyOS 5】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解
harmonyos
塞尔维亚大汉11 小时前
鸿蒙内核源码分析(消息封装篇) | 剖析LiteIpc 进程通讯内容
harmonyos·源码阅读
Georgewu11 小时前
【HarmonyOS NEXT】鸿蒙跳转华为应用市场目标APP下载页
harmonyos
萝卜青今天也要开心11 小时前
2025年上半年软件设计师考后分享
笔记·学习