对于“./mkconfig smdk2410 arm arm920t smdk2410 NULL s3c24x0”命令,$6为“s3c24x0”,不为空,也不是“NULL”,所以第53行的条件不满足,将执行else分支。
第56行中,LNPREFIX为空,所以这个命令实际上就是:ln -s arch-$6 asm-$2/arch,即:ln -s arch-s3c24x0 asm-arm/arch。
第60、61行重新建立asm-arm/proc文件,并让它链接向proc-armv目录。
(3)创建顶层Makefile包含的文件include/config.mk。
对于“./mkconfig smdk2410 arm arm920t smdk2410 NULL s3c24x0”命令,上面几行代码创建的config.mk文件内容如下:
ARCH = arm
CPU = arm920t
BOARD = smdk2410
SOC = s3c24x0
(4)创建开发板相关的头文件include/config.h。
前面说过,APPEND维持原值“no”,所以config.h被重新建立,它的内容如下:
/* Automatically generated - do not edit */
#include <configs/smdk2410.h>"
现在总结一下,配置命令“make
smdk2410_config”,实际的作用就是执行“./mkconfig smdk2410 arm arm920t smdk2410
NULL s3c24x0”命令。假设执行“./mkconfig $1 $2 $3 $4 $5 $6”命令,则将产生如下结果:
(1)开发板名称BOARD_NAME等于$1;
(2)创建到平台/开发板相关的头文件的链接:
ln -s asm-$2 asm
ln -s arch-$6 asm-$2/arch
ln -s proc-armv asm-$2/proc# 如果$2不是arm的话,此行没有
(3) 创建顶层Makefile包含的文件include/config.mk。
ARCH = $2
CPU = $3
BOARD = $4
VENDOR = $5# $5为空,或者是NULL的话,此行没有
SOC = $6# $6为空,或者是NULL的话,此行没有
(4)创建开发板相关的头文件include/config.h。
/* Automatically generated - do not edit */
#include <configs/$1.h>"
从这4个结果可以知道,如果要在board目录下新建一个开发
板<board_name>的目录,则在include/config目录下也要建立一个文件<board_name>.h,里
面存放的就是开发板<board_name>的配置信息。
U-Boot还没有类似Linux一样的可视化配置界面(比如使用make menuconfig来配置),要手动修改配置文件include/config/<board_name>.h来裁减、设置U-Boot。
配置文件中有两类宏:
(1)一类是选项(Options),前缀为“CONFIG_”,它们用于选择CPU、SOC、开发板类型,设置系统时钟、选择设备驱动等。比如:
#define CONFIG_ARM920T1/* This is an ARM920T Core*/
#defineCONFIG_S3C24101/* in a SAMSUNG S3C2410 SoC */
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66092-8.html
活蛆不可能死蛆呢
美舰来我们驱离