ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OpenHarmony编写命令行软件HelloWorld

2021-12-03 09:33:04  阅读:262  来源: 互联网

标签:OpenHarmony 组件 rpi3 HelloWorld 编译 命令行 ohos device 子系统


文章目录

1. 目的

编译命令行工具 HelloWorld,测试编译环境及项目配置
开发硬件环境:树莓派 3B+

2. 官方开发文档

根据开发硬件,选择文档标准系统编译构建指导(在这费了半天劲,找错了相关文档)

2.1. 基本概念

  • 平台
    开发板和内核的组合,不同平台支持的子系统和组件不同。平台基于硬件和内核,在项目中,~/ohos/openharmony/vendor/rpi3 目录下有 rpi 平台下相关的配置;软件的自定义的配置可以通过~/ohos/openharmony/device/rpi3 定制
  • 子系统
    OpenHarmony 整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或组件。子系统是一个逻辑概念,它具体由对应的组件构成。我们这次的实现方式为在~/ohos/openharmony/device/rpi3 子系统下增加组件
  • 组件
    对子系统的进一步拆分,可复用的软件单元,它包含源码、配置文件、资源文件和编译脚本;能独立构建,以二进制方式集成,具备独立验证能力的二进制单元。本次创建名为 HelloWorld 的组件
  • gn
    Generate ninja 的缩写,用于产生 ninja 文件。
  • ninja
    ninja 是一个专注于速度的小型构建系统。

3. 源码实现

3.1. 工程目录

相对于~/ohos/openharmony 目录

device
├── rpi3
│   ├── rpi3
│   │   ├── hbis
│   │   │   ├── BUILD.gn
│   │   │   ├── src
│   │   │      │── main.c
│   │   ├── BUILD.gn

3.2. 源代码

  • device/rpi3/rpi3/hbis/src/main.c
#include <stdio.h>

int main(int argc, char **argv)
{
    printf("\n************************************************\n");
    printf("\n\t\tHello HBIS!\n");
    printf("\n************************************************\n\n");

    return 0;
}
  • device/rpi3/rpi3/hbis/BUILD.gn
import("//build/ohos.gni")

group("hello-OHOS") {
  deps = [
    ":helloworld",
  ]
}
ohos_executable("helloworld") {
  sources = [ "src/main.c" ]
  output_name = "helloworld"
  install_enable = true
  part_name = "rpi3_products"
}
  • device/rpi3/rpi3/BUILD.gn
import("//build/ohos.gni")

print("rpi3_group in")
group("rpi3_group") {
  deps = [
    "hbis:hello-OHOS",
  ]
}
...

}

3.3. 源码见

OpenHarmony 树莓派 3B+ helloworld程序

4. 编译与烧录

4.1. 编译指令

python3 build-rpi3.py build

4.2. 镜像烧录

固件位置生成位置 out/ohos-arm-release/packages/phone/images/firmware.img
使用 Win32DiskImager 进行烧录

4.3. 应用测试

连接 rpi,输入指令:helloworld,即可打印输出

标签:OpenHarmony,组件,rpi3,HelloWorld,编译,命令行,ohos,device,子系统
来源: https://blog.csdn.net/lxmuyu/article/details/121691353

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有