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
- arm_day06
- 关于jacob支持BSTR类型的经验总结
- 在scrapy中使用django model来存储数据
- 开始研究freescale-K64
- arm_day05
- 【Tools.Redis】Jedis,Jedis参考文档
- arm_day06
- 现有的CEP产品介绍
- arm_day07
- 字符集(ASCII ANSI UNICODE)与字符编码 (UTF-8 UTF-16)
- UVa-524 - Prime Ring Problem
- Ubuntu14.04 固定IP和Network-manager无法连网问题解决
- arm_day08
- 练习小程序 整数转16进制
- 互联网创业,web工程师走出新的一条路