一、添加Hello World源码文件
1.1 确定目录结构
开发者编写业务时,务必先在 ./applications/BearPi/BearPi-HM_Nano/sample 路径下新建一个目录(或一套目录结构),用于存放业务源码文件。
例如:在 app 下新增业务 my_app,其中 hello_world.c 为业务代码,BUILD.gn 为编译脚本,具体规划目录结构如下:
.
└── applications
└── BearPi
└── BearPi-HM_Nano
└── sample
│── my_first_app
│ │── hello_world.c
│ └── BUILD.gn
└── BUILD.gn
1.2 修改文件夹权限
在Ubuntu中 ./applications/BearPi/BearPi-HM_Nano/sample ,修改sample文件夹权限为可创建和删除文件

1.3 新增my_app文件夹
在VS Code中 ./applications/BearPi/BearPi-HM_Nano/sample 路径下新建一个my_app目录,用于存放业务源码文件。

1.4 新增hello_world.c文件
在VS Code中 ./applications/BearPi/BearPi-HM_Nano/sample/my_app 路径下新建一个hello_world.c文件,该文件为业务源码文件。

1.5 新增BUILD.gn文件
在VS Code中 ./applications/BearPi/BearPi-HM_Nano/sample/my_app 路径下新建一个BUILD.gn文件,该文件为业务源码编译脚本。

二、编写Hello World业务代码
在 hello_world.c 中新建业务入口函数 Hello_World,并实现业务逻辑。并在代码最下方,使用 OpenHarmony 初始化和启动应用层功能接口 APP_FEATURE_INIT() 启动业务。(APP_FEATURE_INIT 定义在 utils\native\lite\include\ohos_init.h 文件中)
#include <stdio.h>
#include "ohos_init.h"
void Hello_World(void)
{
printf("hello world!\r\n");
}
APP_FEATURE_INIT(Hello_World);
三、编写编译构建文件BUILD.gn
3.1 编写用于将业务构建成静态库的BUILD.gn文件
文件位于 ./applications/BearPi/BearPi-HM_Nano/sample/my_app/BUILD.gn

static_library("myapp") {
sources = [
"hello_world.c"
]
include_dirs = [
"//utils/native/liteos/include"
]
}
-
static_library中指定业务模块的编译结果,为静态库文件libmyapp.a,开发者根据实际情况完成填写。 -
sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//"则表示绝对路径(此处为代码根路径),若不包含"//"则表示相对路径。 -
include_dirs中指定source所需要依赖的.h文件路径。
3.2 编写模块BUILD.gn文件,指定需参与构建的特性模块
文件位于 ./applications/BearPi/BearPi-HM_Nano/sample/BUILD.gn

修改读写权限

在features字段中增加索引"my_app:myapp",使目标模块参与编译。
#"D1_iot_wifi_scan:wifi_scan",
#"D2_iot_wifi_connect:wifi_connect",
#"D3_iot_udp_client:udp_client",
#"D4_iot_tcp_server:tcp_server",
#"D5_iot_mqtt:iot_mqtt",
#"D6_iot_cloud_oc:oc_mqtt",
#"D7_iot_cloud_onenet:onenet_mqtt",
"my_app:myapp"
-
my_app是相对路径,指向 ./applications/BearPi/BearPi-HM_Nano/sample/my_first_app/BUILD.gn。 -
myapp是目标,指向 ./applications/BearPi/BearPi-HM_Nano/sample/my_first_app/BUILD.gn 中的static_library("myapp")。
四、调试Hello World程序
然后 hpm dist 进行编译,等待直到屏幕出现:BUILD SUCCESS 字样,说明编译成功。

烧录固件后,查看串口打印:

• 由 Leung 写于 2021 年 5 月 10 日
• 参考:BearPi-HM_Nano开发板第一个示例程序
【鸿蒙2.0设备开发教程】小熊派HarmonyOS 鸿蒙·季 开发教程
