【说明】
前面一小节我们体验了一下U-BOOT,并把它烧到了我们的开发板中,还记得我们的步骤吗?解压,配置,编译,烧写。这节我们来讲讲U-BOOT的配置原理,下一节介绍其编译的过程。
【配置命令分析】
我们再来看看配置的命令
显然 ,后面那个 mini6410_nand_config-ram256 肯定是一个Makefile 的 target 。我们肯定可以在Makefile中找到它
我们搜索后发现了这个
其中用到了一个变量MKCONFIG,我们来查查它是什么
再一路看看SRCTREE
一猜就知道是当前目录了。那原来的配置命令就变成了
!说明其实配置是使用了mkconfig 这个脚本,然后后面带了那么些个参数。
【mkconfig】
二话不说,打开这个文件看看到底它是怎么配置的。
我们先把命令行参数的编号标出来
注意下面生成的文件都会在INCLUDE 目录下边
判断一些附带的参数,我们都没有,所以这个部分可以忽略
这个是设置 BOARD_NAME = mini6410 (因为$1就是第一个参数)
判断参数个数是否正确,
打印出刚才我们配置的时候的那句话
这个分支我们会执行else 里面的部分
效果是建立一个连接 asm指向asm-arm
这个作用是源代码中对文件asm的引用都会引用到asm-arm
源码就不需要理会到底ASM是哪个架构的
为什么呢,因为Makefile 里面有这么一句,而BUILD_DIR没有定义
所以OBJTREE = CURDIR = SRCTREE
下面这个和上面是一个原理,就不多说了
我们的参数$6并不是NULL,所以会建立链接 asm-arm/arch 指向 arch-S3c6410
又是这样
建立一个regs.h 指向 S3C6410.h
建立一个asm-arm/arch文件指向 arch-S3c64xx
建立一个asm-arm/proc 文件指向 proc-armv
往config.mk 文件里面写东西
我们看看config.mk 里面是不是有这么写东西呢
这里的APPEND = no 所以执行 else 即新建文件 config.h
为什么呢?因为APPEND初始化为NO,只有在调用mkconfig 的时候传入了 -a 才为YES
不信看看我们第一个截图,判断参数的那里
然后往config.h 里面写东西。
最终成为一个单板相关的头文件给源文件用
【总结】
1】当我们进行 配置的时候实际上是调用了一个写在Makefile 里面的命令
2】这个命令就是以一些参数来执行 mkconfig 脚本。该脚本执行完以后我们得到了如下结果
1) BOARD_NAME = mini6410
2)建立一个连接 asm指向asm-arm
3)asm-arm/arch文件指向 arch-S3c64xx
4)建立一个asm-arm/proc 文件指向 proc-armv
5)建立一个regs.h 指向 S3C6410.h
6)建立一个文件config,mk 内容如图
7)建立一个文件 config.h 内容如图