S3C6410能够通过SD/SDHC卡启动UBOOT,下面介绍如何把s3c-u-boot下载到SD/SDHC卡的对应位置,如下是总的位置信息:
1. 使用2G的SD卡(我的是SANDISK的2G卡)的话BL1应该下载到SD卡的位置是:总容量-1042个扇区=1977614336-1024*512=1977605120字节
BL2下载的位置是:总的容量-1042个扇区-256K=1977342976字节
目前把三星的SD BOOT 编译完后生成的前8K下载到BL1的位置,然后把整个SDBOOT下载到BL2的位置后,UBOOT能够在串口上输出UBOOT的信息,但还有BUG,信息如下:
U-Boot1.1.6 (Jul 21 2012 - 16:58:21) for SMDK6410
CPU: S3C6410@532MHz
Fclk = 532MHz, Hclk = 133MHz, Pclk =66MHz, Serial = CLKUART (SYNC Mode)
Board: SMDK6410
DRAM: 128 MB
Flash: 0 kB
NAND: No oob scheme defined for oobsize 32
BUG:failure at nand_base.c:2572/nand_scan_tail()!
BUG!
reset...
如果把UBOOT 中的nand_init()屏蔽掉的话,就不会出现错误信息,UBOOT能够正常的启动但NANDFLASH不能够使用,启动的信息如下:
U-Boot1.1.6 (Aug 18 2012 - 16:06:53) for SMDK6410
CPU: S3C6410@532MHz
Fclk = 532MHz, Hclk = 133MHz, Pclk =66MHz, Serial = CLKUART (SYNC Mode)
Board: SMDK6410
DRAM: 128 MB
Flash: 0 kB
SanDiskMMC: => rca=0x0000e624
1887MB
In: serial
Out: serial
Err: serial
Net: Not Found CS8900@0x18800300
Hitany key to stop autoboot: 0
SMDK6410# saveenv
SavingEnvironment to MoviNAND...
done
SMDK6410#
证明UBOOT的SD卡驱动是没有问题的,主要是NANDFLASH的驱动还需要修改。
2.如果是4G的SDHC(我的SDHC卡是KINGSTON)的话BL1应该下载到SDHC卡的位置是:总容量-1042个扇区=3904897024-1024*512=3904363520字节
BL2下载的位置是:总的容量-1042个扇区-256K=3904101376字节
目前把三星的SD BOOT 编译完后生成的前8K下载到BL1的位置,然后把整个SDBOOT下载到BL2的位置后,UBOOT能够在串口上输出UBOOT的信息,但还有BUG,信息如下:
U-Boot1.1.6 (Jul 21 2012 - 16:58:21) for SMDK6410
CPU: S3C6410@532MHz
Fclk = 532MHz, Hclk = 133MHz, Pclk =66MHz, Serial = CLKUART (SYNC Mode)
Board: SMDK6410
DRAM: 128 MB
Flash: 0 kB
NAND: No oob scheme defined for oobsize 32
BUG:failure at nand_base.c:2572/nand_scan_tail()!
BUG!
reset...
如果把UBOOT 中的nand_init()屏蔽掉的话,会出现MOVI_NAND的错误。
所以,UBOOT不支持SDHC卡的驱动和NANDFLASH的驱动,需要针对SDHC卡修改驱动和NANDFLASH驱动,才能够使UBOOT正常的工作。
3.另外,编译的命令是 make smdk6410_config make . 在编译的时候注意要打开smdk6410.h中 MOVINAND BOOT的选项以及修改根目录下的Makefile中的CROSS_COMPILE的路径。