当前位置:   article > 正文

鸿蒙Hi3861学习三-第一个实例程序Hello_world_鸿蒙导入静态库

鸿蒙导入静态库

一、简介

        前两章介绍了环境搭建、烧录和编译。这一节,来介绍实现第一个经典代码“hello world”。

        先介绍小熊派的目录结构,该目录结构延续了OpenHarmony官方目录结构。

二、实操

        1.搭建代码架构

        1).新建项目文件夹hello_world

  1. cd bearpi-hm_nano/applications/BearPi/BearPi-HM_Nano/sample/
  2. mkdir hello_world

        创建hello_world目录,用来存放业务源码文件

        2).新增hello_world.c文件

  1. cd hello_world
  2. touch hello_world.c

        创建hello_world.c文件,该文件为业务源码文件

        3).新增BUILD.gn文件

touch BUILD.gn

        创建BUILD.gn文件,该文件为业务源码编译脚本

        4).最终代码架构展示

  1. .
  2. └── applications
  3. └── BearPi
  4. └── BearPi-HM_Nano
  5. └── sample
  6. │── hello_world
  7. │ │── hello_world.c
  8. │ └── BUILD.gn
  9. └── BUILD.gn

        2.代码编写

        1).编写业务代码

        在hello_world.c文件中增加如下代码:

  1. #include <stdio.h>
  2. #include "ohos_init.h"
  3. void Hello_World(void)
  4. {
  5. printf("this is a test demo \r\n Hello World!\r\n");
  6. }
  7. APP_FEATURE_INIT(Hello_World);

        APP_FEATURE_INITOpenHarmony启动恢复模块接口,该接口用来启动业务。也可以使用SYS_RUN来实现,效果是一样的。(APP_FEATURE_INIT和SYS_RUN定义都在ohos_init.h)文件中。

        2).编写用于将业务构建成静态库的BUILD.hn文件

        在hello_world文件夹的BUILD.gn文件中添加如下代码:

  1. static_library("hello_world"){
  2. sources = [
  3. "hello_world.c"
  4. ]
  5. include_dirs = [
  6. "//utild/native/lite/include"
  7. ]
  8. }

        该文件由三部分内容构成,目标源文件头文件路径

        static_library:该文件中指定业务模块的编译结果,为静态库文件libhello_world.a。

         sources:该文件中指定静态库.a所依赖的.c文件及路径,若路径中包含“//”则表示绝对路径代码的根路径,即bearpi-hm_nano文件夹)。若不包含“//”则表示相对路径。

         incllude_dirs:该文件中指定source所依赖的.h文件路径

         3).编写模块BUILD.gn文件,指定需要参与构建的特性模块

        配置sample文件夹中的BUILD.gn文件。在features字段中增加索引"hello_world:hello_world",使目标模块参与编译

        注意屏蔽其他模块

  1. #"Zx_Developer:zx_develop_sample" ##不参与构建,为开发者贡献演示结构,其中Zx为 Z1,Z2...Z100
  2. #"Z1_hi3861_uart_ylc:uart_hi3861",
  3. #"Z2_hi3861_flash_ylc:flash_example",
  4. "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")

        2.编译

        在项目根目录下,运行编译代码:

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.asmKernel asm文件汇编程序源文件
Hi3861_wifiiot_app.mapKernel map文件程序的全局符号,函数的地址,占用的空间等,用于调试。例如程序崩溃就可以查看这个文件
Hi3861_wifiiot_app.outKernel 输出文件
Hi3861_wifiiot_app_allinone.bin产线烧录文件包含了独立烧写程序和loader程序

包含了2个bin:

Hi3861_boot_signed.bin

Hi3861_wifiiot_app_burn.bin

Hi3861_wifiiot_app_burn.binKernel烧写文件,建议直接使用Hi3861_wifiiot_app_allinone.bin默认包含boot、NV、可执行程序镜像
Hi3861_wifiiot_app_flash_boot_ota.binFlash Boot升级文件
Hi3861_wifiiot_app_ota.binKernel升级文件
Hi3861_wifiiot_app_vercfg.binKernel和Boot的版本号文件
Hi3861_loader_signed.bin烧写工具使用的加载文件只用在烧写,位于内存中。烧写至少需要Hi3861_boot_signed.bin和Hi3861_wifiiot_app_burn.bin这两个文件。Hi3861_wifiiot_app_allinone.bin包含了这两个文件,所以推荐使用allinone文件进行烧录。

        3.烧录

        

         4.复位开发板并查看LOG输出

         完成!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/288629
推荐阅读
相关标签
  

闽ICP备14008679号