Chinaunix

标题: 关于重定位的问题 [打印本页]

作者: 一笑fcl    时间: 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()中为什么分两次移动数据呢?求大神帮忙解决(这个是韦东山视频里的代码)
作者: xshenpan    时间: 2014-12-01 14:21
本帖最后由 xshenpan 于 2014-12-01 14:22 编辑

你可以参看这个博客http:// blog . csdn . net/girlkoo/article/details/8115849
没权限发链接,去掉空格再访问




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2