前言
-
u-boot 与 Linux 内核在嵌入式Linux开发中占有重要的地位,掌握 u-boot 的基础开发,可以大大提升开发能力,并提高开发的效率。
-
u-boot 下 如何配置 板级的Kconfig 呢?u-boot 下板级的 Kconfig 是怎么包含到 主目录下 Kconfig 中的呢?
-
下面查看一下 board 下 Kconfig 如何 包含到 主目录下 Kconfig,也就是了解 u-boot 板级 Kconfig 组织关系
开发板示例
-
硬件平台:正点原子 【AtomPi-CA1】rk3568 的开发板
-
代码阅读工具: VSCode
-
手动编译 u-boot,命令为:
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- atompi-ca1_defconfig
-
这里的
atompi-ca1_defconfig
存在与 u-boot 目录下./configs/atompi-ca1_defconfig
Kconfig 包含流程
-
本篇主要记录 Kconfig 的包含流程,比如选择了 ARM 架构、Rockchip系列、RK3568,到某个板子具体配置,这其中的 Kconfig 的配置
-
u-boot 下有 arch 目录,作为 架构, board 目录,作为 板级驱动,而 u-boot 根目录下的 Kconfig 中,并没有 board 相关的Kconfig 路径,只有
arch/Kconfig
-
经过梳理,发现 板级 Kconfig 的包含路径关系如下:
-
u-boot 源码版本: rockchip u-boot 2017.09(较老版本)
-
u-boot 根目录 Kconfig 如下
-
u-boot
arch/Kconfig
如下
-
u-boot
arch/arm/Kconfig
如下:
-
u-boot
arch/arm/mach-rockchip/Kconfig
如下:
- u-boot
arch/arm/mach-rockchip/rk3568/Kconfig
如下:
- u-boot
board/rockchip/evb_rk3568/Kconfig
如下:由 arch 包含 board
- 初步总结,Kconfig 板级包含路径为
Kconfig
--> arch/Kconfig
--> arch/arm/Kconfig
--> arch/arm/mach-rockchip/Kconfig
--> arch/arm/mach-rockchip/rk3568/Kconfig
--> board/rockchip/evb_rk3568/Kconfig
小结
-
u-boot 的板级设备驱动,并没有在 board 中体现,也就是 板级的 Kconfig 其实只是架构相关的一些配置,设备驱动主要由 板级对应的 【设备树 dts】实现
-
u-boot 下的 board 的配置,源于 arch 的配置,通过 arch 中具体平台的 Kconfig,最后包含到 board 目录下的 具体 Kconfig