1、LiteOS 中Make体系
顶层 Makefile
在编译时是入口点,从整体上组织所有的 Makefile
文件,并定义终极目标,在这里还定义了与平台无关的很多核心变量与一些很重要的 make
目标。顶层 Makefile
位于内核源码的根目录,下面我们分析顶层 Makefile
的主要工作。
用户在内核目录中键入make menuconfig
之后 ,工作流程如下 :
- 顶 层
Makefile
调用解析顶层Kconfig
文件,获得待配置条目;
- 判断是否有已配置好的
.config
文件,如果有则导入;
- 用户在配置好后,将配置结果存入配置文件。
与Linux
类似LiteOS
的Make
体系顶层 makefile
会通过读取配置文件,递归编译内核代码树的相关目录。
[/kernel_liteos_a/Makefile](https://openharmony.gitee.com/openharmony/kernel_liteos_a/blob/master/Makefile)
##### make menuconfig #####
export CONFIG_=LOSCFG_
MENUCONFIG_PATH = $(LITEOSTOPDIR)/tools/menuconfig
KCONFIG_FILE_PATH = $(LITEOSTOPDIR)/Kconfig
2、LiteOS 中Kconfig的配置
无论在什么平台上,软件配置是用户接触程序的第一步,我们这里是内核配置,那么入口就是Kconfig
文件。
2.1、顶层Kconfig
通过顶层的Kconfig
我们可以看见内核所以支持的功能,类似说明书一样,等待你去打开功能。
例如:
[kernel_liteos_a/Kconfig](https://openharmony.gitee.com/openharmony/kernel_liteos_a/blob/master/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](https://openharmony.gitee.com/openharmony/kernel_liteos_a/blob/master/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.
2.2、具体板级的deconfig文件
可配置说明书有了,我们也不能每次都重新配置一遍把,这个时候就有板级默认配置。
目前LiteOS中Cortex-A
系列处理器内核为例:kernel_liteos_a适配的开发板:hi3518
与hi3516
,并提供了已经配置好的.config
,下来我们以hi3518
为例子对其进行分析。
源文件为:tools/build/config/hi3516dv300_release.config
通过该文件我们可以知道内核配置包括了些什么?
CPU
、开发板、文件系统、驱动程序和调试等大量的待配置信息。
# Automatically generated file; DO NOT EDIT.
# Huawei LiteOS Configuration
# Compiler
...
# Platform
...
# Extra Configurations
...
# Kernel
...
# Lib
...
# Compat
...
# FileSystem
...
# Net
...
# Debug
...
# Driver
LOSCFG_DRIVERS=y
LOSCFG_DRIVERS_USB=y
LOSCFG_DRIVERS_USB_HOST_DRIVER=y
# LOSCFG_DRIVERS_USB_HOST_EHCI is not set
LOSCFG_DRIVERS_USB_HOST_XHCI=y
LOSCFG_DRIVERS_USB_DEVICE_CLASS_DRIVERS=y
后面我们就将以LOSCFG_DRIVERS_USB
为切入点分析源码,但在这之前,我们配置有了,下来就是编译了。