移植U-BOOT-2016.11到JZ2440详细教程(2)

验证编译环境

从网上下载U-BOOT程序并解压到任意目录下。加载到U-BOOT根文件目录,输入

make smdk2410_config

因为U-BOOT对许多单板都做了支持,这个指令表示我们使用的是smk2410单板。

当显现如下时,表示配置成功。
在这里插入图片描述
接着我们输入

make


发现跳出一大堆错误信息,经过查找发现是不知道从什么版本开始,U-BOOT就不在指定编译器,需要我们手动指定。这里有两个方法:

  1. 在输入make指令之前先输入
make ARCH=arm CROSS_COMPILE=arm-linux-
  1. 修改U-BOOT根目录下的Makefile文件

打开U-BOOT根目录下的Makefile文件248行左右,在endif后面加上一句

CROSS_COMPILE=arm-linux-

如下所示:

# set default to nothing for native builds
ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE ?=
endif
CROSS_COMPILE=arm-linux-
KCONFIG_CONFIG	?= .config
export KCONFIG_CONFIG

最后保存退出,再make一次。
在这里插入图片描述
发现bin文件成功生成,说明我们用的编译环境没有问题。

创建一个新的单板

因为U-BOOT 2016.11支持S3C2410,所以我们只要复制一份,对其中的一些配置进行修改就可以让U-BOOT支持我们现在用的S3C2440单板。

1.创建单板目录

直接复制 board/samsung/ 目录下的smdk2410文件夹到当前目录,并重命名为smdk2440

但是复制过来的肯定是不能直接用的,接着看smdk2440文件夹下的有哪些文件
在这里插入图片描述
首先我们把smdk2410.c重命名为smdk2440.c
既然文件名改了,那么对应的Makefile肯定也要改,修改后如下

#
# (C) Copyright 2000-2006
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# SPDX-License-Identifier:	GPL-2.0+
#

obj-y	:= smdk2440.o
obj-y	+= lowlevel_init.o

接着我们打开MAINTAINERS文件,“maintainer“”按字面意思翻译过来是“维修者”,但是看内容应该是告诉编译器一些头文件和配置文件的路径,修改后如下

SMDK2440 BOARD
M:	David Müller <d.mueller@elsoft.ch>
S:	Maintained
F:	board/samsung/smdk2440/
F:	include/configs/smdk2440.h
F:	configs/smdk2440_defconfig

首先第4行应该是说明SMDK2440单板的路径是board/samsung/smdk2440/,这个没有问题,我们就是在这个目录下创建单板的。接着看第5行,应该是smdk2440头文件的路径,我们切过去看一下,发现没有这个文件,说明到时候需要我们自己添加。接着看第6行,应该是smdk2440配置文件的路径,切过去看,也没有这个文件,需要我们自己添加。

最后我们打开Kconfig文件 ,发现是关于系统配置用的,修改后如下

if TARGET_SMDK2440

config SYS_BOARD
	default "smdk2440"

config SYS_VENDOR
	default "samsung"

config SYS_SOC
	default "s3c24x0"

config SYS_CONFIG_NAME
	default "smdk2440"

endif

这个Kconfig文件的意思,是如果定义了TARGET_SMDK2440,即我们的目标是让U-BOOT支持S3C2440,那么配置系统单板为smdk2440,芯片厂家为samsung,SOC(片上系统)为s3c24x0,系统或单板名字为smdk2440

这样我们smdk2440单板目录下的文件就暂时都修改好了,但是我们发现少了 include/configs/smdk2440.hconfigs/smdk2440_defconfig两个文件,以及一个TARGET_SMDK2440宏,所以我们下一步就要去解决这几个问题。

首先解决文件问题,因为有可能TARGET_SMDK2440宏就定义在这两个文件中。

我们先看U-BOOT原本就有的include/configs/smdk2410.h文件,发现里面定义了很多宏,其中一些宏用来说明地址,一些宏用来控制编译器编译哪些文件,从而裁剪U-BOOT的I2C,USB,SPI等功能。这里我们先不修改,直接把smdk2410.h复制到当前文件夹,并重命名为smdk2440.h

接着看configs/smdk2410_defconfig,应该也是一些配置,我们复制重命名为smdk2440_defconfig后,修改如下

CONFIG_ARM=y
CONFIG_TARGET_SMDK2440=y
CONFIG_BOOTDELAY=5
# CONFIG_SYS_STDIO_DEREGISTER is not set
# CONFIG_DISPLAY_BOARDINFO is not set
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="SMDK2440 # "
CONFIG_CMD_USB=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
CONFIG_CMD_CACHE=y
CONFIG_CMD_EXT2=y
CONFIG_CMD_FAT=y
CONFIG_CMD_UBI=y
CONFIG_USB=y
CONFIG_USB_STORAGE=y
CONFIG_USB_KEYBOARD=y

发现U-BOOT原本的两个文件中都没有找到TARGET_SMDK2410这个宏,所以我们要用到Linux的查找功能。输入

grep -rn "TARGET_SMDK2410" ~/work/project/u-boot-2016.11/

这里r表示递归查找,n表示显示在文件中的行数,TARGET_SMDK2410要查找的关键词,~/work/project/u-boot-2016.11/表示我的查找文件夹,大家根据自己的实际情况修改。
在这里插入图片描述
查找结束后一共有3个匹配项,只有最后一个完全匹配,所以我们打开
arch/arm/Kconfig
文件,在后面添加一个config选项,如图:
在这里插入图片描述
接着我们回到根文件夹,试着配置编译一下,发现出现问题。
在这里插入图片描述
经过网上查找发现应该要在arch/arm/Kconfig998行后面加上一句

source "board/samsung/smdk2440/Kconfig"

最后如图:
在这里插入图片描述
接着我们再回到根文件夹,输入

make smdk2440_config


make

在这里插入图片描述
u-boot.bin文件成功生成,这样我们一个单板就创建完成了。

下面附上补丁文件链接:
链接:https://pan.baidu.com/s/1v85_5VApVgmMG9IXrwgCiQ
提取码:bb6y

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值