uboot

编程

1.解压好u-boot后,打开uboot根目录的README文件,在software configuration 里有写明,如果要针对某个单板进行配置,需要执行:make <board_name>_config

其中uboot支持的board_name可以在根目录的include/configs/下查看。

2.makefile

2.1 uboot version确定 (Makefile 24-29行) U_BOOT_VERSION “1.3.4xyz”

1)uboot版本号分为4个级别:

VERSION : 主板号

PATCHLEVEL : 次版本号

SUBLEVEL : 再次版本号

EXTRAVERSION : 另外附加的版本信息

这4个用 . 分隔开共同构成了最终的版本号。

2)makefile中版本号最终生成一个变量U_BOOT_VERSION,这个变量记录了Makefile中配置的版本号。

Include/version_autogenerated.h文件是编译过程中自动生成的一个文件,所有源目录中没有,但是编译过后的uboot中就有了。它里面的内容是一个宏定义,宏定义的值就是我们在Makefile中配置的uboot版本号。

3)验证方法:自己修改主makefile中几个version有关的变量,然后编译uboot,然后烧录到SD卡中,从SD卡中启动,然后去看启动时uboot打印出来的版本信息,看看变化是不是和自己的分析一致。

 

3.查看交叉编译链版本:arm-linux-gcc -v

4.查看电脑主机cpu版本号:uname -m

5.Autoconfig.mk是配置过程中产生的,用来指导整个uboot的编译过程

配置过程需要的原材料在include/configs/xxxxx.h文件中,.h文件中有许多宏定义即CONFIG_,这些宏定义是我们移植uboot的关键所在

TQ210.h文件会被用来生成一个autoconfig.mk文件,这个文件会被主Makefile引入,指导整个编译过程,这里面的这些宏定义会影响我们对uboot中大部分.c文件中一些条件编译的选择。从而实现最终的可移植性。

6.链接器脚本为u-boot-nand.lds则说明已经定义了CONFIG_NAND_U_BOOT,若为u-boot.lds则说明没有定义

7.mkconfig文件

[ "${BOARD_NAME}" ] || BOARD_NAME="$1"

[ $# -lt 4 ] && exit 1    //
[ $# -gt 6 ] && exit 1

uboot配置过程详解1

1. Mkconfig脚本的6个参数。TQ210_config : unconfig

$(MKCONFIG) $(@:_config=) arm s5pv210 TQ210 EmbedSky s5pv210

TQ210_config里面的_config部分用空替换,得到:TQ210,这就是第一个参数,所以:

$1: TQ210

$2: arm

$3: s5pv210

$4: TQ210

$5: EmbedSky

$6: s5pv210

所以$# = 6

3. 第23行,其实就是看BOARD_NAME变量是否有值,没有就赋值。结果BOARD_NAME=TQ210

4. 第25行,如果$#小于4,则 exit 1 (mkconfig脚本返回1)。

5. 第26行,如果$#大于6,则 exit 1

所以:mkconfig脚本传参只能是4,5,6.其他值都不行。

8.移植时如需更改时钟,则只需在tq210.h修改即可

以上是 uboot 的全部内容, 来源链接: utcz.com/z/511224.html

回到顶部