uboot - 配置过程

===分析uboot的配置过程(mkconfig脚本)===

uboot怎么配置?我们在终端上执行make NAME_config时的运行过程解析!


我们执行make x210_sd_config时会运行makefile的这两行程序,先分析下

第二行:echo "TEXT_BASE = 0xc3e00000" > $(obj)board/samsung/x210/config.mk

就是讲链接地址写入到 $(obj)board/samsung/x210/config.mk文件中。@是静默编译

其实有些板子的配置第二行时也可以这样做,进入 $(obj)board/samsung/x210/文件夹

手工创建 config.mk文件 写入TEXT_BASE = 0xc3e00000。


接着我们来分析第一行命令,这个其实就是运行uboot根目录下的mkconfig文件,

并传入6个参数:$(@:_config=) arm s5pc11x x210 samsung s5pc110

$1:$(@:_config=) :去掉目标x210_sd_config中的_config字符串也就是 x210_sd

$2:arm

$3:s5pc11x

$4:x210

$5:samsung

$6:s5pc110

然后开始运行mkconfig····


以上这段shell脚本主要的功能是打印板子的名字

echo "Configuring for ${BOARD_NAME} board..."  ${BOARD_NAME} = $1 = x210_sd

所以在配置是会打印出 Configuring for x210_sd board...  如图:


继续看脚本,下面的的工作主要是创建符号链接:


#
# Create link to architecture specific headers
#
if [ "$SRCTREE" != "$OBJTREE" ] ; then
	mkdir -p ${OBJTREE}/include
	mkdir -p ${OBJTREE}/include2
	cd ${OBJTREE}/include2
	rm -f asm
	ln -s ${SRCTREE}/include/asm-$2 asm
	LNPREFIX="../../include2/asm/"
	cd ../include
	rm -rf asm-$2
	rm -f asm
	mkdir asm-$2
	ln -s asm-$2 asm
else
#我们是默认编译运行这里
#创建符号链接1:arm -> asm-arm
	cd ./include
	rm -f asm
	ln -s asm-$2 asm
fi

rm -f asm-$2/arch

if [ -z "$6" -o "$6" = "NULL" ] ; then
	ln -s ${LNPREFIX}arch-$3 asm-$2/arch
else
#创建符号链接“2”(后面会被删除 所以这个不算):
#asm-arm/arch -> arch-s5pc110
ln -s ${LNPREFIX}arch-$6 asm-$2/archfi

 
#不执行
# create link for s3c24xx SoCif [ "$3" = "s3c24xx" ] ; thenrm -f regs.hln -s $6.h regs.hrm -f asm-$2/archln -s arch-$3 asm-$2/archfi
#不执行
# create link for s3c64xx SoCif [ "$3" = "s3c64xx" ] ; thenrm -f regs.hln -s $6.h regs.hrm -f asm-$2/archln -s arch-$3 asm-$2/archfi
#不执行
# create link for s5pc1xx SoCif [ "$3" = "s5pc1xx" ] ; then rm -f regs.h ln -s $6.h regs.h rm -f asm-$2/arch ln -s arch-$3 asm-$2/archfi# create link for s5pc11x SoCif [ "$3" = "s5pc11x" ] ; then
 
#创建符号链接2:regs.h -> s5pc110.h
rm -f regs.h ln -s $6.h regs.h
 
#删除上面创建的链接“2” 创建下面新的(算打补丁吧 不直接该上面的)
#创建符号链接3:asm-arm/arch -> arch-s5pc11x
rm -f asm-$2/arch ln -s arch-$3 asm-$2/archfi
#不执行
# create link for s5p64xx SoCif [ "$3" = "s5p64xx" ] ; thenrm -f regs.hln -s $6.h regs.hrm -f asm-$2/archln -s arch-$3 asm-$2/archfi
#不执行
# create link for s5p644x SoCif [ "$3" = "s5p644x" ] ; thenrm -f regs.hln -s $6.h regs.hrm -f asm-$2/archln -s arch-$3 asm-$2/archfiif [ "$2" = "arm" ] ; then
 

#创建符号链接4:asm-arm/proc ->proc-armv
rm -f asm-$2/procln -s ${LNPREFIX}proc-armv asm-$2/procfi# create link for s3c64xx-mp SoCif [ "$3" = "s3c64xx-mp" ] ; thenrm -f regs.hln -s $6.h regs.hrm -f asm-$2/archln -s arch-$3 asm-$2/archfi
 

SO!!为虾米要创建这些符号链接呢??

因为为了移植不同的开发板SOC,比如源码中你在#include<asm/xxx.h>时,

其实兼容了所以版本板子的asm-soc/xxx.h  不是吗~~~


最后分析最后一段的shell脚本:(主要是生成include/config.mk文件和生成配置头文件include/config.h)


注意:此时的路径是在include下,所以上面生成的config.mk和config.h是在include下的:

config.mk的生成:

生成目的:在主makefile中要调用它。

生成内容:如下图:

config.h的生成:

生成目的:其实是为了更好的移植性,和上面做的符号链接类似:(config.h就是为了包含$1.h )

echo "/* Automatically generated - do not edit */" >>config.h
echo "#include <configs/$1.h>" >>config.h

生成内容:如下图:


<configs/x210_sd.h>,这个头文件是我们移植x210开发板时,对开发板的宏定义配置文件。

这个文件是我们移植x210时最主要的文件。
x210_sd.h文件会被用来生成一个autoconf.mk文件,这个文件会被主Makefile引入,指导整

个编译过程。这里面的这些宏定义会影响我们对uboot中大部分.c文件中一些条件编译的选择。

从而实现最终的可移植性。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值