NAND Flash内存设备的读写控制设计

时间:2013-01-17来源:网络


图3 读页流程


图4 读页时序

2.2.2 读页主要函数

  NAND Flash读页的主要函数有nand_read、nand_do_read_ops、nand_command_lp、nand_read_page_hwecc、read_buf。MTD上层会调用struct mtd_info中的读page函数,即nand_read函数,然后调用nand_do_read_ops,接着会调用struct nand_chip中的cmdfunc函数。这个cmdfunc函数与具体的NAND controller相关,它的作用是使NAND controller向NAND芯片发出读命令,NAND芯片收到命令后,就会做好准备等待NAND controller下一步的读取。接着nand_read函数又会调用struct nand_ecc_ctrl中的read_page函数,而read_page函数又会调用struct nand_chip中read_buf函数,从而真正把NAND芯片中的数据读取到buffer中。read_buf函数返回后,read_page函数就会对buffer中的数据做一些处理,比如ECC校验。读页主要函数代码如下:

static int nand_do_read_ops(struct mtd_info *mtd, loff_t from, struct mtd_oob_ops *ops) {
  ……
  while(1) {
    ……
    /*先发送对应的读页(read page)的命令*/
    chip博cmdfunc(mtd, NAND_CMD_READ0, 0x00, page);
    ……
    /*发送完命令,接着去调用read_page函数读取对应的数据*/
    ret=chip博ecc.read_page(mtd, chip, bufpoi);
    buf+=bytes;
    ……
    readlen-=bytes;
    if(!readlen)
      break;
    col=0;/*页内地址对齐*/
    ealpage++;/*页号加1*/
    page=realpage chip博pagemask;
    ……
  }
  ……
}

2.3 NAND Flash的写页流程

2.3.1 写页时序


图5 写页时序

  从图5写页时序可以看到,如果要实现写一个页的数据,就要发送Page program的命令,而且是分两个周期,即分两次发送对应的命令。第一次是80h,第二次是10h,而两次命令中间,需要发送对应的要写的页的地址和数据。第3个周期是发送读状态寄存器命令70h, 如果I/O口为低电平,表示数据写入成功,否则失败。写页流程如图6所示。

图6 写页流程

2.3.2 写页主要函数

  以写NAND Flash芯片为例,其写数据的工作过程:首先,MTD上层会调用struct mtd_info中的写page函数,即nand_write函数,然后调用nand_do_read_ops。接着函数会调用struct nand_chip中cmdfunc函数,这个cmdfunc函数与具体的NAND controller相关,它的作用是使NAND controller向NAND芯片发出写命令,NAND芯片收到命令后,就会做好准备等待NAND controller下一步的读取。接着nand_write函数又会调用struct nand_ecc_ctrl中的write_page函数,而write_page函数又会调用struct nand_chip中write_buf函数,从而真正把数据写到NAND Flash芯片中。

  MTD读取数据的入口是nand_write,然后调用nand_do_write_ops,此函数主体代码如下:
static int nand_do_write_ops(struct mtd_info *mtd, loff_t to, struct mtd_oob_ops *ops){
  ……
  if (nand_check_wp(mtd))/*检测,写保护*/
    return -EIO;
  ……
  while(1){
    ……
    ret=chip博write_page(mtd, chip, wbuf, page, cached,(ops博mode==MTD_OOB_RAW));/*写页数据*/
    writelen-=bytes;
    if (!writelen)
      break;
    column=0; /*页内地址对齐*/
    buf+=bytes;
    realpage++; /*页号加1*/
    page=realpage chip博pagemask;
    ……
    }
……
}

1 2

关键词: 控制 设计 读写 设备 Flash 内存 NAND

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版