鸿蒙移植i.mx6ull(六) Kconfig_GCC_Mkefile(上)

简介: 鸿蒙移植i.mx6ull(六) Kconfig_GCC_Mkefile

1.Kconfig介绍

1670999530751.jpg

参考文档:


任一个Linux内核的Documentation\kbuild\kconfig-language.rst
https://www.rt-thread.org/document/site/programming-manual/kconfig/kconfig/

对于各类内核,只要支持menuconfig配置界面,都是使用Kconfig。

在配置界面中,可以选择、设置选项,这些设置会保存在.config文件里。

Makefile会包含.config,根据里面的值决定编译哪些文件、怎么编译文件。


1.1 配置界面示例

1670999544773.jpg


问题:


这个界面里,各个配置项来自哪里

这个界面里,这些配置项是怎么组织的

这个界面里,我们的选择、设置,结果保存在哪里


1.2 配置结果的保存


1.2.1 示例


在配置界面中操作的结果保存在.config文件中,示例如下:

# LOSCFG_COMPILER_HIMIX_32 is not set
LOSCFG_COMPILER_CLANG_LLVM=y
#
# Platform
#
LOSCFG_PLATFORM="stm32mp157"
# LOSCFG_PLATFORM_HI3516DV300 is not set
# LOSCFG_PLATFORM_HI3518EV300 is not set
LOSCFG_PLATFORM_STM32MP157=y
# LOSCFG_PLATFORM_IMX6ULL is not set
LOSCFG_PLATFORM_BSP_GIC_V2=y
LOSCFG_ARCH_ARM=y
LOSCFG_ARCH_ARM_AARCH32=y
LOSCFG_ARCH_ARM_V7A=y
LOSCFG_ARCH_ARM_VER="armv7-a"
LOSCFG_ARCH_FPU_VFP_V4=y
LOSCFG_ARCH_FPU_VFP_D32=y
LOSCFG_ARCH_FPU_VFP_NEON=y
LOSCFG_ARCH_FPU="neon-vfpv4"
LOSCFG_ARCH_CORTEX_A7=y
LOSCFG_ARCH_CPU="cortex-a7"


Makefile会包含.config文件,它会根据里面的变量比如LOSCFG_PLATFORM_STM32MP157选择单板相关的文件。


1.2.2 配置项的前缀


在Kconfig文件中,假设配置项的名字是XXX,在.config文件中:


默认情况下,它对应的变量名为CONFIG_XXX

如果设置了环境变量CONFIG_=ABC,则对应的变量名为ABC_XXX

在Liteos-a中的Makefile中export CONFIG_=LOSCFG_,所以对应的变量名为LOSCFG_XXX

1670999581340.jpg


1.3 描述单个配置项config


1.3.1 示例


在make menuconfig界面,可以看到这个配置项:

1670999596575.jpg

在配置界面,使用方向箭头游走到Enable FAT Cache Sync Thread后,可以:


输入Y,选择配置项,在.config中对应LOSCFG_FS_FAT_CACHE_SYNC_THREAD=y

输入N,不选择配置项,在.config中对应# LOSCFG_FS_FAT_CACHE_SYNC_THREAD is not set


上图中的配置项怎么实现的? (下面是帮助信息。我们可以通过这个找到kconfig文件)

1670999617582.jpg

grep "FS_FAT_CACHE_SYNC_THREAD" * -nr | grep Kconfig

1670999630147.jpg

在Kconfig文件中,它对应下列代码:

1670999639482.jpg

1.3.2 语法

1670999649610.jpg

解释如下:


config 表示config option,这是Kconfig的基本entry;其他entry是用来管理config的。 config 表示一个配置选项的开始,紧跟着的 FS_FAT_CACHE_SYNC_THREAD 是配置选项的名称。

config 下面几行定义了该配置选项的属性。


属性可以是该配置选项的:类型、输入提示、依赖关系、默认值、帮助信息。


bool 表示配置选项的类型,每个 config 菜单项都要有类型定义,变量有5种类型


bool 布尔类型

tristate 三态类型

string 字符串

hex 十六进制

int 整型

"Enable FAT Cache Sync Thread":提示信息


depends on:表示依赖关系,只有FS_FAT_CACHE被选中,才可以选择FS_FAT_CACHE_SYNC_THREAD


select XXX:表示反向依赖关系,即当前配置选项被选中后,XXX选项就会被选中。


default 表示配置选项的默认值,bool 类型的默认值可以是 y/n。


help 帮助信息,在make menuconfig界面输入H键时,就会提示帮助信息。


1.4 实现菜单menu/endmenu


1.4.1 示例

1670999677718.jpg

1670999684507.jpg

1670999689915.jpg

在Kconfig中,代码如下:

menu "Lib"
config LIB_LIBC
    bool "Enable Libc"
    default y
    help
      Answer Y to enable libc for full code.
config LIB_ZLIB
    bool "Enable Zlib"
    default y
    depends on LIB_LIBC
    help
      Answer Y to enable LiteOS support compress file library.
endmenu


1.4.2 语法


解释如下:


menu "xxx"表示一个菜单,菜单名是"xxx"


menu和endmenu之间的entry都是"xxx"菜单的选项


在上面的例子中子菜单有2个选项:“Enable Libc”、“Enable Zlib”


由于第二个菜单项依赖于第一个菜单项,所以第二个菜单项缩进一格

相关文章
|
Linux 芯片
鸿蒙移植i.mx6ull(十) 系统时钟
鸿蒙移植i.mx6ull(十) 系统时钟
302 0
鸿蒙移植i.mx6ull(十) 系统时钟
|
Shell Python
鸿蒙移植i.mx6ull(十二) 根文件系统
鸿蒙移植i.mx6ull(十二) 根文件系统
198 0
鸿蒙移植i.mx6ull(十二) 根文件系统
|
存储 Linux 内存技术
鸿蒙移植i.mx6ull(十一) 存储设备驱动程序(基于IMX6ULL)
鸿蒙移植i.mx6ull(十一) 存储设备驱动程序(基于IMX6ULL)
317 0
鸿蒙移植i.mx6ull(十一) 存储设备驱动程序(基于IMX6ULL)
|
Shell
鸿蒙移植i.mx6ull(九) 串口移植(基于IMX6ULL)
鸿蒙移植i.mx6ull(九) 串口移植(基于IMX6ULL)
466 0
鸿蒙移植i.mx6ull(九) 串口移植(基于IMX6ULL)
|
C语言
鸿蒙移植i.mx6ull(八) 添加一个单板(下)
鸿蒙移植i.mx6ull(八) 添加一个单板
133 0
鸿蒙移植i.mx6ull(八) 添加一个单板(下)
|
芯片
鸿蒙移植i.mx6ull(八) 添加一个单板(上)
鸿蒙移植i.mx6ull(八) 添加一个单板
306 0
鸿蒙移植i.mx6ull(八) 添加一个单板(上)
|
物联网
鸿蒙移植i.mx6ull (七) Liteos-a的编译系统(下)
鸿蒙移植i.mx6ull (七) Liteos-a的编译系统
331 0
鸿蒙移植i.mx6ull (七) Liteos-a的编译系统(下)
|
1天前
|
UED
鸿蒙next版开发:相机开发-适配不同折叠状态的摄像头变更(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了强大的相机开发能力,特别是针对折叠屏设备的摄像头适配。本文详细介绍了如何在ArkTS中检测和适配不同折叠状态下的摄像头变更,确保相机应用在不同设备状态下的稳定性和用户体验。通过代码示例展示了具体的实现步骤。
20 8
|
1天前
|
API 内存技术
鸿蒙next版开发:相机开发-拍照(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了一套完整的API来管理相机功能,特别是拍照功能。本文详细介绍如何在ArkTS中实现拍照功能,包括导入接口、创建会话、配置会话、触发拍照及监听拍照输出流状态,并提供代码示例进行详细解读。通过本文,你将掌握如何在HarmonyOS 5.0中使用ArkTS实现高效的拍照功能。
18 7
|
1天前
|
监控 开发者
鸿蒙next版开发:使用HiDebug获取调试信息(ArkTS)
在HarmonyOS 5.0中,HiDebug是一个强大的应用调试工具,可帮助开发者获取系统的CPU使用率、内存信息等关键性能数据。本文详细介绍了如何在ArkTS中使用HiDebug,并提供了示例代码,帮助开发者进行性能分析和问题诊断。
16 7

热门文章

最新文章

下一篇
无影云桌面