IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【鸿蒙设备开发笔记】OpenHarmony源码目录介绍+编译框架介绍 -> 正文阅读

[系统运维]【鸿蒙设备开发笔记】OpenHarmony源码目录介绍+编译框架介绍


【鸿蒙设备开发笔记】OpenHarmony源码目录介绍+编译框架介绍

源码目录

以小熊派为例子,其他开发板也不会差很多
小熊派的源码目录延续OpenHarmony官方目录结构,以下是源码目录的说明:

目录名描述
applicationsBearPi-HM_Nano应用程序样例
base基础软件服务子系统集&硬件服务子系统集
build组件化编译、构建和配置脚本
docs介绍、说明资料
domains增强软件服务子系统集
drivers驱动子系统
foundation系统基础能力子系统集
kernel内核子系统
prebuilts编译器及工具链子系统
test测试子系统
third_party开源第三方组件
utils常用的工具集
vendor厂商提供的软件
build.py编译脚本文件

如果使用hpm方式下载源码,而不是全量代码的话,bocs、domains、drivers可能是没有的,因为暂时没用到

可以对照鸿蒙技术架构图一起理解
鸿蒙

applications目录
在这目录之前可能不同开发板的文件可能有不同,直接往里面点就会看到

目录名内容
docs开发板原理图、相关课程PPT、环境搭建教程等资料
sample开发板案例代码及教程
README.md说明文件

base目录

有各种API相关文件

如外设的api文件路径\base\iot_hardware\interfaces\kits\wifiiot_lite

内有wifi,gpio,串口,i2c等相关的.h文件
在这里插入图片描述

domains目录

可对照技术架构图查看

内有智慧屏专有业务子系统、IOT专有业务子系统、等等多种子系统

可以根据项目需要进行使用,可以进行剪切,不需要的可以不要

kernel目录是内核子系统目录

鸿蒙支持的内核有Linux kernel 、LiteOS

Liteos 又有Liteos_a 、Liteos_m 小熊派开发板用的是Liteos_m

编译框架

鸿蒙采用gn和Ninja来控制代码的编译

GN是一种元构建系统,可以生成Ninja构建文件(Ninja build files)

在Unix或Linux下常使用Makefile来控制代码的编译,但是Makefile速度太慢,所以一套新的控制编译的工具Ninja就诞生了,Ninja相对于Makefile这套工具更注重于编译速度。

编译文件的大概逻辑为

Json文件

在路径 HarmonyOS \ build \ lite \ product下有一个.json文件

若有多个json文件,对应 “开发板名” 的拿个就是你要的

这个文件描述了各个编译模块的路径,如下

subsystem内为模块路径,
在这里插入图片描述

模块编译构造文件 .gn文件

去到刚刚 .json文件 内的模块路径 //applications/BearPi/BearPi-HM_Nano/sample内
有一个BUILD.gn,这个就是模块编译文件
这里其实又是指向了timer_example

? A2_kernel_timer是相对路径,指向./applications/BearPi/BearPi-HM/sample/A2_kernel_timer/BUILD.gn。
?timer_example是目标,指向./applications/BearPi/BearPi-HM/sample/A2_kernel_timer/BUILD.gn中的static_library(“timer_example”)
在这里插入图片描述

业务编译构造文件 .gn文件

在 timer_example 下面又有一个BUILD.gn文件
? static_library中指定业务模块的编译结果,为静态库文件libtimer_example.a,根据实际情况完成填写。
? sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//“则表示绝对路径(此处为代码根路径),若不包含”//"
则表示相对路径。
? include_dirs中指定source所需要依赖的.h文件路径。
在这里插入图片描述
(这里会将这个Timer_example.c,编译成libTimer_example.a文件,最终所有代码会编译为xxxx.bin文件,这个bin文件就是要烧录到开发板的文件)

三个文件下来,就指定编译了我们需要的业务代码

若有错误请大佬指教

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 17:05:14  更:2021-08-23 17:05:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 20:44:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计