u-boot-2013.01.01移植(一)

(一)   进入控制台

使用的开发板是TQ210,天嵌自带的交叉编译器。目前仅支持SD卡启动。

Uboot分为BL1和BL2两部分。BL1阶段初始化内存、时钟等, 负责BL2代码的搬运。

板级文件使用goni作为模板修改。下面说一下s5p_goni.h比较重要的参数设置。

#defineCONFIG_SYS_TEXT_BASE               0x23E00000

CONFIG_SYS_TEXT_BASE是BL2代码的运行地址,BL1把BL2代码搬运到该地址。

#define RESERVE_BLOCK_SIZE                    (512) 

#define BL1_SIZE                                                      (16<< 10) /*16 K reserved for BL1*/ 

#defineCONFIG_ENV_OFFSET                     (RESERVE_BLOCK_SIZE+ BL1_SIZE)

CONFIG_ENV_OFFSET环境变量存储的位置。S5pv210内部固化的代码上电时会拷贝SD卡第一扇区开始的16K数据,然后校验执行,环境变量应该保存在该区域之外,避免破化BL1代码。

#define CONFIG_SPL_TEXT_BASE                      0xD0020010

BL1代码的运行地址。

#defineCONFIG_SPL_STACK                                           0xD0037D80

BL1阶段调用C代码之前设置的栈地址。

这两个地址可以从下图中看出。

u-boot-2013.01.01移植(一)_第1张图片

u-boot-2013.01.01移植(一)_第2张图片

BL1代码的前16字节用途如上图所示。Size和checksum用来校验代码的完整性。如果校验失败就不能启动。

 

编译

make s5p_goni_config

make CROSS_COMPILE=arm-linux-

 

烧写

SD启动卡的制作要求如下:

u-boot-2013.01.01移植(一)_第3张图片

Block0一般是用来存放分区表,三星避开block0的好处是SD卡不仅能用来启动,还可以分区当作普通卡使用。


dd bs=512   seek=1 if=/dev/zero of=/dev/sdb   count=2048

dd iflag=dsyncoflag=dsync if=spl/goni-spl.bin of=/dev/sdb seek=1

dd iflag=dsyncoflag=dsync if=u-boot.bin of=/dev/sdb seek=49

 

启动信息

OK

U-Boot SPL2013.01.01 (May 26 2014 - 21:05:28)

OMR_VALUE=0x0000000C

boot device -0x00000002

ch=0xEB000000

Jumping toU-Boot

image entrypoint: 0x23E00000

 

 

U-Boot2013.01.01 (May 26 2014 - 21:05:28) for Goni

 

CPU:   S5PC110@1000MHz

Board:         Goni

DRAM:  1 GiB

WARNING: Cachesnot enabled

MMC:   SAMSUNG SDHCI: 0

*** Warning -bad CRC, using default environment

 

In:    serial

Out:   serial

Err:   serial

Hit any key tostop autoboot:  0

Goni #

 

下载地址

http://download.csdn.net/detail/gq213/7407797

补丁文件是在官方版uboot基础上生成的

 


你可能感兴趣的:(uboot移植)