Openharmony轻量设备开发—润和智能家居套件-编译构建系统的使用
source link: https://www.51cto.com/article/762841.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
在上一篇帖子中,我们学习了Openharmony轻量系统的编译构建https://ost.51cto.com/posts/25293,其中包括了子系统,组件的核心理念、编译构建系统的配置规则等等。下面我们来学习一下编译构建系统的使用。
案例:新增组件
1、根据功能准备开发套件
笔者使用的是润和智能家居开发套件,连接主板和核心板。
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
2、编写/合入组件源码
编写组件源码:applications\sample\component_demo\demo.c。
1.在applications/sample下新建component_demo文件夹。
2.在component_demo文件夹下新建文件demo.c。
3.编写如下代码:
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
#include <stdio.h>
#include "ohos_init.h"
void entry(void)
{
printf("I am a component.\r\n");
}
SYS_RUN(entry);
- #include “ohos_init.h” 是Openharmony的特有头文件,它在utils\native\lite\include\ohos_init.h中,在开发中,它提供了一系列入口,用于初始化服务(services)和功能(features)。
- SYS_RUN(entry) 的意思是让entry函数以“优先级2”在系统启动过程中的“阶段4.system startup”阶段执行。
3、编写组件编译脚本
编写组件编译脚本:在applications\sample\component_demo下新建BUILD.gn文件,编写如下代码。
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
static_library("TestComponent"){
sources = [ "demo.c" ]
include_dirs = [
"//utils/native/lite/include",
]
}
- static_library为静态库,“TestComponent"是库名称,最终被编译为"libTestComponent.a”。
- sources里面存放的是源文件。
- include_dirs里存放的是include目录,包括"ohos_init.h"等头文件。
单独编译目标
在组件源码和编译脚本完成之后,我们可以尝试单独编译目标。
首先我们来看一下hb的用法:
打开虚拟机,进去Openharmony的源码目录,鼠标右键选择在终端中打开,输入如下命令:
hb build -h
显示如下:
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
hb build -T 路径:目标
在上面的例子中:
语法为:
hb build -f -T //applications/sample/component_demo:TestComponent
注意:-T是要大写的。
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
可以看到,编译成功完成。
4、添加组件定义
作为一个组件,必须要注册到一个子系统中,Openharmony才会意识到你的存在。
具体内容可以看上一篇帖子:https://ost.51cto.com/posts/25293找到build\lite\components\applications.json
添加如下定义:
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
{
"component":"TestComponent",
"description":"A test component",
"optional":"true",
"dirs":[
"applications/sample/component_demo"
],
"targets":[
"//applications/sample/component_demo:TestComponent"
],
"adapted_kernel":["liteos_m"]
},
添加的内容解释如下:
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
5、将组件配置到产品
找到vendor\hisilicon\hispark_pegasus\config.json,添加如下配置:
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
接着我们再来单独编译组件,这与前面编译目标的效果一样(目标就是一个组件),这样会快捷。
hb build 组件名称
在终端中输入如下命令
hb build -f TestComponent
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
编译结果如上。
这样就不用像之前那样想要编译一个组件,还需要它的路径,会更快捷方便。
6、编译产品
在轻量系统中,单独编译的目标或者是组件是不能够独立运行的,这种编译方式适合发现编译错误,但是要烧录运行的话,我们要进行固件的全量编译(hb build -f)。
接下来我们进行全量编译:
执行以下命令:
hb build -f
编译成功结果如下:
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
7、烧录固件
下面就到了我们熟悉的地方,烧录固件,笔者这里采用的是Hiburn烧录工具,相关细节可以看我这篇贴子:https://ost.51cto.com/posts/25292下面给出烧录成功之后的样子:
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
烧录完成后,点击disconnect,然后关闭Hiburn烧录工具。
运行我们采用的是MobaXterm串口终端工具。相关细节可以看我这篇帖子:https://ost.51cto.com/posts/25292下面给出运行结果:
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
可以看到,成功的编译运行了刚刚的component_demo组件.总结:新增组件的案例就是按照这1-8个步骤来完成。再次附上子系统的构建模型,希望大家能有更深的理解。
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区
Recommend
-
9
OpenHarmony 3.1 Release初体验 润和DAYU200开发套件 精华 万众瞩目的OpenHarmony 3.1 Release版本终于发布了,相关技术特性可以查看文章:
-
2
OpenHarmony 3.1 Release初体验 润和DAYU200开发套件-51CTO.COM OpenHarmony 3.1 Release初体验 润和DAYU200开发套件 作者:连志安 2022-04-01 15:26:06 本期让大家深入了解OpenHarmony 3.1 Release的技术特...
-
7
想了解更多关于开源的内容,请访问:...
-
5
OpenHarmony轻量设备Hi3861芯片开发板启动流程分析 作者:OpenHarmony开发者社区 2022-08-19 10:54:47 OpenHarmony作为一款万物互联的操作系统,覆盖了从嵌入式实时物联网操作系统到移动操作系统的全覆盖,其中内...
-
9
OpenHarmony富设备移植指南(3)OH编译框架适配与定制 原创 精华 1,OH编译框架适配特别说明:OH3.2 beta4我移植过多款设备,输入子系统会开机崩溃,还没找到具体原因,移植的时...
-
4
想了解更多关于开源的内容,请访问:...
-
5
OpenHarmony智能开发套件[驱动开发篇·上] 前面我们介绍了OpenHarmony的内核编程,没有学习的小伙伴们可以参考下面的链接。 OpenHarmony智能开发套件内核编程·下...
-
4
OpenHarmony智能开发套件[驱动开发篇(上) 作者:stackor 2023-05-26 16:01:32 驱动开发是指为操作系统或硬件设备编写软件驱动程序的过程。驱动程序是一种特殊的软件,它与操作系统或硬件设备进行交互,以使它...
-
2
OpenHarmony智能开发套件[驱动开发篇(下) 作者:stackor 2023-05-30 14:58:05 本章将介绍如何IO控制温湿度传感器,可燃气体传感器,RGB灯,人体红外传感器,光敏电阻,Oled显示屏。
-
1
openharmony的编译构建系统 一个基于gn和ninja的、以支持OpenHarmony组件化开发为目标的现代化编译构建系统。 ninja:一个专注于速度的小型编译构建系统. gn:一种现代化的跨平台...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK