免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1842 | 回复: 1

[BootLoader] 关于重定位的问题 [复制链接]

论坛徽章:
0
发表于 2014-11-25 18:34 |显示全部楼层
static int nandll_read_page (unsigned char *buf, unsigned long addr, int large_block)
{
        int i;
        int page_size = 512;

        if (large_block==2)
            page_size = 4096;

        nand_select();

        NFCMMD = 0;

        /* Write Address */
        NFADDR = 0;

        if (large_block)
            NFADDR = 0;

        NFADDR = (addr) & 0xff;
        NFADDR = (addr >> & 0xff;
        NFADDR = (addr >> 16) & 0xff;

        if (large_block)
            NFCMMD = 0x30;

        wait_ready();
        for(i=0; i < page_size; i++) {
            *buf++ = NFDATA;
        }

        nand_deselect();

        return 0;
}

int copy2ddr(unsigned int nand_start, unsigned int ddr_start, unsigned int len)
{
        unsigned char *dest = (unsigned char *)ddr_start;
        unsigned int free_page = 0;
        int i;

        if(len > 8192)
        {
                free_page = ((len - 8192)+4096) >> 12;
        }
        /* 初始化nand flash controller */
        nand_init();
       
        /* 读nand flash */
        /* Read pages */
        for (i = 0; i < 4; i++, dest+=204{
                nandll_read_page(dest, i, 2);
        }

        /* Read pages */
        for (i = 4; i < (free_page+4); i++, dest+=8192) {
                nandll_read_page(dest, i, 2);
        }
       
        return 0;
}


nandll_read_page(dest, i, 2);这个函数传递的地址参数i感觉有点奇怪?还有copy2ddr()中为什么分两次移动数据呢?求大神帮忙解决(这个是韦东山视频里的代码)

论坛徽章:
0
发表于 2014-12-01 14:21 |显示全部楼层
本帖最后由 xshenpan 于 2014-12-01 14:22 编辑

你可以参看这个博客http:// blog . csdn . net/girlkoo/article/details/8115849
没权限发链接,去掉空格再访问
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP