[arm-linux学习-(nandflash)]

在FL2440开发板中的地址空间

  1. SDRAM,网卡DM9000,片内内存SRAM以及寄存器它们都有一个CPU统一编址的地址空间
  2. NANDFLASH没有地址总线,它由两个线来决定它的数据线上传输的是数据、指令还是地址

注意:一般说nandflash的地址时,将oob空间忽略掉,也就是oob空间不参与编址
因为S3C2440中有nandflash控制器,所以只需要将nandflash芯片中的各个引脚与S3C2440上的nandflash控制器引脚相连,然后配置S3C2440中nandflash的寄存器,进行操作即可,其中寄存器的值需要根据外接nandflash芯片进行查看

对flash存储器件的可靠性需要考虑三点:位反转、坏块和可擦除次数

nandflash与norflash对比

  1. Norflash 支持XIP,代码可以直接在其上运行,无需复制到内存上
  2. 在nandflash上发生位反转的概率更高,推荐使用EDC/ECC进行错误校验和恢复
  3. nandflash上有坏块随机分布,在使用前需要将坏块扫描出来,确保不再使用它们
  4. norflash上常使用jffs2文件系统,nandflash上使用yaffs文件系统

访问NANDFLASH

nandflash写之前要先擦除

从硬件上访问

  1. 发送命令, CLE拉高, 输出DATA BUS
  2. 发送Addr, ALE拉高, 输出DATA BUS
  3. 传输数据,Read/Write

通过2440访问

主要是通过操作寄存器来访问
初始化:

  1. 设置NFCONF寄存器
    主要配置时序,以及nandflash的位数
  2. 设置NFCONT寄存器
  3. 复位nandflash

读操作:

  1. 选中芯片
  2. 发出读命令,先发0x00,
  3. 写地址
    写入地址时,以K9F2G08 256MB的nandflash为例,发送地址时,需要将地址拆分为5个字节发送,参看数据手册P9,根据使用的芯片不同,写入地址方式也不相同,具体根据实际使用的芯片来操作
  4. 如果是大页,则还需要发送0x30命令,否则,不需要发送0x30
  5. 等待空闲

你可能感兴趣的:([arm-linux学习-(nandflash)])