uboot移植(十四)实现 NAND 启动 u-boot

        从 NAND 启动 u-boot,需要 BL1 初始化 NAND 控制器,然后从 NAND 拷贝 BL2 到 DDR 内存。这里的BL1 即我们移植的 u-boot-spl.bin, BL2 即我们移植的 u-boot.bin。

        在 u-boot.bin 中的 NAND 驱动比较大,它包含了很多功能,而 u-boot-spl.bin 中只需要从 NAND 拷贝
BL2 到 DDR 就行了,因此我们可以在 u-boot-spl.bin 进行简单的 NAND 控制器初始化,然后使用三星提供
的带 8 位硬件 ECC 的 NAND 拷贝函数来拷贝 u-boot.bin 到 DDR 内存。

我们修改 board/samsung/smdkv210/smdkv210.c 中的 copy_bl2_to_ram 函数,在这个函数中首先判断
当前是从 SD 卡启动还是从 NAND 启动,如果是从 NAND 启动则进行 NAND 初始化,然后从 NAND 拷贝
BL2 到 DDR 内存,如果是从 SD 卡启动,则从 SD 卡拷贝 BL2 到 DDR 内存。
        我们通过读取 OMR 寄存器来判断 S5PV210 当前是从哪个设备启动的。 参考手册 Table 6-3,手册上并没有说 OM 寄存器的地址,我是参考的三星原厂的 u-boot 代码。
代码中都有详细注释,具体请看代码。
        重新编译,成功生成 spl/smdkv210-spl.bin 和 u-boot.bin,将它们全部拷贝到 tftp 服务器目录下,然后就可以使用上一节移植的 u-boot 来烧写最新的 u-boot 到 NAND FLASH。

1、从 SD 卡启动开发板擦除整个 NAND FLASH

2、使用 tftpboot 下载 smdkv210-spl.bin 到 DDR 的起始地址 0x20000000

3、烧写 smdkv210-spl.bin 到 NAND 的 0 地址

4、使用 tftpboot 下载 u-boot.bin 到 DDR 的起始地址 0x20000000

5、烧写 u-boot.bin 到 NAND FLASH 的 0x4000 地址(0x0~0x3FFF 预留给 smdkv210-spl.bin)

拨动拨码开关,从 NAND 启动开发板。

扩展:烧写合成文件 u-boot-a.bin

结合uboot移植(十五)合并 smdkv210-spl.bin 和 u-boot.bin 为一个文件直接烧写BL1与BL2至NandFlash启动

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值