arm_day06

来源:互联网 发布:sql server 卸载不了 编辑:程序博客网 时间:2024/04/29 04:51

shell#ledon

shell#ledoff

 

Nand Flash

arm/datasheet/K9K8G08U0B.pdf

1.什么是NandFlash

存储设备,用于存储整个系统,相当于PC的硬盘

2.TPAD采用了什么Nandflash

三星的K9K8G08U0B型号的Nand Flash

3.如何才能操作nand Flash,主要是对它进行读操作,写操作,校验操作

  需要阅读nand flash的数据手册,该手册会详细描述如何操作Nand Flash的正确方法。

4.Nand flash主要指标参数:K9K8G08U0B.pdf

(1)工作电压:3.3V

(2)容量:K9K8G08U0B:(1G+32M)byte

 (3)写操作:按页(2K+64)Byte

   擦除操作:按块(128K+4K)Byte

   nand erase 0x0 0x100000

   nand write 20008000 0x0 0x100000

 (4)页大小:(2K+64)Byte

 (5)管脚复用:命令、地址、数据复用IO口

 (6)Nand Flash可以100K次的写,擦除

数据保存时间:10年

 (7)通过命令来操作Nand flash

 (8)Nand Flash存在唯一的ID

 (9)Nand Flash封装形式

5.NandFlash 特性:

 (1)在没写数据之间,Nand Flash都是1

 (2)写数据之前,是把1改成0,不能把0改成1

 (3)已经写数据,再要写数据,必须先擦除

 (4)Nand Flash 存在位翻转

 (5)Nand Flash在出厂时,可能存在坏块,但不影响使用,但是保证第0块一定是好块。

 (6)擦写次数有限

 

Nand flash有48个管脚,并不是每个管脚都用了。

N.C:没有使用,无连接的管脚,可以不管。

Vcc:电源

Vss:接地

nCE:片选信号,表示低电平有效

IO0-IO7:8个IO管脚,传输命令,地址,数据,复用

CLE:高电平有效,命令锁存信号,IO0-IO7传输是命令

ALE:高电平有效,地址锁存信号,IO0-IO7传输是地址

    当CLE、ALE都为低电平时,IO0-IO7传输是数据

       CLE  ALE

        0     0    数据

        1     0    命令

        0     1    地址

nWE:写使能,低电平有效

nRE:读使能,低电平有效

nWP:写保护,低电平有效

R/nB:当前Nand flash的状态

     R:高电平,Ready,准备就绪

     nB:低电平,busy,忙

 

Nand Flash的各个管脚实际上与S5pv210处理器中的Nand flash 控制器相连(所谓Nand Flash控制器从表现形式看,也就是一些s5pv210上一些管脚,只是这部分管脚的主要功能是用来控制Nandflash的),因此,我们不用直接去操作Nand Flash的管脚,而是通过操作Nand flash控制器中的寄存器来实现对Nand flash操作

寄存器的地址范围:

 

Nand Flash的内部结构图:

1.页:构成Nandflash基本单位,页大小固定

      1page= (2K + 64)Bytes

      每一页又分为main区和spare区

      main区:用于正常数据的存储

      spare区:存储一些附加信息,如坏块标志,块的逻辑地址,ECC校验信息

2.块:由若干页构成,块大小固定,64页构成一块

      1block = (2K + 64)Bytes X 64 = (128K +4K)Bytes

3.device:由若干块构成,8192块

      1device = 8192block = (128K +4K)Bytes X8192

              =(1G + 32M)bytes

              =(1024M + 32M)bytes

8448Mbits=1056Mbytes = (1024M + 32M)bytes

 

Nandflash  (1G+32M)bytes

1G字节:存放主数据

32M字节:存放附加信息

块号:8192块,0-8191块

页号:524288页,0-524287页

 

表示NandFlash容量,需要多少bit表示一个字节的地址呢?

(1)页内地址:2112      0-2111      12bit

(2)页号:    524288   0-524287   19bit

要表示NandFlash的一个字节的地址

 

总共需要31bit表示地址

 

31bit地址如何发送?

由于NandFlash是I/O接口,复用的,只能用8根IO线来发送地址。

一次只能传8bit,共分5个周期(由Nand flash datasheet定义)

5个周期:

1周期:A0-A7          (页内地址)(列地址)

2周期:A8-A11  0000  (页内地址)(列地址)

3周期:A12-A19        (页号地址)(行地址)

4周期:A20-A27        (页号地址)(行地址)

5周期:A28-A3000000 (页号地址)(行地址)

 

 

由NandFlash的datasheet可知,Nand Flash是通过命令来操作的,命令集如下:

 

阅读s5pv210的datasheet的P692

Nand Flash控制器:

1.支持NandFlash页大小:512Bytes,2K,4K,8K

2.可以通过软件编程的方式实现对Nand flash进行读操作,写操作,擦除操作。

3.支持8bit的IO口的Nand flash

4.硬件可以产生,监测ECC校验码,软件纠正

5.支持SLC和MLC两种工艺的Nand Flash

6.支持1、4、8、12、16bit ECC校验

7.特殊功能寄存器的访问方式:

  Data数据寄存器(NFDATA)和ECC Data数据寄存器,可以采用字节,半字,字的方式访问,其余寄存器采用字方式访问。

  #define GPC1CON  (*((unsigned int *)0xE0200080))

  #define NFDATA   (*((unsigned char *)0xB0200080))

#define NFDATA   (*((unsigned short *)0xB0200080))

#define NFDATA   (*((unsigned int*)0xB0200080))

 

 

如何通过软件编程方式操作Nand flash(P695)

1.向命令寄存器(NFCMMD)写入操作Nand Flash的命令

2.向地址寄存器(NFADDR)写入要操作的Nand flash的具体地址

3.向数据寄存器(NFDATA)写入要向Nand flash写入的数据

4.从数据寄存器(NFDATA)读出Nand flash中的数据

5.读取main区和spare区的ECC校验信息,进行数据校验

 

 

NFCONF  配置寄存器

NFCONT  控制寄存器

NFCMMD 命令寄存器

NFADDR  地址寄存器

NFDATA  数据寄存器

NFSTAT   状态寄存器

 

TACLS:表征的是从CLE/ALE命令锁存信号/地址锁存信号有效,到nWE写使能信号有效经过的时间。

HCLK = 7ns

Duration= HCLK * TACLS>= 0ns

         = tCLS – tWP = 12 – 12 =0

         = tALS – tWP = 12 – 12 =0

         = 0ns

TACLS设置为15  F

TWRPH0:表征的是nWE写使能信号有效时间。

Duration= HCLK * (TWRPH0 +1) >= 12ns

         = tWP

         = 12ns

TWRPH0设置为15  F

TWRPH1:表征的是写使能信号无效之后,CLE/ALE信号还要持续的时间。

Duration= HCLK * (TWRPH1+1) >= 5ns

         =tCLH = 5ns

         =tALH = 5ns

TWRPH1置为15  F

 

Nand flashdatasheet

NFCONT   P709

Reg_nCEn:都是片选信号,s5pv210提供了4个片选信号给NandFlash,TPAD只用了一个片选信号,Reg_nCE0。

 

 

读NandFlash ID的程序

 

NFCONF =(0xF<<12)|(0xF<<8)|(0xF<<4)|(1<<1);

 

10

11110000

111100000000

1111000000000000

1111111111110010

 

读ID号:

ID1=0x9551D3EC

ID2=0x00000058

 

思考:如何以字节的方式访问NFDATA

Shell#nid

 ID=

0x000000EC

0x000000D3

0x00000051

0x00000095

0x00000058

 

Nand Flash

 

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击