深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
1、获取源码
OpenHarmony
是HarmonyOS
的开源版,由华为捐赠给开放原子开源基金会(OpenAtom Foundation
)开源。第一个开源版本支持在128KB~128MB
设备上运行,欢迎参加开源社区一起持续演进。
代码仓库地址1:https://codechina.csdn.net/openharmony
代码仓库地址2:https://openharmony.gitee.com
本专栏主要分析OpenHarmony
内核的相关代码:
Cortex-A系列处理器内核:kernel_liteos_a
Cortex-M系列处理器内核:kernel_liteos_m
2、什么是LiteOS
Huawei LiteOS
是华为针对物联网领域推出的轻量级物联网操作系统,是华为物联网战略的重要组成部分,具备轻量级、低功耗、互联互通、组件丰富、快速开发等关键能力,基于物联网领域业务特征打造领域性技术栈,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期,可广泛应用于可穿戴设备、智能家居、车联网、LPWA
等领域。
Huawei LiteOS
微内核在OpenHarmony
源码中所处的位置:
3、LiteOS的目录介绍
我们以Cortex-A
系列处理器内核为例:kernel_liteos_a
可以看到有12目录、4个文件。
- 目录的作用
名称 | 描述 |
---|---|
apps | 用户态的init和shell应用程序。 |
arch | 体系架构的目录,如arm等。 |
bsd | freebsd相关的驱动和适配层模块代码引入,例如USB等。 |
compat | 内核posix接口的兼容。 |
fs | 文件系统模块,主要来源于NuttX开源项目。 |
kernel | 进程、内存、IPC等模块。 |
lib | 内核的lib库。 |
net | 网络模块,主要来源于lwip开源项目。 |
platform | 支持不同的芯片平台代码,如Hi3516DV300等。 |
security | 安全特性相关的代码,包括进程权限管理和虚拟id映射管理。 |
syscall | 系统调用。 |
tools | 构建工具及相关配置和代码。 |
- 文件的作用
名称 | 描述 |
---|---|
Makefile | 存储了源码文件构建目标文件的规则,具体是否按着规则去执行还要看配置变量。 |
Kconfig | 配置变量 |
config.mk | 主要进行编译选项的设置、编译工具的定义、编译时包含的文件、编译的链接地址。 |
build.sh | 编译脚本 |
4、LiteOS 中Make体系
顶层 Makefile
在编译时是入口点,从整体上组织所有的 Makefile
文件,并定义终极目标,在这里还定义了与平台无关的很多核心变量与一些很重要的 make
目标。顶层 Makefile
位于内核源码的根目录,下面我们分析顶层 Makefile
的主要工作。
用户在内核目录中键入make menuconfig
之后 ,工作流程如下 :
- 顶 层
Makefile
调用解析顶层Kconfig
文件,获得待配置条目; - 判断是否有已配置好的
.config
文件,如果有则导入; - 用户在配置好后,将配置结果存入配置文件。
与Linux
类似LiteOS
的Make
体系顶层 makefile
会通过读取配置文件,递归编译内核代码树的相关目录。
/kernel_liteos_a/Makefile
make menuconfig
export CONFIG_=LOSCFG_
MENUCONFIG_PATH = $(LITEOSTOPDIR)/tools/menuconfig
KCONFIG_FILE_PATH = $(LITEOSTOPDIR)/Kconfig
5、LiteOS 中Kconfig的配置
无论在什么平台上,软件配置是用户接触程序的第一步,我们这里是内核配置,那么入口就是Kconfig
文件。
5.1、顶层Kconfig
通过顶层的Kconfig
我们可以看见内核所以支持的功能,类似说明书一样,等待你去打开功能。
例如:
//包含其他的Kconfig
source “…/…/vendor/hisi/hi35xx/platform/hiedmac/Kconfig”
source “…/…/kernel/liteos_a/bsd/dev/usb/Kconfig”
source “…/…/drivers/hdf/lite/Kconfig”
config USB_DEBUG
bool “Enable USB Debug”
default n
depends on SHELL && DRIVERS_USB && DEBUG_VERSION
help
Answer Y to enable LiteOS support usb debug.
use shell command to open the specified debug level print.
config MEM_DEBUG
bool “Enable MEM Debug”
default n
depends on DEBUG_VERSION
help
Answer Y to enable LiteOS support mem debug.
通过source
加载其他的Kconfig
例如加载USB
相关配置
kernel_liteos_a/bsd/dev/usb/Kconfig:
config DRIVERS_USB
bool “Enable USB”
default y
depends on DRIVERS && COMPAT_BSD
help
Answer Y to enable LiteOS support usb.
config DRIVERS_USB_HOST_DRIVER
bool “Enable USB HCD”
default y
depends on DRIVERS_USB && DRIVERS
help
Answer Y to enable LiteOS to support usb host controller driver.
…
5.2、具体板级的deconfig文件
可配置说明书有了,我们也不能每次都重新配置一遍把,这个时候就有板级默认配置。
目前LiteOS中Cortex-A
系列处理器内核为例:kernel_liteos_a适配的开发板:hi3518
与hi3516
,并提供了已经配置好的.config
,下来我们以hi3518
为例子对其进行分析。
源文件为:tools/build/config/hi3516dv300_release.config
[图片上传失败…(image-5e5f6e-1600494723897)]
通过该文件我们可以知道内核配置包括了些什么?
CPU
、开发板、文件系统、驱动程序和调试等大量的待配置信息。
Automatically generated file; DO NOT EDIT.
Huawei LiteOS Configuration
Compiler
…
Platform
…
Extra Configurations
…
Kernel
…
Lib
…
Compat
…
FileSystem
…
Net
…
Debug
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新