关于uboot版本选择以及新旧版本的区别

关于uboot版本选择以及新旧版本的区别

写这一篇文章我因为我正在学习linux内核以及文件系统的移植,查阅了一些文章,做如下记录,非原创,只是觉得有的写的好像有点道理,所以把一些文章的内容集中在此,希望得到大家的建议与指导:

=================================================================================

一、uboot版本选择

U-boot版本下载:ftp://ftp.denx.de/pub/u-boot

U-boot版本选择:

当我们打开上诉的网址,一看,哇,这么多版本,那么到底应该选择哪一个呢?有些人可能会说当然是越新越好啦。其实呢不是这个样子的,因为Uboot本身也是在不断的开发和进化当中的。可能作者在某一个版本中加入了一些新的特性,然后呢过一段时间又发现他不是很稳定,就把它删掉了。这样就对我们移植Uboot来说就会增加很多不必要的复杂性。所以一般的原则就是够用就可以了。

如何选择够用呢:

1、打开下载的U-boot目录下的:arch/arm/cpu目录,确认使用的cpu型号是否支持及对应。

2、打开U-boot目录下的:board查看相对应的外设是否都支持。eq: u-boot/board/samsung/

uboot版本越新支持的开发板和CPU就越多,代码量就越多,如果我们的CPU和开发板的并没有这么多东西,那我们可以不用新的。而用合适我们的,一般结合开发板处来的日期,和uboot的日期来结合找到合适的uboot。

一般情况下,uboot的common目录下,和drivers目录下,fs文件系统目录下等一些是不会有很多变化的,变化最大的就是board目录下和CPU目录下,因为这目录下的内容都是和CPU和开发板相关的,不同的CPU开发板,当然差别会很大了。

二、新旧版本区别

新版本:u-boot-2015.04

旧版本:u-boot-2012.04.01

1、编译方法

1.1 其中最不同的就是我们所熟悉的在u-boot-2014.04中的boards.cfg和mkconfig没有了,而同时又在u-boot-2015.01的顶层目录下多出了一个configs目录,还有一个Kconfig文件,可以看到现在的uboot编译方法和linux kernel的编译方法非常的接近。

1.2编译方法区别:

新版的uboot 使用现成的 make xx_defconfig 就会像编译kernel一样在顶层目录生成.config文件。

liam@ubuntu:~/uboot/uboot_2015.04$ make distclean

CLEAN scripts/basic

CLEAN scripts/kconfig

CLEAN include/config include/generated

CLEAN .config include/autoconf.mk include/autoconf.mk.dep include/config.h

liam@ubuntu:~/uboot/uboot_2015.04$ make smdk2410_defconfig

HOSTCC scripts/basic/fixdep

HOSTCC scripts/kconfig/conf.o

SHIPPED scripts/kconfig/zconf.tab.c

SHIPPED scripts/kconfig/zconf.lex.c

SHIPPED scripts/kconfig/zconf.hash.c

HOSTCC scripts/kconfig/zconf.tab.o

HOSTLD scripts/kconfig/conf

#

# configuration written to .config

#

也可以用make menuconfig手动配置。

新版本中:make xxx_defconfig主要完成了以下工作:

1 编译fixdep;

2 编译conf;

3 执行conf 二进制文件,生成.config

注意:include/config.h文件时在make all的时候生成的。

旧版

liam@ubuntu:~/uboot/uboot_2012.04.01$ make smdk2410_config

Configuring for smdk2410 board...

然后再include目录下会得到:

config.mk

ARCH = arm

CPU = arm920t

BOARD = smdk2410

VENDOR = samsung

SOC = s3c24x0

config.h

/* Automatically generated - do not edit */

#define CONFIG_BOARDDIR board/samsung/smdk2410

#include

#include

#include

#include

另外还会在根目录生成:.boards.depend

asm arch proc三个symlink文件,作用不明。

make xxxconfig后均是直接执行make进行编译。

2、交叉编译CROSS_COMPILE定义:

旧版:

./arch/arm/config.mk

./arch/mips/config.mk

CROSS_COMPILE ?= arm-linux-

这样目录的mk文件里面的文件开头处定义的。

新版可以直接在顶层目录:Makefile里面修改

ifeq ($(HOSTARCH),$(ARCH))

CROSS_COMPILE ?= arm-linux-

endif

CROSS_COMPILE = arm-linux-

注意:这里需要提到if endif外面来。否则读取不到CROSS_COMPILE的。

三、参考文章 版权声明:本文为CSDN博主「曦饶」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/q980655156/article/details/80140030

版权声明:本文为CSDN博主「艾特号」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/lpwsw/java/article/details/104945628

https://www.cnblogs.com/awsqsh/articles/4508726.html

相关推荐

日本捕鲸业
你们的365还进得去吗

日本捕鲸业

📅 06-27 👁️ 4697
冰箱什么品牌最耐用体验好?盘点2025热销榜的8大冰箱,口碑霸榜
1、阴阳师转换是什么意思
365娱乐游戏是什么

1、阴阳师转换是什么意思

📅 07-15 👁️ 5969