1、创建业务文件
1.1 业务文件所在目录
在这个目录下 E:\hi3861_hdu_iot_application240515\src\vendor 存放着各企业的业务代码,有小熊派、润和、海思和华清远见等,新建的业务代码也放在这里面。以小熊派为例,进入目录查看,其按照内容分了ABCD4类业务代码。
由于代码支持所有厂家的例程,选择不同厂家需要在其目录下E:\hi3861_hdu_iot_application-master\src\applications\sample\wifi-iot\app修改编译的厂家目录。以小熊派为例:
修改目录为小熊派例程所在目录。
1.2 两种方法建立业务文件夹
可以在此目录建立我们的业务代码,新建文件夹E1_hello_world
查看工程里面同步了这个文件夹
也可以在工程下面新建,在demo文件夹右键新建文件加,然后命名即可,两种方法相同。
2、业务文件组成
业务文件有两部分组成,分别是.c的源文件和build.gn文件。.c文件就是我们的业务源码文件,helloworld对应的业务代码在此文件里面编写,重点介绍build.gn文件。
目前OpenHarmony编译构建是基于 Gn 和 Ninja 完成的。 BUILD.gn为编译脚本。整个编译的运作机制并不复杂,可以总结为:以命令行为驱动,调用gn,执行ninja。命令行主要做解析方面的工作,解析待编译的产品名称,加载相关配置;调用gn是为了根据命令行解析的产品名称和编译类型,配置编译工具链和全局的编译选项;最后执行Ninja,以启动编译并生成对应的产品版本。
2.1 .C文件的建立与编写
在E1_hello_world文件下新建hello_world.c文件 ,如图。
编写的业务代码如下:
#include <stdio.h>
#include "ohos_init.h"
void Hello_World(void)
{
printf("hello world!\r\ntoday is monday\r\n");
}
APP_FEATURE_INIT(Hello_World);
APP_FEATURE_INIT是OpenHarmony启动恢复模块接口,该接口用来启动业务。也可以使用SYS_RUN来实现,效果是一样的。(APP_FEATURE_INIT和SYS_RUN定义都在ohos_init.h)文件中。
2.2 build.gn文件的编写
static_library("helloworld") {
sources = [
"hello_world.c"
]
include_dirs = [
# "//base/iot_hardware/peripheral/interfaces/kits",
"//vendor/bearpi/bearpi_hm_nano/common/iot_hardware_hals/include",
]
# deps = [ "//vendor/bearpi/bearpi_hm_nano/common/iot_hardware_hals:bearpi_iot_hardware_hals" ]
}
static_library 是静态库,也就是编译构建静态库,稍后再编译完成的out/bearpi_hm_nano/libs文件夹下有对应生成的libhello_world.a文件。编译的源文件是hello_world.c,该源文件里面有.h对应的头文件,这些头文件所在路径是//utild/native/lite/include"。路径中包含“//”则表示绝对路径(代码的根路径,即bearpi-hm_nano文件夹)。
2.3编写模块BUILD.gn文件,指定需要参与构建的特性模块
在E:\hi3861_hdu_iot_application240515\src\vendor\bearpi\bearpi_hm_nano\demo目录下新建模块的build.gn文件
文件代码如下:
import("//build/lite/config/component/lite_component.gni")
lite_component("demo") {
features = [
"E1_hello_world:helloworld"
]
}
E1_hello_world 指的是业务代码的 build.gn所在路径,使目标模块参与编译。冒号后的 helloworld指的是该目录下的 BUILD.gn 文件中的static_library("helloworld")
3 编译下载输出打印
3.1编译
3.2下载
提前装好串口驱动
按板子上的reset,自动下载。
3.3打印
4、总结:
在原有模板上建立自己的工程分为三个步骤
1、修改E:\hi3861_hdu_iot_application-master\src\applications\sample\wifi-iot\app\build.gn修改build.gn,是参与构建厂家例程所在目录
2、编写业务代码.c文件和业务代码编译构建build.gn文件
3、编写模块的编译构建文件build.gn