tag 标签: nand配置

相关博文
  • 热度 11
    2016-1-26 10:36
    895 次阅读|
    0 个评论
      S5PV210的Nand flash跟2440和6410的Nand flash配置差不多,不同的是S5PV210的功能更加强大,尤其是S5PV210的硬件ECC(本文不涉及S5PV210中Nand ECC配置)。整体上来讲,S5PV210的Nand flash配置还是非常简单的。   这样,Nand flash的初始化函数就出来了: void  nand_init(){       NFCONF = (323)|(112)|(28)|(04)|(11);       NFCONT = (10)|(11);          MP0_1CON = ~(0xffff8);       MP0_1CON |= 0x33338;       MP0_3CON = 0x22222222;       MP0_6CON = 0x22222222;          nand_reset();   }     至于nand_reset,通常是Nand flash配置完成之后就进行一次reset,这样使Nand flash恢复到最初状态。   这样,Nand flash初始化好了,但是要访问Nand flash还需要按照时序对其操作,Nand方式启动时只需要实现Nand flash的读操作,为此,这里只列举一下几个读相关的操作:     (1)Nand flash reset static   void  nand_reset(){       nand_select_chip();       nand_cmd(0xff);       nand_wait();       nand_deselect_chip();   }     (2)Nand flash写地址 static   void  nand_addr(unsigned  long  page_addr, unsigned  long  page_offset){       NFADDR = (page_offset0)  0xFF;       NFADDR = (page_offset8)  0x7;       NFADDR = (page_addr)  0xFF;       NFADDR = (page_addr8)  0xFF;       NFADDR = (page_addr16)  0x07;   }     (3)Nand flash读ID void  nand_read_id( char  id  = nand_read();          nand_deselect_chip();   }     (4)Nand flash读页数据 void  nand_read_page(unsigned  char * buf, unsigned  long  page_addr){        int  i;       nand_select_chip();       nand_cmd(0);       nand_addr(page_addr, 0);       nand_cmd(0x30);       nand_wait();        for (i = 0; i != PAGE_SIZE; ++i){           *buf++ = nand_read();       }       nand_deselect_chip();   }     上面是几个比较重要的Nand flash读相关的操作函数,到这里,您自己补充一下引用到的小函数就可以正常的进行Nand flash操作了,我把我写的代码上传到我的CSDN资源里,如果需要的话可以拿去参考。另外,如果需要编写Nand flash写操作的代码可以参考一下本人博客中6410的Nand flash配置部分和Nand flash的芯片手册,原理都是相通的。