【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
相关推荐
hgy89693 分钟前
Ekman理论回归
学习
坚硬果壳_21 分钟前
《硬件架构的艺术》笔记(一):亚稳态
笔记·学习
糊涂君-Q1 小时前
Python小白学习教程从入门到入坑------第三十一课 迭代器(语法进阶)
python·学习·程序人生·考研·职场和发展·学习方法·改行学it
qiyi.sky1 小时前
JavaWeb——Web入门(8/9)- Tomcat:基本使用(下载与安装、目录结构介绍、启动与关闭、可能出现的问题及解决方案、总结)
java·前端·笔记·学习·tomcat
dal118网工任子仪1 小时前
web安全漏洞之ssrf入门
笔记·学习·计算机网络·网络安全
键盘敲没电1 小时前
【iOS】知乎日报前三周总结
学习·ios·objective-c·xcode
鸿蒙自习室1 小时前
鸿蒙动画开发06——打断动画
ui·华为·harmonyos·鸿蒙
Lyqfor1 小时前
云原生学习
java·分布式·学习·阿里云·云原生
大懒的猫猫虫2 小时前
Upload-Labs-Linux1学习笔迹 (图文介绍)
学习
ctrey_3 小时前
2024-11-13 学习人工智能的Day26 sklearn(2)
人工智能·学习·sklearn