u-boot 体系架构移植流程
发布时间:2021-11-25 21:12:04 所属栏目:教程 来源:互联网
导读:移植到u-boot-1.1.4 安装交叉编译工具: u-boot-1.1.4版本比较老,交叉编译工具使用eldk4.0, ELDK(Embedded Linux Development Kit)是德国DENX软件工程公司推出的嵌入式Linux开发套件,而DENX公司的CEO就是大名鼎鼎的U-Boot的维护人Wolfgang Denk。从ELDK
移植到u-boot-1.1.4 安装交叉编译工具: u-boot-1.1.4版本比较老,交叉编译工具使用eldk4.0, ELDK(Embedded Linux Development Kit)是德国DENX软件工程公司推出的嵌入式Linux开发套件,而DENX公司的CEO就是大名鼎鼎的U-Boot的维护人Wolfgang Denk。从ELDK 4.0开始,这个开发套件开始提供针对ARM和MIPS的交叉编译环境(ELDK最初只支持PPC)。 下载后,mout iso,输入如下命令安装:/media/cdrom0/install -d /opt export PATH=$PATH:/opt/usr/bin/ export CROSS_COMPILE=/opt/usr/bin/arm-linux- 交叉编译工具安装完毕。 熟知uboot启动流程,uboot体系架构的基础之上,可以安装如下步骤移植uboot,移植的原则是u-boot-1.1.4体系架构下的原来的所有单板都不受影响。 移植uboot步骤: 1、u-boot-1.1.4/cpu/arm***/ 根据芯片源码u-boot-s/cpu/arm***/目录下的文件,修改u-boot-1.1.4/cpu/arm***/下的文件: a、config.mk基本不需要修改; b、cpu.c要改,实在做不到不改动影响原来的代码时,可以加条件编译; c、interrupts.c文件也要修改,注意u-boot-s中interrupts.c文件可能不是放在这个文件夹下面,可能放在/lib-arm/下面,那么可以把/lib-arm/目录下的interrupts.c搬到这个目录下; d、Makefile可以不修改,需试试看,我改了。 e、start.s改动不多,但是最好不包含其余的文件,比如如果用不到千万不要包含common.h文件,否则很难编译通过。 f、添加目录$(SOC)/,添加这个目录之后,注意这个目录如何把它编译进u-boot,这是由u-boot-1.1.4/Makefile管理的,注意查看其中有这样一句: ifdef SOC LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a endif 这样我们添加的目录就能够顺利编入u-boot。 2、u-boot-1.1.4/Makefile的修改 a、仔细比对两个Makefile,u-boot-s中申明的变量,只要不影响原来的u-boot-1.1.4都可以申明,uboot-s中与uboot-1.1.4中不同但是等价的写法,都直接采用u-boot-1.1.4中原来的写法,添加内容或修改内容都不能妨碍原来的代码。 b、添加单板_config的目标文件。 c、同时注意添加board下的单板文件夹时,对应的u-boot-1.1.4/Makefile中如下语句: LIBS += $(shell if [ -f board/$(VENDOR)/common/Makefile ]; then echo "board/$(VENDOR)/common/lib$(VENDOR).a"; fi) LIBS += board/$(BOARDDIR)/lib$(BOARD).a 比如:可能我需要在board下添加如下文件夹board/$(VENDOR)/common和board/$(VENDOR)/$(BOARD)两个文件夹,由以上两句指定就能顺利编译进u-boot。 d、$(BOARDDIR)由u-boot-1.1.4/config.mk中如下语句指定: ifdef VENDOR BOARDDIR = $(VENDOR)/$(BOARD) else BOARDDIR = $(BOARD) endif 3、添加board/$(VENDOR)/common和board/$(VENDOR)/$(BOARD)两个文件夹 4、添加include/asm-arm/arch-SOC/头文件目录 5、添加include/configs/单板.h文件 因为这个文件就是uboot的配置文件,非常关键,所以对每一行都要注意此行需要指定的内容,在uboot中是否也是这个写法,因为uboot不同的版本写法一样,所以一定要根据u-boot-1.1.4目标代码来修改。 6、其余根据gcc的提示来包含文件或者修改源码。 若进入start_armboot()函数,报很多函数找不到,那些函数基本上都是接口驱动函数提供的,注意将u-boot-s的相应的接口驱动添加进去,uboot顺利编译通过。 ![]() (编辑:江门站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |