文档章节

uboot中Kconfig架构的理解

o
 osc_wws45aot
发布于 2019/08/20 15:03
字数 786
阅读 35
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1./u-boot-2019.07/Kconfig 是顶层Kconfig

mainmenu "U-Boot $UBOOTVERSION Configuration"  #这是总menu

 

2.source "arch/Kconfig"  #然后就引用了arch目录下的Kconfig 这个Kconfig中可以选择不同的架构,有arm M68K MIPS等

choice
    prompt "Architecture select"
    default SANDBOX

config ARC
    bool "ARC architecture"
    select ARCH_EARLY_INIT_R
    select ARC_TIMER
    select CLK
    select HAVE_PRIVATE_LIBGCC
    select SUPPORT_OF_CONTROL
    select TIMER

config ARM
    bool "ARM architecture"
    select CREATE_ARCH_SYMLINK
    select HAVE_PRIVATE_LIBGCC if !ARM64
    select SUPPORT_OF_CONTROL

config M68K
    bool "M68000 architecture"
    select HAVE_PRIVATE_LIBGCC
    select SYS_BOOT_GET_CMDLINE
    select SYS_BOOT_GET_KBD
    select SUPPORT_OF_CONTROL

config MICROBLAZE
    bool "MicroBlaze architecture"
    select SUPPORT_OF_CONTROL
    imply CMD_IRQ

.

.

.

source "arch/arc/Kconfig"
source "arch/arm/Kconfig"
source "arch/m68k/Kconfig"
source "arch/microblaze/Kconfig"  #最后引入了各个架构目录下的Kconfig

 

3./u-boot-2019.07/arch/arm/Kconfig

menu "ARM architecture"
    depends on ARM

config SYS_ARCH
    default "arm" #这里定义了CONFIG_SYS_ARCH

config CPU_V7A
    bool
    select HAS_THUMB2
    select HAS_VBAR
    select SYS_CACHE_SHIFT_6
    imply SYS_ARM_MMU  #CPU_V7A还会选择一些宏定义开

config SYS_CPU
    default "arm720t" if CPU_ARM720T
    default "arm920t" if CPU_ARM920T
    default "arm926ejs" if CPU_ARM926EJS
    default "arm946es" if CPU_ARM946ES
    default "arm1136" if CPU_ARM1136
    default "arm1176" if CPU_ARM1176
    default "armv7" if CPU_V7A
    default "armv7" if CPU_V7R
    default "armv7m" if CPU_V7M
    default "pxa" if CPU_PXA
    default "sa1100" if CPU_SA1100
    default "armv8" if ARM64   #这里定义了CONFIG_SYS_CPU(需要预先定义CPU_V7A)

 

choice
    prompt "Target select"
    default TARGET_HIKEY

config ARCH_S5PC1XX
    bool "Samsung S5PC1XX"
    select CPU_V7A
    select DM
    select DM_GPIO
    select DM_I2C
    select DM_SERIAL
    imply CMD_DM

config ARCH_ZYNQ
    bool "Xilinx Zynq based platform"
    select BOARD_EARLY_INIT_F if WDT
    select CLK
    select CLK_ZYNQ
    select CPU_V7A
    select DM
    select DM_ETH if NET
    select DM_MMC if MMC
    select DM_SERIAL
    select DM_SPI
    select DM_SPI_FLASH
    select DM_USB if USB
    select OF_CONTROL
    select SPI
    select SPL_BOARD_INIT if SPL
    select SPL_CLK if SPL
    select SPL_DM if SPL
    select SPL_OF_CONTROL if SPL
    select SPL_SEPARATE_BSS if SPL
    select SUPPORT_SPL
    imply ARCH_EARLY_INIT_R
    imply BOARD_LATE_INIT
    imply CMD_CLK
    imply CMD_DM
    imply CMD_SPL
    imply FAT_WRITE  #在这里选择了CPU_V7A      ARCH_S5PC1XX ARCH_ZYNQ在menuconfig中选中即定义了。

 

source "arch/arm/mach-s5pc1xx/Kconfig"

source "arch/arm/mach-zynq/Kconfig" #如果有mach需要将Kconfig加入

好像并没有包含source "board/samsung/goni/Kconfig"

source "board/xilinx/zynq/Kconfig" #将board中的Kconfig加入

 

 

4.arch/arm/mach-s5pc1xx/Kconfig 答案在这里,s5pc1xx下有两个board需要选择,这其中包含了source "board/samsung/goni/Kconfig",所以每家公司的代码风格不大一样。

if ARCH_S5PC1XX

choice
    prompt "S5PC1XX board select"
    optional

config TARGET_S5P_GONI
    bool "S5P Goni board"
    select OF_CONTROL
    select BLK
    select DM_MMC #选中goni board

config TARGET_SMDKC100
    bool "Support smdkc100 board"
    select OF_CONTROL

endchoice

config SYS_SOC
    default "s5pc1xx"

source "board/samsung/goni/Kconfig"
source "board/samsung/smdkc100/Kconfig"

endif

5.arch/arm/mach-zynq/Kconfig #定义了SYS_BOARD等 而s5pc1xx不是在这里定义的。

if ARCH_ZYNQ

config SPL_LDSCRIPT
    default "arch/arm/mach-zynq/u-boot-spl.lds"


config SYS_BOARD
    string "Board name"
    default "zynq"

config SYS_VENDOR
    string "Vendor name"
    default "xilinx"

config SYS_SOC
    default "zynq"


endif

 

6.board/samsung/goni/Kconfig #定义了SYS_BOARD等 在arch/arm/mach-s5pc1xx/Kconfig下一层因为if TARGET_S5P_GONI是 arch/arm/mach-s5pc1xx/Kconfig中选定的

 

if TARGET_S5P_GONI

config SYS_BOARD
    default "goni"

config SYS_VENDOR
    default "samsung"

config SYS_SOC
    default "s5pc1xx"

config SYS_CONFIG_NAME
    default "s5p_goni"

endif

7.board/xilinx/zynq/Kconfig  和arch/arm/mach-zynq/Kconfig 感觉平行层级 都用的if ARCH_ZYNQ

# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2018, Xilinx, Inc.

if ARCH_ZYNQ

config CMD_ZYNQ
    bool "Enable Zynq specific commands"
    default y
    help
      Enables Zynq specific commands.

config CMD_ZYNQ_AES
    bool "Enable zynq aes command for decryption of encrypted images"
    depends on CMD_ZYNQ
    depends on FPGA_ZYNQPL
    help
      Decrypts the encrypted image present in source address
      and places the decrypted image at destination address.

config CMD_ZYNQ_RSA
    bool "Enable zynq rsa command for loading secure images"
    default y
    depends on CMD_ZYNQ
    depends on CMD_ZYNQ_AES
    help
      Enabling this will support zynq secure image verification.
      The secure image is a xilinx specific BOOT.BIN with
      either authentication or encryption or both encryption
      and authentication feature enabled while generating
      BOOT.BIN using Xilinx bootgen tool.

endif

 

在Kconfig体系结构中,可以明显看到这样一个顺序

1.选架构 ARCH  arm

2.选Target ARCH 平台 某一系列

3.选Board 即具体的板子

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
NXP官方的I.MX6UL板级Uboot源码适配

1、前言 CoM-P6UL是盈鹏飞科技有限公司基于NXP原厂I.MX6UL芯片生产研发的核心板,本文将对CoM-P6UL适配NXP的基于Linux4.1.15版本的uboot板级源码的过程进行介绍。 2、开发环境 目标板:CoM-P...

osc_ddwjgohl
2019/11/30
3
0
tiny4412移植uboot-2019-01(三)

开发环境:win7 64位 + Ubuntu16.04 64位 开发板:tiny4412ADK + S700 + 4GB eMMC + 1G DDR3 工具链:友善之臂提供的 arm-linux-gnueabihf- (gcc version 6.3.0) //低版本的工具编译不了最新...

白鲸入海
03/31
0
0
一、配置介绍

1.1 常用命令     当前 uboot 的配置已经完全变成Linux 内核的配置形式了,完全可以按照Linux 内核的分析方是区分析 uboot。   uboot 和 Linux的代码配置项由 Kconfig 来完成的,关于 ...

osc_gq0nahbo
2018/04/28
0
0
uboot移植一uboot架构分析

开发环境:   1 .开发板mini2440   2. u-boot-2010.12 参考i资料:https://blog.csdn.net/androidbbc/article/details/50961163       http://www.cnblogs.com/kele-dad/p/8969174.......

osc_yztbpii7
2018/05/21
4
0
三、编译第一步 make xxx_defconfig——Makefile.build 脚本

3.1 上章分析回顾 3.1 上章分析出的参数 3.1.1 变量 MAKECMDGOALS = xxx_defconfig KBUILD_EXTMOD = versionh := include/generated/versionautogenerated.h timestamph := include/generate......

osc_o9gnlxa0
2018/05/02
4
0

没有更多内容

加载失败,请刷新页面

加载更多

setShadowLayer阴影与SetMaskFilter发光效果

一、setShadowLayer构造函数 public void setShadowLayer(float radius, float dx, float dy, int color) radius:模糊半径,radius越大越模糊,越小越清晰,但是如果radius设置为0,则阴...

IamOkay
10分钟前
12
0
做儿媳的,千万不要把婆婆当亲妈看

我和老公结婚有三四个年头了,还生育了两个调皮可爱的孩子。在别人眼里,我就像掉进了福窝里一样。然而我有时候在老公面前耍小性子,撒娇卖萌什么样的,婆婆却指责我不守妇道。 结婚起初婆家...

创业hzcya
20分钟前
0
0
多线程之线程部分

① 进程与线程 程序、进程、线程、协程的概念 程序: 用某种语言编写的一组指令的集合,即指一段静态的代码; 进程:简单地说就是一个正在执行的程序或应用,是资源分配的最小单位; 线程:线...

Arno_pei
32分钟前
0
0
08VulKan——描述符布局、缓冲、描述符池和描述符集

整体思想: 对于一些所有顶点都共享的属性,比如顶点的变换矩阵,将它们作为顶点属性为每个顶点都传递一份显然是非常浪费的 。VulKan提出使用资源描述符解决这种全局变量, 描述符是用来在着...

黑白双键
43分钟前
7
0
将分段视频合并

环境 操作系统:Ubuntu Kylin 优麒麟 20.04 LTS 适用架构:AMD64、ARM64(鲲鹏、飞腾) 方法 将下载的视频分片段放入同一个文件夹。按片段排序的文件名汇入list.txt。 ls qq_video*.mp4 | s...

chipo
46分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部