赞
踩
以小熊派为例子,其他开发板也不会差很多
小熊派的源码目录延续OpenHarmony官方目录结构,以下是源码目录的说明:
目录名 | 描述 |
---|---|
applications | BearPi-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这套工具更注重于编译速度。
编译文件的大概逻辑为
在路径 HarmonyOS \ build \ lite \ product下有一个.json文件
若有多个json文件,对应 “开发板名” 的拿个就是你要的
这个文件描述了各个编译模块的路径,如下
subsystem内为模块路径,
去到刚刚 .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”)
在 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文件就是要烧录到开发板的文件)
三个文件下来,就指定编译了我们需要的业务代码
若有错误请大佬指教
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。