U-boot根目录下的mkconfig分析

U-boot根目录下的mkconfig文件是用于创建符号链接和头文件的shell脚本,当执行make x210_sd_config时被调用。脚本主要任务包括解析参数、建立符号链接以实现代码的可移植性。它会根据传入参数创建如asm、arch等目录的链接,以及特定的头文件如regs.h和config.mk,确保uboot针对不同平台的配置正确。
摘要由CSDN通过智能技术生成

U-boot根目录下的mkconfig分析

此文件位于uboot源码的根目录下,是源码自带的shell脚本文件,主要功能是创建符号链接以及一些头文件(拥有符号链接的功能)。
输入make x210_sd_config时,本脚本将会被主Makefile调用执行。
其内容主要结构为:
1.解析输入参数
2.创建符号链接及一些头文件
需要注意的是,结构顺序不代表代码执行顺序,关于代码的执行顺序以及推荐阅读顺序请移步 [ U-boot配置及编译阶段流程宏观分析 ]

1.解析输入参数

这个脚本在主makefile中被执行前,会被传入6个参数,分别是:x210_sd,arm,s5pc11x,x210,samsung,s5pc110。所以和参数有关的变量为$#=6($#的值是输入参数个数),$1=x210_sd $2=arm $3=s5pc11x $4=x210 $5=samsung $6=s5pc110

  • 本段代码的功能为解析传入本脚本的参数,首先利用了一个while循环,判断$#的值(即参数个数),是否大于0,如果大于0则进入循环
  • shell的switch case语法中是不需要break的,故此处的switch case是为了跳出外面的while循环
  • 此外每个case的结束都需要加’;’执行语句结束也要加’;’,所以在每行case的最后都会有两个分号
  • 这段代码上来先判断$1的值(即第一个参数),如果为一些特定的值,那么会进行shift操作,即向左移动参数列表一次,将第一个参数移出参数列表
  • 但由于我们第一个参数为x210_sd,故只符合最后一个case即*,也就是通配符,直接break跳出了while循环。其实这整段代码对我们没有产生什么作用。
APPEND=no   # Default: Create new config file
BOARD_NAME=""   # Name to print in make output

while [ $# -gt 0 ] ; do
    case "$1" in
    --) shift ; break ;;
    -a) shift ; APPEND=yes ;;
    -n) shift ; BOARD_NAME="${1%%_config}" ; shift ;;
    *)  break ;;
    esac
done
  • 本句是缩写的if判断语句,判断变量BOARD_NAME是否不为空,由于在12行处对其赋为空值,所以此处将它的值赋为第一个参数的值,即x210_sd
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值