新版本uboot和旧版本的区别

转载地址:https://www.cnblogs.com/awsqsh/articles/4508726.html

新版本:u-boot-2015.04

旧版本:u-boot-2012.04.01

一、编译方法

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进行编译。

 

二、交叉编译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的。

你可能感兴趣的:(uboot-makefile)