主题 : [转] 让6410-uboot用SD卡跑起来! 复制链接 | 浏览器收藏 | 打印
级别: 风云使者
UID: 36096
精华: 3
发帖: 2513
金钱: 14075 两
威望: 2815 点
贡献值: 3 点
综合积分: 5086 分
注册时间: 2011-01-11
最后登录: 2015-11-15
楼主  发表于: 2011-08-10 15:59

 [转] 让6410-uboot用SD卡跑起来!

这里使用的uboot并非uboot官方发布的uboot代码,而是为三星定制的一个uboot版本s3c-u-boot-1.1.6,其代码作者就包括了三星的程序员与denx的员工。这个版本支持SD启动,不过默认是nand启动,使它支持uboot需要做以下事情:

  1、  虽然支持uboot启动,但是uboot代码里不叫SD启动方式,而是叫movinand启动方式,在incluede/configs/smdk6410.h中就有这个选项,所以在这个文件里关闭nand启动,打开movinand启动就可以了:

  //#define CONFIG_BOOT_NOR

  //#define CONFIG_BOOT_NAND       注释nand启动

  #define CONFIG_BOOT_MOVINAND   打开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/

  movi.h中HSMMC_CHANNEL修改为1。

  3、然后如果将上述修改后编译出来的u-boot.bin通过IROM_Fusing_tools直接烧写到SD中也是没办法启动的,需要运行以下的命令进行处理:

  cat u-boot.bin >> temp

  cat u-boot.bin >> temp

  split -b 256k temp

  mv xaa u-boot_256k.bin

  split -b 8k u-boot.bin

  mv xaa u-boot_8k.bin

  cat u-boot_256k.bin >> u-boot_mmc.bin

  cat u-boot_8k.bin >> u-boot_mmc.bin

  经过这些处理,实际上是将u-boot.bin内容重复一次后(为了保证达到256K,如果这个bin更小,那么可能需要重复3次、4次,直到超过256K 为止),将前256K制成u-boot_256k.bin,再将前8K制成u-boot_8k.bin,最后将u-boot_256k.bin +u-boot_8k.bin合并成一个256K+8K大小的文件u-boot_mmc.bin,这个文件前256K就是u-boot_256k.bin 而后8K就是u-boot_8k.bin。把这个u-boot_mmc.bin通过IROM_Fusing_tools烧写到SD卡就可以成功启动系统了。 来源:考试大
极度缺钱,求捐赠……支付宝兼邮箱:huming2207@qq.com
学习Openwrt的。。。
级别: 侠客
UID: 107017
精华: 0
发帖: 64
金钱: 320 两
威望: 64 点
贡献值: 0 点
综合积分: 128 分
注册时间: 2014-08-11
最后登录: 2015-07-10
1楼  发表于: 2015-01-14 10:13
     这个尝试过。。。