使uboot支持S3C6410的SD启动.doc使 uboot 支持 S3C6410 的 SD 启动
2010-4-1 10:46:00
这里使用的 uboot 并非 uboot 官方发布的 uboot 代码,而是为三星定制的一个 uboot 版本
s3c-u-boot- ,其代码作者就包括了三星的程序员与 denx 的员工。这个版本支持
SD 启动,不过默认是 nand 启动,使它支持 uboot 需要做以下事情:
nand
1、 虽然支持 uboot 启动,但是 uboot 代码里不叫 SD 启动方式,而是叫 movinand 启动 方式,在 incluede/configs/ 中就有这个选项,所以在这个文件里关闭 启动,打开 movinand 启动就可以了:
//#define CONFIG_BOOT_NOR
注释 nand 启动
打开 movinand 启动
//#define CONFIG_BOOT_NAND
#define CONFIG_BOOT_MOVINAND
//#define CONFIG_BOOT_ONENAND //#define CONFIG_BOOT_ONENAND_IROM #define CONFIG_NAND //#define CONFIG_ONENAND
#define CONFIG_MOVINAND 打开 movinand 选项,使 uboot 支持 movinand 的操作
2、如果单纯是做上面的改动,还是不够的,在运行的时候会发现到了一定的时候
uboot 就死掉了,其实这是因为 uboot 中假设 SMDK6410 在使用 SD 方式的时候是从 CH0 启 动的,但是手上的这个板子是通过 CH1 启动,那么在运行被复制到 SRAM 中的 8K 代码时 候没办法在 CH0 检测到 SD ,更没办法将 SD 里的代码复制到 SDRAM 中。修改办法是在 incluede/ 中 HSMMC_CHANNEL 修改为 1
3、然后如果将上述修改后编译出来的 u- 通过 IROM_Fusing_tools 直接烧写到
SD 中也是没办法启动的,需要运行以下的命令进行处理:
cat u- >> temp
cat u- >> temp
split -b 256k temp
mv xaa u-
split -b 8k u-
mv xaa u-
cat u- >> u-
cat u- >> u-
经过这些处理,实际上是将 u- 内容重复一次后(为了保证达到 256K ,如果这
个 bin 更小,那么可能需要重复 3 次、 4 次,直到超过 256K 为止),将前 256K 制成 u-
,再将前 8K 制成 u- ,最后将 u- +u-
合并成一个 256K+8K 大小的文件 u- ,这个文件前 256K 就是 u- boot_
使uboot支持S3C6410的SD启动 来自淘豆网www.taodocs.com转载请标明出处.