(一) 进入控制台
使用的开发板是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代码之前设置的栈地址。
这两个地址可以从下图中看出。
BL1代码的前16字节用途如上图所示。Size和checksum用来校验代码的完整性。如果校验失败就不能启动。
编译
make s5p_goni_config
make CROSS_COMPILE=arm-linux-
烧写
SD启动卡的制作要求如下:
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基础上生成的