HI3861学习笔记——打印Hello World

Posted Leung_ManWah

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HI3861学习笔记——打印Hello World相关的知识,希望对你有一定的参考价值。

一、添加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 鸿蒙·季 开发教程

以上是关于HI3861学习笔记——打印Hello World的主要内容,如果未能解决你的问题,请参考以下文章

HI3861学习笔记(12)——GPIO输入接口使用

HI3861学习笔记(25)——接入华为IoT平台

HI3861学习笔记(19)——WiFi接口使用(STA和AP模式)

HI3861学习笔记(18)——UART串口使用

HI3861学习笔记(14)——ADC接口使用

HI3861学习笔记——搭建环境编译烧写