【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
相关推荐
eybk11 分钟前
Pytorch+Mumu模拟器+萤石摄像头实现对小孩学习的监控
学习
6.9412 分钟前
Scala学习记录 递归调用 练习
开发语言·学习·scala
守护者1702 小时前
JAVA学习-练习试用Java实现“使用Arrays.toString方法将数组转换为字符串并打印出来”
java·学习
学会沉淀。2 小时前
Docker学习
java·开发语言·学习
xo198820112 小时前
鸿蒙人脸识别
redis·华为·harmonyos
Rinai_R2 小时前
计算机组成原理的学习笔记(7)-- 存储器·其二 容量扩展/多模块存储系统/外存/Cache/虚拟存储器
笔记·物联网·学习
吃着火锅x唱着歌2 小时前
PHP7内核剖析 学习笔记 第四章 内存管理(1)
android·笔记·学习
ragnwang2 小时前
C++ Eigen常见的高级用法 [学习笔记]
c++·笔记·学习
塞尔维亚大汉3 小时前
【OpenHarmony】 鸿蒙 UI开发之CircleIndicator
harmonyos·arkui
BisonLiu3 小时前
华为仓颉鸿蒙HarmonyOS NEXT仓颉原生数据网络HTTP请求(ohos.net.http)
harmonyos