赞
踩
前两章介绍了环境搭建、烧录和编译。这一节,来介绍实现第一个经典代码“hello world”。
先介绍小熊派的目录结构,该目录结构延续了OpenHarmony官方目录结构。
- cd bearpi-hm_nano/applications/BearPi/BearPi-HM_Nano/sample/
- mkdir hello_world
创建hello_world目录,用来存放业务源码文件。
- cd hello_world
- touch hello_world.c
创建hello_world.c文件,该文件为业务源码文件。
touch BUILD.gn
创建BUILD.gn文件,该文件为业务源码编译脚本。
- .
- └── applications
- └── BearPi
- └── BearPi-HM_Nano
- └── sample
- │── hello_world
- │ │── hello_world.c
- │ └── BUILD.gn
- └── BUILD.gn
在hello_world.c文件中增加如下代码:
- #include <stdio.h>
- #include "ohos_init.h"
-
- void Hello_World(void)
- {
- printf("this is a test demo \r\n Hello World!\r\n");
- }
-
- APP_FEATURE_INIT(Hello_World);
APP_FEATURE_INIT是OpenHarmony启动恢复模块接口,该接口用来启动业务。也可以使用SYS_RUN来实现,效果是一样的。(APP_FEATURE_INIT和SYS_RUN定义都在ohos_init.h)文件中。
在hello_world文件夹的BUILD.gn文件中添加如下代码:
- static_library("hello_world"){
- sources = [
- "hello_world.c"
- ]
- include_dirs = [
- "//utild/native/lite/include"
- ]
- }
该文件由三部分内容构成,目标、源文件、头文件路径。
static_library:该文件中指定业务模块的编译结果,为静态库文件libhello_world.a。
sources:该文件中指定静态库.a所依赖的.c文件及路径,若路径中包含“//”则表示绝对路径(代码的根路径,即bearpi-hm_nano文件夹)。若不包含“//”则表示相对路径。
incllude_dirs:该文件中指定source所依赖的.h文件路径。
配置sample文件夹中的BUILD.gn文件。在features字段中增加索引"hello_world:hello_world",使目标模块参与编译。
注意屏蔽其他模块。
- #"Zx_Developer:zx_develop_sample" ##不参与构建,为开发者贡献演示结构,其中Zx为 Z1,Z2...Z100
- #"Z1_hi3861_uart_ylc:uart_hi3861",
- #"Z2_hi3861_flash_ylc:flash_example",
-
- "hello_world:hello_world"
hello_world(前):是相对路径,指向./applications/BearPi/BearPi-HM_Nano/sample/hello_world/BUILD.gn
hello_world(后):指向 ./applications/BearPi/BearPi-HM_Nano/sample/hello_world/BUILD.gn
中的static_library("hello_world")。
在项目根目录下,运行编译代码:
python build.py BearPi-HM_Nano
编译成功。
编译结束后,会在Out/工程名 文件下生成bin文件。
这里介绍一个各个文件
文件名 | 说明 | 备注 |
Hi3861_boot_signed.bin | 签名的bootloader文件 | Flash boot |
Hi3861_boot_signed_B.bin | 签名的bootloader备份文件 | Flash boot备份 |
Hi3861_wifiiot_app.asm | Kernel asm文件 | 汇编程序源文件 |
Hi3861_wifiiot_app.map | Kernel map文件 | 程序的全局符号,函数的地址,占用的空间等,用于调试。例如程序崩溃就可以查看这个文件 |
Hi3861_wifiiot_app.out | Kernel 输出文件 | |
Hi3861_wifiiot_app_allinone.bin | 产线烧录文件(包含了独立烧写程序和loader程序) | 包含了2个bin: Hi3861_boot_signed.bin Hi3861_wifiiot_app_burn.bin |
Hi3861_wifiiot_app_burn.bin | Kernel烧写文件,建议直接使用Hi3861_wifiiot_app_allinone.bin | 默认包含boot、NV、可执行程序镜像 |
Hi3861_wifiiot_app_flash_boot_ota.bin | Flash Boot升级文件 | |
Hi3861_wifiiot_app_ota.bin | Kernel升级文件 | |
Hi3861_wifiiot_app_vercfg.bin | Kernel和Boot的版本号文件 | |
Hi3861_loader_signed.bin | 烧写工具使用的加载文件 | 只用在烧写,位于内存中。烧写至少需要Hi3861_boot_signed.bin和Hi3861_wifiiot_app_burn.bin这两个文件。Hi3861_wifiiot_app_allinone.bin包含了这两个文件,所以推荐使用allinone文件进行烧录。 |
完成!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。