uboot - 配置过程
来源:互联网 发布:工程软件工作量估计 编辑:程序博客网 时间:2024/06/01 09:58
===分析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" ] ; thenmkdir -p ${OBJTREE}/includemkdir -p ${OBJTREE}/include2cd ${OBJTREE}/include2rm -f asmln -s ${SRCTREE}/include/asm-$2 asmLNPREFIX="../../include2/asm/"cd ../includerm -rf asm-$2rm -f asmmkdir asm-$2ln -s asm-$2 asmelse
#我们是默认编译运行这里
#创建符号链接1:arm -> asm-armcd ./includerm -f asmln -s asm-$2 asmfirm -f asm-$2/archif [ -z "$6" -o "$6" = "NULL" ] ; thenln -s ${LNPREFIX}arch-$3 asm-$2/archelse
#创建符号链接“2”(后面会被删除 所以这个不算):
#asm-arm/arch -> arch-s5pc110ln -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.hrm -f regs.h ln -s $6.h regs.h
#删除上面创建的链接“2” 创建下面新的(算打补丁吧 不直接该上面的)
#创建符号链接3:asm-arm/arch -> arch-s5pc11xrm -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-armvrm -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文件中一些条件编译的选择。
从而实现最终的可移植性。
- uboot的配置过程
- uboot - 配置过程
- uboot的配置过程学习
- Uboot的配置过程分析
- uboot配置过程详细解析
- UBoot的配置编译过程
- uboot编译配置过程分析
- uboot的配置过程分析
- UBOOT编译学习-----配置过程
- uboot配置过程详细解析
- uboot系列之----Uboot配置过程详细分析
- uboot系列之----Uboot配置过程详细分析
- uboot系列之----Uboot配置过程详细分析
- uboot配置过程详解1~2
- uboot学习——配置过程分析
- uboot 分析之 配置+编译过程
- uboot配置和编译过程详解
- uboot配置过程(mkconfig脚本+其他)
- 欢迎使用CSDN-markdown编辑器
- Blog已弃疗,启用CSDN。
- sas控制器驱动之设备管理
- Codeforces Round #332 (Div. 2) D. Spongebob and Squares详解
- android---传感器
- uboot - 配置过程
- QT调用COM组件
- 管理感悟:中层管控力是企业发展的关键推动力
- A*寻路算法入门(三)
- 几种典型的Java内存泄漏
- Java内存溢出的详细解决方案
- 20个开发人员非常有用的Java功能代码
- A*寻路算法入门(四)
- IOS开发基础Object-C(08)—OC内存管理(2)-对象之间的内存管理