在FL2440开发板中的地址空间
- SDRAM,网卡DM9000,片内内存SRAM以及寄存器它们都有一个CPU统一编址的地址空间
- NANDFLASH没有地址总线,它由两个线来决定它的数据线上传输的是数据、指令还是地址
注意:一般说nandflash的地址时,将oob空间忽略掉,也就是oob空间不参与编址
因为S3C2440中有nandflash控制器,所以只需要将nandflash芯片中的各个引脚与S3C2440上的nandflash控制器引脚相连,然后配置S3C2440中nandflash的寄存器,进行操作即可,其中寄存器的值需要根据外接nandflash芯片进行查看
对flash存储器件的可靠性需要考虑三点:位反转、坏块和可擦除次数
nandflash与norflash对比
- Norflash 支持XIP,代码可以直接在其上运行,无需复制到内存上
- 在nandflash上发生位反转的概率更高,推荐使用EDC/ECC进行错误校验和恢复
- nandflash上有坏块随机分布,在使用前需要将坏块扫描出来,确保不再使用它们
- norflash上常使用jffs2文件系统,nandflash上使用yaffs文件系统
访问NANDFLASH
nandflash写之前要先擦除
从硬件上访问
- 发送命令, CLE拉高, 输出DATA BUS
- 发送Addr, ALE拉高, 输出DATA BUS
- 传输数据,Read/Write
通过2440访问
主要是通过操作寄存器来访问
初始化:
- 设置NFCONF寄存器
主要配置时序,以及nandflash的位数 - 设置NFCONT寄存器
- 复位nandflash
读操作:
- 选中芯片
- 发出读命令,先发0x00,
- 写地址
写入地址时,以K9F2G08 256MB的nandflash为例,发送地址时,需要将地址拆分为5个字节发送,参看数据手册P9,根据使用的芯片不同,写入地址方式也不相同,具体根据实际使用的芯片来操作 - 如果是大页,则还需要发送0x30命令,否则,不需要发送0x30
- 等待空闲