新闻中心

EEPW首页>嵌入式系统>设计应用> 基于NAND Flash的大容量立体封装芯片在嵌入式系统中的应用

基于NAND Flash的大容量立体封装芯片在嵌入式系统中的应用

——
作者:叶振荣 王烈洋 时间:2013-11-27 来源:电子产品世界 收藏

软件设计

本文引用地址://m.amcfsurvey.com/article/192739.htm

  根据前面的介绍,通过图3的硬件连接方式,可以实现对芯片的读写,擦除等控制操作,已可以满足各种场合的应用,S698-mil处理器是通过GPIO来操作控制VDNF64G08的,所以需要对底层操作需要比较了解,下面简单介绍一些常用操作的实现。

  S698-mil芯片GPIO0对应的地址为0x2000 0000 – 0x27ff ffff,因为VDNF64G08芯片位宽是8bit的,所以需要把的GPIO位宽也定义成8bit,根据前面的硬件连接可以知道地址低3位对应到VDNF64G08芯片的片选信号,add[4]对应到CLE,add[5]对应到ALE,为了方便编程,这里做以下宏定义 :
  #define NF_ADDREG(CE) (*(volatile unsigned char *) (0x20000010 + CE))
  #define NF_CMDREG(CE) (*(volatile unsigned char *) (0x20000008 + CE))
  #define NF_DATAREG(CE) (*(volatile unsigned char *) (0x20000000 + CE))

  读芯片ID

  根据芯片指令表,可以知道读ID芯片只需要写入命令0x90,然后在写入地址0x0即可,详细操作可以根据以下时序图进行:
  int readID(unsigned char CE,unsigned IDlength)
  {
  unsigned char ID[],i;
  NF_CMDREG(CE) = 0x90;
  NF_ADDREG(CE) = 0x0;
  delayed(1);
  for(i = 0;i < IDlength;i++)
  {
  ID[i] = NF_DATAREG(CE);
  }
  i = i - 1;
  printf("CHIP CE d% ID:0x%x",ID[0]);
  while(i){
  printf("-%x",ID[IDlength - i]);
  i --;
  }
  printf("nr");
  }

  芯片坏块查询

  由于的工艺不能保证的Memory Array在其生命周期中保持性能的可靠,因此,在的生产中及使用过程中会产生坏块。为了检测数据的可靠性,在应用NAND的系统中一般都会采用一定的坏区管理策略,而管理坏区的前提是能比较可靠的进行坏区检测。检测流程如图4所示。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

存储器相关文章:存储器原理


上拉电阻相关文章:上拉电阻原理


评论


相关推荐

技术专区

关闭