U-Boot配置过程
2015-10-11 12:23
357 查看
我们通过以下两条命令对指定的开发板进行u-boot配置:
make smdkv210single_config
make all
了解这两条命令做了什么,就可以了解程序的流程,知道要修改哪些文件,在顶层Makefile文件可以看到:
smdkv210single_config : unconfig
@$(MKCONFIG) $(@:_config=) arm s5pc11x smdkc110 samsung s5pc110
@echo "TEXT_BASE = 0xc3e00000" > $(obj)board/samsung/smdkc110/config.mk
@$(MKCONFIG) $(@:_config=) arm s5pc11x smdkc110 samsung s5pc110
等价于:./mkconfig smdkv210single arm s5pc11x smdkc110 samsung s5pc110
$1 $2 $3 $4 $5 $6
下面我们一步步展开分析mkconfig脚本的作用:
1.确定开发板的名称:
2.创建到平台/开发板相关的头文件链接:
(a)在include目录下创建了一个平台相关的软链接:asm->asm-arm/
这里我们在源码目录下编译,所以执行if语句中的else部分,因此,下面用到LNPREFIX变量时内容为空。
(b)在include/asm-arm目录下创建一个SOC相关的软链接:arch->arch-s5pc110
查看asm-arm目录下并没有arch-s5pc110,但是,创建符号链接和软链接时允许目标文件或目录不存在,此时若访问链接文件会得到一个“位置不可用”的提示, 若之后重新将目标文件或目录补上(路径、名称一致即可),则该链接仍然有效。
(c)在include目录下先删除后重新创建regs.h->s5pc110.h,先删除后重新创建asm-arm/arch->arch-s5pc11x
(d)先删除后创建asm-arm/proc->proc-armv,源码目录下的include/asm-arm/目录
所以总结来说一共先删除后重新创建的软连接是:
include/asm->asm-arm
include/asm-arm/arch->ardch-s5pc11x
include/regs.h->s5pc110.h
include/asm-arm/pro->pro-armv
3.创建顶层Makefile需要的包含文件:
因此创建的config.mk文件的内容是:
4.创建开发板相关的头文件:
APPEND默认值为”no”,所以重新创建config.h,内容为:
目前为止,我们看一看到mkconfig主要完成的工作是先删除后重新创建各种平台/开发板相关的头文件链接,最后创建一个开发板相关的头文件,并在里面制定了开发板的配置文件。
在配置文件中主要有两类宏构成:
(1)一类是选项,”CONFIG_”前缀的宏,用于选择CPU,SOC,开发板类型等,例如:
(2)一类是参数,”CFG_”前缀的宏,用于初始化中的各种设置,例如:
当然还有许多其他定义的宏。在大工程文件中常常用到条件编译,部分中宏的使用让我们可以选择某条语句或某组语句进行翻译或者忽略,在U-Boot中几乎所有文件都编译链接,这些宏的使用大大减轻了编译链接的工作量。
make smdkv210single_config
make all
了解这两条命令做了什么,就可以了解程序的流程,知道要修改哪些文件,在顶层Makefile文件可以看到:
smdkv210single_config : unconfig
@$(MKCONFIG) $(@:_config=) arm s5pc11x smdkc110 samsung s5pc110
@echo "TEXT_BASE = 0xc3e00000" > $(obj)board/samsung/smdkc110/config.mk
@$(MKCONFIG) $(@:_config=) arm s5pc11x smdkc110 samsung s5pc110
等价于:./mkconfig smdkv210single arm s5pc11x smdkc110 samsung s5pc110
$1 $2 $3 $4 $5 $6
下面我们一步步展开分析mkconfig脚本的作用:
1.确定开发板的名称:
2.创建到平台/开发板相关的头文件链接:
(a)在include目录下创建了一个平台相关的软链接:asm->asm-arm/
这里我们在源码目录下编译,所以执行if语句中的else部分,因此,下面用到LNPREFIX变量时内容为空。
(b)在include/asm-arm目录下创建一个SOC相关的软链接:arch->arch-s5pc110
查看asm-arm目录下并没有arch-s5pc110,但是,创建符号链接和软链接时允许目标文件或目录不存在,此时若访问链接文件会得到一个“位置不可用”的提示, 若之后重新将目标文件或目录补上(路径、名称一致即可),则该链接仍然有效。
(c)在include目录下先删除后重新创建regs.h->s5pc110.h,先删除后重新创建asm-arm/arch->arch-s5pc11x
(d)先删除后创建asm-arm/proc->proc-armv,源码目录下的include/asm-arm/目录
所以总结来说一共先删除后重新创建的软连接是:
include/asm->asm-arm
include/asm-arm/arch->ardch-s5pc11x
include/regs.h->s5pc110.h
include/asm-arm/pro->pro-armv
3.创建顶层Makefile需要的包含文件:
因此创建的config.mk文件的内容是:
4.创建开发板相关的头文件:
APPEND默认值为”no”,所以重新创建config.h,内容为:
目前为止,我们看一看到mkconfig主要完成的工作是先删除后重新创建各种平台/开发板相关的头文件链接,最后创建一个开发板相关的头文件,并在里面制定了开发板的配置文件。
在配置文件中主要有两类宏构成:
(1)一类是选项,”CONFIG_”前缀的宏,用于选择CPU,SOC,开发板类型等,例如:
(2)一类是参数,”CFG_”前缀的宏,用于初始化中的各种设置,例如:
当然还有许多其他定义的宏。在大工程文件中常常用到条件编译,部分中宏的使用让我们可以选择某条语句或某组语句进行翻译或者忽略,在U-Boot中几乎所有文件都编译链接,这些宏的使用大大减轻了编译链接的工作量。
相关文章推荐
- U-Boot源码分析及移植-fs2410
- U-BOOT源码分析及移植
- U-Boot启动过程--详细版的完全分析(二)
- U-Boot-2009-03移植笔记(移植准备)
- U-Boot-2009-03移植笔记(点亮第一展灯)
- U_boot 的 bootcmd 和bootargs参数详解
- U-Boot移植全程指导
- u-boot1.1.6-undefined reference to "raise"
- 09课01节 u-boot-1.1.16编译补丁;
- u-boot模仿
- 自定义u-boot启动logo的方法
- 2440 u-boot编译
- u-boot.lds与-Ttext $(TEXT_BASE)
- U-Boot移植(1)--在U-boot中建立自己的开发板
- 追踪uboot下tftp命令的代码执行过程-Nagul
- 嵌入式系统 Boot Loader 技术内幕
- 嵌入式linux系统log文件的几个地方
- 常用的uboot的bootargs设置
- ubuntu12.04的NFS配置
- U-boot 之TFTP服务器配置