首页 > 其他分享 >【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用

时间:2023-08-10 12:33:05浏览次数:43  
标签:Openharmony 智能家居 component hb 编译 demo 组件 include 轻量

在上一篇帖子中,我们学习了Openharmony轻量系统的编译构建https://ost.51cto.com/posts/25293,其中包括了子系统,组件的核心理念、编译构建系统的配置规则等等。下面我们来学习一下编译构建系统的使用。

案例:新增组件

1:根据功能准备开发套件

笔者使用的是润和智能家居开发套件,连接主板和核心板。 EKB9QDDXIB9I03_~QL5.png

2:编写/合入组件源码

编写组件源码:applications\sample\component_demo\demo.c 1.在applications/sample下新建component_demo文件夹 2.在component_demo文件夹下新建文件demo.c 3.编写如下代码: H3~AS12XP684MNB6C8C.png

#include <stdio.h>
 #include "ohos_init.h"
 void entry(void)
 {
   printf("I am a component.\r\n");
 }
 SYS_RUN(entry);

其中: 1: #include "ohos_init.h" 是Openharmony的特有头文件,它在utils\native\lite\include\ohos_init.h中,在开发中,它提供了一系列入口,用于初始化服务(services)和功能(features)。 2:SYS_RUN(entry) 的意思是让entry函数以“优先级2”在系统启动过程中的“阶段4.system startup”阶段执行。

3:编写组件编译脚本

编写组件编译脚本:在applications\sample\component_demo下新建BUILD.gn文件,编写如下代码 DFP9VNFWAW6XBMHRVAY.png

static_library("TestComponent"){

   sources = [ "demo.c" ]

   include_dirs = [
       "//utils/native/lite/include",
   ]
}

1.static_library为静态库,"TestComponent"是库名称,最终被编译为"libTestComponent.a" 2.sources里面存放的是源文件 3.include_dirs里存放的是include目录,包括"ohos_init.h"等头文件。

单独编译目标

在组件源码和编译脚本完成之后,我们可以尝试单独编译目标。

首先我们来看一下hb的用法:

打开虚拟机,进去Openharmony的源码目录,鼠标右键选择在终端中打开,输入如下命令:

hb build -h

显示如下:2DJ_8GEJ68CP9Y6DC.png

语法:
 hb build -T 路径:目标

在上面的例子中: 语法为:

 hb build -f -T //applications/sample/component_demo:TestComponent

注意:-T是要大写的。 PKIM67NMIWIEPT0X1.png 96GDO8WZUWOA18XUYL40L.png 可以看到,编译成功完成。

4:添加组件定义

作为一个组件,必须要注册到一个子系统中,Openharmony才会意识到你的存在。 具体内容可以看上一篇帖子:https://ost.51cto.com/posts/25293 找到build\lite\components\applications.json

添加如下定义: ~PWRELFVJ4SW_~ZJV_8JT.png

{
      "component":"TestComponent",
      "description":"A test component",
      "optional":"true",
      "dirs":[
        "applications/sample/component_demo"
      ],
      "targets":[
        "//applications/sample/component_demo:TestComponent"
      ],
      "adapted_kernel":["liteos_m"]
    },

添加的内容解释如下: GF1BHLHCP610SGPQ.png

5:将组件配置到产品

找到vendor\hisilicon\hispark_pegasus\config.json,添加如下配置: 4LEL37ASXTDA56QEF4N_K.png

接着我们再来单独编译组件,这与前面编译目标的效果一样(目标就是一个组件),这样会快捷。

语法:

 hb build 组件名称

在终端中输入如下命令

hb build -f TestComponent

7ZHQB~NCL6UPFJAKNNA.png 编译结果如上。 这样就不用像之前那样想要编译一个组件,还需要它的路径,会更快捷方便。

6:编译产品

在轻量系统中,单独编译的目标或者是组件是不能够独立运行的,这种编译方式适合发现编译错误,但是要烧录运行的话,我们要进行固件的全量编译(hb build -f)。

接下来我们进行全量编译: 执行以下命令:

hb build -f

编译成功结果如下: BEFJW.png `YWB26P3P6O1WYITQTA.png

7:烧录固件

下面就到了我们熟悉的地方,烧录固件,笔者这里采用的是Hiburn烧录工具,相关细节可以看我这篇贴子:https://ost.51cto.com/posts/25292 下面给出烧录成功之后的样子:X5_~KDKJCD4EHDO9E6C0W.png 烧录完成后,点击disconnect,然后关闭Hiburn烧录工具。

8:运行

运行我们采用的是MobaXterm串口终端工具。相关细节可以看我这篇帖子:https://ost.51cto.com/posts/25292 下面给出运行结果: FYH0BSHKD5ND0G5BMZ0.png 可以看到,成功的编译运行了刚刚的component_demo组件.

总结:新增组件的案例就是按照这1-8个步骤来完成。再次附上子系统的构建模型,希望大家能有更深的理解。 ABCPX7PJA9T9~K9Y5.png 以上内容如有不足之处,欢迎大家留言指出。希望我们共同努力加油!

本文作者:sunqihan

想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com/#bkwz​

标签:Openharmony,智能家居,component,hb,编译,demo,组件,include,轻量
From: https://blog.51cto.com/harmonyos/7033075

相关文章

  • 关于智能家居可视化管理平台的建议
    一、方案背景随着现代信息社会的发展,人民的生活水准也在不断提升,人身及财产的安全的需求越来越高。老人在家带孩子的现象普遍存在,老人和小孩成了年轻人的牵挂,工作之余都会都想看看家里的情况。有时候出门忘记关火、带东西等,只能回去处理,浪费时间。传统的家庭防盗监控系统误报率高,无......
  • 三维模型OSGB格式轻量化压缩必要性分析
    三维模型OSGB格式轻量化压缩必要性分析三维模型是计算机图形学和视觉效果等领域的重要应用之一。然而,由于三维模型通常包含大量的几何信息、纹理信息和其他元素,导致其占用的存储空间和计算资源非常巨大。为了提高三维模型的处理效率和性能,轻量化和压缩成为不可或缺的技术手段。......
  • 关于用腾讯云轻量服务器搭建雷池waf出现掉监控解决方案
    前言用腾讯云轻量服务器搭建了雷池waf后发现腾讯云的监控也掉(腾讯内网的软件都掉线了),安装宝塔的Nginx也报错,找宝塔运维排查过后,发现是腾讯源的问题,说到腾讯云源大概知道是内网冲突了,之前找研发看过类似的问题。问题分析1).安装雷池waf后无法ping通腾讯内网metadata.tencentyun......
  • 如何在轻量级RTSP服务支持H.264扩展SEI发送接收自定义数据?
    为什么开发轻量级RTSP服务?开发轻量级RTSP服务的目的是为了解决在某些场景下用户或开发者需要单独部署RTSP或RTMP服务的问题。这种服务的优势主要有以下几点:便利性:通过轻量级RTSP服务,用户无需配置单独的服务器,降低了部署和配置的复杂性(无论是走RTMP还是GB28181,均需要平台服务支撑)。......
  • K3s vs K8s:轻量级和全功能的对决
    Kubernetes,通常缩写为K8s,是领先的容器编排工具。该开源项目最初由Google开发,帮助塑造了现代编排的定义。该系统包括了部署和运行容器化系统所需的一切。社区供应商基于Kubernetes创建了适用于不同用例的独立发行版。K3s[1] 是由Rancher创建的一种kubernetes流行发行版,现......
  • 重磅开源:超轻量3.5M中英文OCR模型!
     Datawhale推荐 开源框架:超轻量OCR模型-PaddleOCR导读不得不说,2020年绝对是OCR开源界的丰收年,各种开源repo横空出世,一次又一次的刷新开源界的baseline,今天再次给大家种个草,介绍今年OCR开源领域“真.良心之作”百度飞桨PaddleOCR。先看下飞桨文字识别套件PaddleOCR自今年年中开源......
  • 【OpenHarmony内核编程接口】介绍定时器管理两种定时器以及案例演示
    前言本文介绍了内核编程接口之软定时器软定时器软定时器含义软件定时器(Timer),是基于系统时钟tick且由软件来模拟的定时器,当经过设定的tick计数值后会触发用户定义的回调函数ps1:定时器触发函数的执行,不是线程ps2:当定时器到期时,将执行回调函数以运行特定的代码ps3:定时精度......
  • 基于分级安全的OpenHarmony架构设计
     本文转载自 OpenHarmony TSC 官方微信公众号《峰会回顾第1期 | 基于分级安全的OpenHarmony架构设计》演讲嘉宾 | 付天福回顾整理 | 廖   涛排版校对 | 李萍萍 嘉宾简介付天福,OpenHarmony技术指导委员会安全及机密计算TSG负责人,华为公司科学家委员会副......
  • nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,
    nps  nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。背景做微......
  • Typecho建站:腾讯云轻量应用服务器搭建博客网站教程
    腾讯云轻量应用服务器自带Typecho应用模板镜像,腾讯云提供的Typecho模板镜像是基于CentOS7.664位操作系统,并已预置Nginx、PHP、MariaDB软件程序,使用Typecho应用模板可以快速搭建博客、企业官网、电商及论坛等各类网站。腾讯云服务器网分享使用腾讯云轻量应用服务器Typecho应用模板......