u-boot移植

本文档详细介绍了如何在ubuntu 14.04环境下移植u-boot到FS_4412平台。首先,通过下载u-boot-2013.01源码,指定交叉编译器和产品CPU,然后建立和修改配置文件以适应FS_4412。接着,通过编译和添加特定代码实现了看到串口终端信息。在移植过程中,涉及到了三星加密方式、关闭看门狗和初始化串口。最后,通过添加网络初始化代码和配置文件,实现了网卡功能,并完成了对EMMC的初始化,最终成功运行u-boot。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【实验环境】
1、ubuntu 14.04
2、u-boot-2013.01
3、FS_4412平台(EXYNOS 4412)
4、交叉编译器 arm-none-linux-gnueabi-gcc

开始移植:
一、建立自己的平台
1、下载源码 ftp://ftp.denx.de/pub/u-boot/
我们采用的是u-boot-2013.01
2、解压uboot源码并进入目录
把压缩文件拷贝到虚拟机,并解压
$ tar xvf u-boot-2013.01.tar.bz2
$ cd u-boot-2013.013
3、指定交叉编译工具链
$ vim Makefile

ifeq ( ( H O S T A R C H ) , (HOSTARCH), (HOSTARCH),(ARCH))
CROSS_COMPILE ?=
#endif
改为
ifeq(arm,$(ARCH))
CROSS_COMPILE ?= arm-none-linux-gnueabi-
#endif
4、指定产品CPU
我们产品用的CPU是 exynos 4412
查看u-boot源码该CPU 是否已支持
U-boot已支持,见 arch/arm/cpu/armv7/exynos
5、指定产品BOARD
找一个最类似的board配置修改, 这里我们参考的是board/samsung/origen/
$ cp -rf board/samsung/origen/ board/samsung/fs4412
$cd board/samsung/fs4412/
$mv origen.c fs4412.c
$ vim board/samsung/fs4412/Makefile
修改origen.o 为 fs4412.o
$ cd include/configs/
$ vi include/configs/fs4412.h
修改
#define CONFIG_SYS_PROMPT “ORIGEN #”

#define CONFIG_SYS_PROMPT “fs4412 #”

修改
#define CONFIG_IDENT_STRING for ORIGEN

#define CONFIG_IDENT_STRING for fs4412
#vim boards.cfg
参考
origen arm armv7 origen samsung exynos
并在后面新增
fs4412 arm armv7 fs4412 samsung exynos
6、编译u-boot
$ make distclean
$ make fs4412_config
$ make
编译完成后生成的u-boot.bin就是可执行的镜像文件。
但是该文件还不能在我们板子上运行,我们需要对u-boot源代码进行相应的修改。

二、实现能看到串口终端信息
1、确认第一条指令有运行到(点灯法)
在arch/arm/cpu/armv7/start.S 134 行后添加点灯程序
程序从这里启动,添加点灯程序,监控运行
#if 1
ldr r0, =0x11000c40 @GPK2_7 led2
ldr r1, [r0]
bic r1, r1, #0xf0000000
orr r1, r1, #0x10000000
str r1, [r0]

	ldr r0, =0x11000c44
	mov r1,#0xff
	str r1, [r0]

#endif
添加三星加密方式
exynos 需要三星提供的初始引导加密后,我们的u-boot,才能被引导运行
$cp sdfuse_q u-boot-2013.01-rf
注:sdfuse_q 三星提供的加密处理
$cp CodeSign4SecureBoot u-boot-2013.01 -rf
注:CodeSign4SecureBoot 三星提供的安全启动方式

修改Makefile
$vim Makefile
修改实现sdfuse_q的编译

$(obj)u-boot.bin: $(obj)u-boot
$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
$(BOARD_SIZE_CHECK)
下添加
@#./mkuboot
@split -b 14336 u-boot.bin bl2
@+make -C sdfuse_q/
@#cp u-boot.bin u-boot-4212.bin
@#cp u-boot.bin u-boot-4412.bin
@#./sdfuse_q/add_sign
@./sdfuse_q/chksum
@./sdfuse_q/add_padding
@rm bl2a*
@echo
注意是tab键缩进的,否则makefile编译报错
注意如果执行了make distclean 需重新拷贝CodeSign4SecureBoot

拷贝编译脚本
$cp build.sh u-boot-2013.01
$chmod 777 u-boot-2013.01/ build.sh
$ ./buildsh
注:build.sh 脚本方式完成自动添加加密方式,
编译生成所需文件u-boot_fs4412.bin
烧写新的u-boot_fs4412.bin
复位,发现灯有点亮,说明我们的u-boot有运行到

2、实现串口输出
修改lowlevel_init.S文件
$vimboard/samsung/fs4412/lowlevel_init.S
添加临时栈

lowlevel_init:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值