UBOOT SD卡搬运到DDR中

UBOOT SD卡搬运到DDR中
================

去;;;;代码实现::

typedef unsigned int u32;
typedef unsigned long           ulong;

typedef unsigned int (*copy_sd_mmc_to_mem)
(u32 channel, u32 start_block, unsigned char block_size, u32 *trg, u32 init);

void copy_code_to_dram(void)
{
        ulong ch;
        ulong dest = 0x34800000; 
        unsigned int uImage_dest = 30008000;
        unsigned int uImage_sec_nu = 1000(我们自己定义的地方,之前的给uboot留出够了);//从sd卡的第1000个扇区开始去搬运uImage ,当然前提你烧录时候就要
时候把uImage 烧录到sd 卡的第1000个扇区。。。烧录脚本很简单。。。dd iflag=dysnc oflag=dysnc if=uImage of=/dev/sdb (uImage 的生成步骤其实很简单的 :写一下吧:::
在 tools找到mkimage ;;;;mkimage -n "wdh_kernel" -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage ;;;;;;;查看信息:::ll *Image

)
        u32 ret;

        ch = *(volatile u32 *)(0xD0037488);

        copy_sd_mmc_to_mem copy_bl2 =
            (copy_sd_mmc_to_mem) (*(u32 *) (0xD0037F98));
	unsigned int uImage_dest = 0x30008000;
        unsigned int uImage_sec_nu = 1000;
	
	 ulong dest = 0x34800000;
        unsigned int sec_nu = 49;


        if (ch == 0xEB000000) {
                ret = copy_bl2(0, sec_nu,       128,(u32 *)dest , 0);
                ret = copy_bl2(0, sec_nu+128,   128,(u32 *)(dest+0x10000) , 0);
                ret = copy_bl2(0, sec_nu+256,   128,(u32 *)(dest+0x20000) , 0);
                //ret = copy_b12(0, sec_nu+384, 128,(u32 *)(dest+0x30000) , 0);

                for(i = 0;i < 5*10245M大小,其实是4.6M这是smart210的官方zImage 的大小,可以看出的吧);i++)
                {
                        copy_b12(0,uImage_sec_nu + i*2(自动加1K,,,懂了吧),2(一次搬动2个扇区1K 1K 的搬到ddr中去), (unsigned int *)(uImage_dest + i*1024(当然要自动加1K了  你懂的)),0);
                }
        }
serctor 扇区这样的算法会耗时但是比较好写和理解  所以你需要去弄得有效率的话,就可以自己去计算,,,256serctor 去搬运也可以,,,,,这里简化了
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值