驱动程序之_2_块设备_4_Nand Flash_1_硬件操作原理
有了上一篇所说的块设备驱动框架后,Nand Flash的驱动程序也不难了,主要是在框架的入口函数增加Nand Flash相关初始化,读写函数中使用Nand Flash的操作函数,为此,本篇先讲一下Nand Flash的硬件操作
Nand Flash是一块存储芯片,存储芯片有一定的存储空间,存储空间以存储单元作为单位存储数据,每个单元都有自己的地址,读写数据首先应该发送地址,而K9F2G08U0C(一款Nand Flash)只有8根数据线,并没有地址线。因此数据线复用为了地址线,在硬件上体现在ALE引脚,当ALE为高电平,数据线传送地址。那么如何控制它作出不同的操作(读取、擦除、烧写),在Nand Flash上是通过另一个引脚CLE来控制,当CLE为高电平,数据线传送命令,指定Nand Flash接下来的操作;当ALE、CLE均为低电平,数据线上传送的才是数据(RE、WE有可靠脉冲,才真正完成读写操作)。查看自己的开发板原理图可以看到,Nand Flash的数据引脚往往与其他存储芯片(或其他存储类外设)共用了一条总线。因此,为了避免它们之间相互干扰,在存储芯片上还会有片选信号CE,用于使能存储芯片
打开芯片手册即可看到读写命令、时序图等相关信息
在S3C2440中集成了Nand Flash控制器,由此,使用Nand Flash变得十分简单。我们只需要按照Nand Flash芯片手册设置控制器的相关配置寄存器,然后使用控制器发出片选信号、再设置相应的命令、地址、数据寄存器,即可发送控制命令、地址信号、读写数据
时间参数表
在芯片手册上有说明:在烧写数据前必须先擦除,擦除以block为单位,读写以page为单位
小结:
Nand Flash:
一、发出命令
1、选中芯片
2、拉高CLE,拉低ALE
3、往IO送出数据
4、发出一定脉宽的WE脉冲
二、发出地址
1、选中芯片
2、拉高ALE,拉低CLE
3、往IO送出数据
4、发出一定脉宽的WE脉冲
三、写数据
1、选中芯片
2、拉低ALE、CLE
3、往IO送出数据
4、发出一定脉宽的WE脉冲
四、读数据
1、选中芯片
2、拉低ALE、CLE3、往IO送出数据
3、发出一定脉宽的RE脉冲
4、读出IO数据
S3C2440:
一、前期工作:
1、设置Nand Flash的配置寄存器
2、使能控制器、使能片选
二、写命令:写NFCMMD
三、写地址:写NFADDR
四、写数据:写NFDATA
五、读数据:读NFDATA