uboot的移植分析3

时间:2022-04-26 04:44:52

从零开始的uboot的系统移植3

接上节的uboot的系统移植的2开始说明:

根据朱友鹏uboot移植视频:

继续makefile的分析

1、如何移植uboot,就是懂他的规则和含义就可以了,环境变量也要弄懂;


ARCH   和 CROSS_COMPILE环境变量:

1.1、接下来导出了两个很重要的环境变量

一个是ARCH:上面导出的,植来自于我们的配置过程,他的植会影响后面CROSS_COMPILE环境变量


ARCH:  定义我们当前编译的目标CPU的架构:

arm     这里主要用arm的架构


CROSS_COMPILE是被arch所确定的,那么我们只能在arm的分支去设置CROSS_COMPILE值

不一定非得全部路径,相对路径也是可以的。

如果已经将工具链导出到环境变量,并且已经设置了符号链接,这样他就可以直接用

arm-linux- 就可以直接找到。

是我们定义交叉工具链的前缀:

就是方便我们移植时,不用把所有的都修改:

用前缀加上我们的后缀,来定义编译过程中用到的各种交叉工具链。


PS: 我们把前缀和后缀分开还有一个原因:在不同的CPU架构上的交叉编译工具链,

只是前缀不一样,后缀都是一样的。(136-182行makefile来确定)(确定的方法就是根据条件编译)


我们实际执行时:我们可以在makefile中更改设置CROSS_COMPILE的植,也可以在编译

时用 make CROSS_COMPILE=xxxx  来覆盖传参的植。


2、#include $(TOPTREE)/config.mk

在这里添加一个makefile主makefile185行

这个文件主要是定义了编译工具的使用,

uboot的移植分析3

我们已经定义了前缀,后缀就像上图所示的直接加上前缀的结尾写上。


我们还有配置生成的autoconfig.mk,里面全部都是CONFIG_XXX   = y
这里面就包含了开发板的配置项目。

autoconfig.mk不是源码提供的,是配置过程自动生成的,(后面的.h所生成)

这个文件的作用就是用来指导整个uboot的编译过程(跟内核的编译有一点像)这个文件的内容

其实就是很多CONFIG_XXX开头的宏定义。其实就是配置过程中的变量。这些宏或者说变量

会影响uboot的编译过程的走向,原理就是条件编译;Y就是编译,N就是不编译,M就是模块编译

同一个代码包含了各种不同开发板的适用代码,用条件编译进行区别。


配置过程也是需要原材料产生的,include/configs/xxx.h头文件。在X210位include/configs/x210_sd.h

uboot的移植分析3

这个头文件里面全部都是宏定义,就是我们对自己开发板的移植过程。每一个开发板都对应

每一个.h文件,可能有一些是自己原厂生产的,就需要拿大众的进行修改,这个头文件里面

每一个宏定义都十分重要。这些配置的宏定义就是这里的头文件。