uboot的移植准备

本文介绍了UBoot的移植准备工作,主要包括分析makefile、选择配置文件、理解交叉编译工具链以及config.mk文件的生成过程。针对不同架构的CPU,makefile中的CROSS_COMPILE变量用于指定交叉编译工具链的前缀。config.mk文件通过CONFIG_开头的宏指导编译过程,这些宏来源于源码目录的include/configs/xxx.h头文件,是移植的关键。
摘要由CSDN通过智能技术生成

因为makefile是用来指导编译uboot的,从这里开始分析,更改,移植。

第一步:看makefile

(1)首先选择自己开发板的配置文件,在samsung厂商发布的uboot(uboot\include\configs)目录下,有很多类似x210_sd_config.h的配置文件,一个就是一个开发板,Samsung一共移植了455块不同开发板,九鼎正对s5pv210留下了2个,在他的基础上修改,所有我们需要在虚拟机下执行make x210_sd_config.h,这时主makefile的2589行就会调用mkconfig脚本规则,将ARCH = arm、CPU = s5pc11xBOARD = x210、VENDOR = samsung、SOC = s5pc110,如果是别的开发板和别的架构,就在makefile里面改。

举例ARCH的值的意义。

 在makefile中有下面代码,不同架构cpu上的交叉编译工具链不同,一般都是前缀不同,后缀一样,最后能达到相同效果,比如我们S5PV210使用的arm-2009q3工具链里面的-gcc编译代码用的一个应用程序,首先我们要知道这个工具链里面前缀,让后在makefile里面赋给COMPILE 这个环境变量,然后导出(在下面config.mk),最后我们才能在任意位置使用arm-none-linux-gnueabi-gcc。否则找不到这个小应用程序去编译我们的.C文件,其他架构则也要知道这个交叉编译工具链的前缀,同上,正对自己的板子写makefile。这里ARCH就很重要。其他4个值都很重要。

ifeq ($(ARCH),arm)

CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-

endif

ifeq ($(ARCH),i386)

CROSS_COMPILE = i386-linux-

endif

(2)makefile中引出的$(TOPDIR)/config.mk(主Makefile的185行)

这里面很多都是定义与交叉编译和链接属性有关,我们不是搞这块的,不做研究,但是有要自己加的。我们自己做裸机的时候在makefile里都是自己定义CC = arm-linux-gcc等,这里分两步 CC = $(CROSS_COMPILE)-gcc,因为要适应所有的架构。与ARCH有关。

(3)config.mk会去生成了一个autoconfig.mk。

 

这个文件的作用就是用来指导整个uboot的编译过程。这个文件的内容其实就是很多CONFIG_开头的宏(可以理解为变量),这些宏/变量会影响我们uboot编译过程的走向(原理就是条件编译)。在uboot代码中有很多地方使用条件编译进行编写,这个条件编译是用来实现可移植性的。(可以说uboot的源代码在很大程度来说是拼凑起来的,同一个代码包含了各种不同开发板的适用代码,用条件编译进行区别。)

这个文件不是凭空产生的,配置过程也是需要原材料来产生这个文件的。原材料在源码目录的inlcude/configs/xxx.h头文件。(X210开发板中为include/configs/x210_sd.h)。这个h头文件里面全都是宏定义,这些宏定义就是我们对当前开发板的移植。每一个开发板的移植都对应这个目录下的一个头文件,这个头文件里每一个宏定义都很重要,这些配置的宏定义就是我们移植uboot的关键所在。

(4)config.mk里面把(1)中5个参数设置好后的值用去包含各个下面的config.mk,还有我们之前x210_sd_config.h配置的选项,会在这里指导生成u-boot的中间文件如u-boot.lds、u-boot.debug等,里面还包括自动推到规则、链接时指定链接地址等。

具体细节分析在2.4课件部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值