1

/u-boot-2019.07/Kconfig

source "arch/Kconfig"

2

/u-boot-2019.07/arch/Kconfig  -->有一个一个选项,可以选择ARM architecture

choice
    prompt "Architecture select"
    default SANDBOX

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

source "arch/arm/Kconfig"

3

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

menu "ARM architecture"
    depends on ARM           #依赖上一层选择了ARM

config SYS_ARCH
    default "arm"          #CONFIG_SYS_ARCH 默认 arm

config ARM64
    bool                        #bool没有设置,这时候依赖别的项来select bool有设置的可以手动选择
    select PHYS_64BIT
    select SYS_CACHE_SHIFT_6

choice       #在这里选machine
    prompt "Target select"
    default TARGET_HIKEY

#以mx6为例

config ARCH_MX6     #machine 有一个配置项可以选 这里选的只是MX6架构的,这个架构下可能还有很多类型板卡,接着看怎么处理的。
    bool "Freescale MX6"
    select CPU_V7A  
    select SYS_FSL_HAS_SEC if SECURE_BOOT
    select SYS_FSL_SEC_COMPAT_4
    select SYS_FSL_SEC_LE
    select SYS_THUMB_BUILD if SPL
    imply MXC_GPIO

config CPU_V7A #选择V7A需要再选择以下部分
    bool
    select HAS_VBAR
    select HAS_THUMB2
    select SYS_CACHE_SHIFT_6
    imply SYS_ARM_MMU

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    #在这里选了SYS_CPU
    default "armv7" if CPU_V7R
    default "armv7m" if CPU_V7M
    default "pxa" if CPU_PXA
    default "sa1100" if CPU_SA1100
    default "armv8" if ARM64

if ARCH_MX6
config SPL_LDSCRIPT
    default "arch/arm/mach-omap2/u-boot-spl.lds"
endif

config ARCH_OWL
    bool "Actions Semi OWL SoCs"
    select ARM64           #在这里选了ARM64,再通过ARM64去选别的
    select DM
    select DM_SERIAL
    select OF_CONTROL
    imply CMD_DM

source "arch/arm/mach-imx/Kconfig"  #整个imx的一些配置 根据选择的板子不同 反过来在这里配置一些通用的东西

source "arch/arm/mach-imx/mx6/Kconfig" #mx6的一些配置 在这里选板子board

#应该还有board的config 各家公司代码不同 source "board/freescale/mx6ullevk/Kconfig"

但我思考了一下,觉得Freescale的代码风格还不错,

arch/Kconfig 选ARCH arm 包含arch/arm/Kconfig

arch/arm/Kconfig 选machine 包含arch/arm/mach-imx/Kconfig 和 arch/arm/mach-imx/mx6/Kconfig

这是公司名称                                   这是machine

arch/arm/mach-imx/mx6/Kconfig 选board 包含board/freescale/mx6ullevk/Kconfig

4

/u-boot-2019.07/arch/arm/mach-imx/mx6/Kconfig

if ARCH_MX6
choice                                              #在这里选板子board
    prompt "MX6 board select"
    optional

config TARGET_MX6ULL_14X14_EVK
    bool "Support mx6ull_14x14_evk"
    select BOARD_LATE_INIT
    select DM
    select DM_THERMAL
    select MX6ULL
    imply CMD_DM

config SYS_SOC  #这里定义了SYS_SOC
    default "mx6"

source "board/freescale/mx6ullevk/Kconfig"

5

/u-boot-2019.07/board/freescale/mx6ullevk/Kconfig

if TARGET_MX6ULL_14X14_EVK

config SYS_BOARD
    default "mx6ullevk"

config SYS_VENDOR
    default "freescale"

config SYS_CONFIG_NAME
    default "mx6ullevk"

endif

总结一下:

1.就是在arch目录下的Kconfig中选了ARM

2.然后在arch/arm目录下的Kconfig中选了Machine(mach-xx),这个可以理解为soc,fmshql,如果以后有其他系列也可以列入 mach-zynq mach-zynqmp

3.在arch/arm/mach-xx目录下选中board,board目录下的Kconfig配置SYS_BOARD SYS_VENDOR等信息

doc/README.kconfig

Tips to add/remove boards
-------------------------

When adding a new board, the following steps are generally needed:

[1] Add a header file include/configs/<target>.h
 [2] Make sure to define necessary CONFIG_SYS_* in Kconfig:
       Define CONFIG_SYS_CPU="cpu" to compile arch/<arch>/cpu/<cpu>
       Define CONFIG_SYS_SOC="soc" to compile arch/<arch>/cpu/<cpu>/<soc>
       Define CONFIG_SYS_VENDOR="vendor" to compile board/<vendor>/common/*
         and board/<vendor>/<board>/*
       Define CONFIG_SYS_BOARD="board" to compile board/<board>/*
         (or board/<vendor>/<board>/* if CONFIG_SYS_VENDOR is defined)
       Define CONFIG_SYS_CONFIG_NAME="target" to include
         include/configs/<target>.h
 [3] Add a new entry to the board select menu in Kconfig.
     The board select menu is located in arch/<arch>/Kconfig or
     arch/<arch>/*/Kconfig.
 [4] Add a MAINTAINERS file
     It is generally placed at board/<board>/MAINTAINERS or
     board/<vendor>/<board>/MAINTAINERS
 [5] Add configs/<target>_defconfig

When removing an obsolete board, the following steps are generally needed:

[1] Remove configs/<target>_defconfig
 [2] Remove include/configs/<target>.h if it is not used by any other boards
 [3] Remove board/<vendor>/<board>/* or board/<board>/* if it is not used
     by any other boards
 [4] Update MAINTAINERS if necessary
 [5] Remove the unused entry from the board select menu in Kconfig
 [6] Add an entry to doc/README.scrapyard

u-boot Kconfig结构解析的更多相关文章

  1. boot.img格式文件拆解实例结构解析

    以msm8226为例,讲解android源码编译生成boot.img的结构.boot.img包括boot.img header.kernel以及ramdisk文件系统.下面是对boot.img的结构进 ...

  2. MBR结构解析与fdisk的bash实现

    一.MBR结构解析 首先我们先介绍一些MBR的基本知识基础,再晾图片分析. MBR主要分为三大块各自是: 1.载入引导程序(446K) 2.分区表(64k) 3.标志结束位(2k) 载入引导程序:内容 ...

  3. iOS沙盒目录结构解析

    iOS沙盒目录结构解析 原文地址:http://blog.csdn.net/wzzvictory/article/details/18269713     出于安全考虑,iOS系统的沙盒机制规定每个应 ...

  4. H.264码流结构解析

    from:http://wenku.baidu.com/link?url=hYQHJcAWUIS-8C7nSBbf-8lGagYGXKb5msVwQKWyXFAcPLU5gR4BKOVLrFOw4bX ...

  5. Oracle的rowid结构解析

    SQL> select rowid,deptno from dept; ROWID                  DEPTNO ------------------ ---------- A ...

  6. EXT 结构解析

    EXT Demo 结构解析 创建项目 sencha -sdk F:\lib\ext-6.0.0 generate app demo F:\demo 预览项目 执行命令 sencha app build ...

  7. ionic项目结构解析

    ionic项目结构解析 原始结构 创建一个IonicDemo项目 'ionic start IonicDemo sidemenu' 这种结构多模块开发比较麻烦,因为view跟controller分开路 ...

  8. Redis源码剖析--源码结构解析

    请持续关注我的个人博客:https://zcheng.ren 找工作那会儿,看了黄建宏老师的<Redis设计与实现>,对redis的部分实现有了一个简明的认识.在面试过程中,redis确实 ...

  9. InfluxDB源码目录结构解析

    操作系统 : CentOS7.3.1611_x64 go语言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 influxdata主目录结构 [root@localhost ...

随机推荐

  1. anr以及nlp语音自动化测试方案

    进行asr自动化测试 1.将人工语音录制的音频文件分为一句话一个文件,并将文件名命名为此句话,可以加后缀,例如:附近的公园_1 2.使用电脑连接蓝牙音箱,控制好距离角度等环境 3.使用python或者 ...

  2. Android - Unable to add window android.view.ViewRootImpl$W@6518342 -- permission denied for window type 2133

    因为跟博主碰到了一样的问题,所以记录一下分析原理 原文链接:https://www.jianshu.com/p/b0364074288a 首先,先介绍下背景环境,第一,是Android7.0,其次,要 ...

  3. 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容

    [Qt开发][VS开发][Linux开发]OpenCV.Qt-MinGw.Qt-msvc.VS2010.VS2015.Ubuntu Linux.ARM Linux中几个特别容易混淆的内容 标签:[Qt ...

  4. 无法在发送 HTTP 标头之后进行重定向

    public ActionResult Index2() { Response.Buffer = true; Response.Clear(); return Redirect("/Wech ...

  5. https=http+ssl

    TLS/SSL中使用了非对称加密,对称加密以及HASH算法.握手过程的具体描述如下: 浏览器将自己支持的一套加密规则发送给网站. 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式 ...

  6. 前端导出excel文件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. android adb logcat获取日志文件

    一般情况,可以直接在电脑终端上输入logcat来查看手机运行日志,但是测试工作者为了抓取日志文件来给开发人员,需要把日志导出到特定文件中.如下文. 以小米1s手机为例 步骤1:打开第一个终端窗口 ad ...

  8. 数位dp相关

    经典的数位Dp是要求统计符合限制的数字的个数. 一般的形式是:求区间[n,m]满足限制f(1). f(2). f(3)等等的数字的数量是多少. 条件 f(i) 一般与数的大小无关,而与数的组成有关. ...

  9. [LeetCode] 140. 单词拆分 II

    题目链接 : https://leetcode-cn.com/problems/word-break-ii/ 题目描述: 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符 ...

  10. P2294 [HNOI2005]狡猾的商人(差分约束)

    P2294 [HNOI2005]狡猾的商人 对于每个$(x,y,w)$,连边$(x-1,y,w),(y,x-1,-w)$,表示前$y$个月的收益比前$x-1$个月的收益大$w$ 这样题目就转化为询问图 ...