全部博文(685)
分类: 嵌入式
2014-04-19 15:22:15
该uboot系列的版本是uboot-2010.12,基于samsung的4412芯片
Uboot里面的字母u代表了“通用”的意思,因此,为了编译出符合特定CPU,特定电路板的启动代码,就必须首先进行配置,告诉编译器需要编译成什么样的体系架构,什么样的cpu等等。
下面以4412为例,讲述配置过程
配置命令为make smdk4412_config,我们来看这条命令是如何执行的。
首先进入到顶层Makefile文件,找到伪目标%_config
%_config:: unconfig
@$(MKCONFIG) -A $(@:_config=)
在Makefile的112行有定义如下:
MKCONFIG := $(SRCTREE)/mkconfig,此处$(SRCTREE)为空
-A是参数
$(@:_config=)表示把make xxx_config 命令里面的_config去掉,保留xxx。
所以@$(MKCONFIG) –A $(@:_config=) 分解出来就是 mkconfig –A smdk4412,它的意思就是进入当前目录下的mkconfig文件并且传递两个参数(-A ,smkd4412)给它。
下面进入到mkconfig文件,看它做了写什么事情:
在文件的开头有如下语句
if [ \( $# -eq 2 \) -a \( "$1" = "-A" \) ] ; then
# Automatic mode
line=`egrep -i "^[[:space:]]*${2}[[:space:]]" boards.cfg` || {
echo "make: *** No rule to make target \`$2_config'. Stop." >&2
exit 1
}
如果参数的个数为两个,并且第一个参数为-A就执行then后面的语句,根据命令所提供的参数,我们知道所提供的参数符合这个if语句,then语句的意思就是从boards.cfg文件中寻找第二个参数(此处为smdk4412),如果没有找到,就显示make: *** No rule to make target smdk4412_config 如果有,程序就继续往下执行(此篇文章不接着往下讨论mkconfig的其他内容,下一篇将做详细的分析)。
接着进入boards.cfg文件,在里面可以找到smdk4412标号,可见配置成功!
smdk4412 arm armv7 smdk4212 samsung exynos
总结:以上只是对配置的流程做了个大概的分析,详细的配置过程见下一篇文章