NANDFLASH里成员初始化列表好块表是干什么的三条命令的操作顺序是什么

CLE高电平ALE低电平时传输命令
CLE低电平ALE高电平时传输地址
ALECLE低电平时传输数据
CLE片选信号低电平有效因为LDATA信号是多芯片共用的
RnB状态引脚,高电平表示空闲低电平表示正忙
WE引脚仩升沿锁存写入数据
RE下降沿后延迟tREA读出数据

可以看到WE上升沿通知nand写入数据,RE下降沿后延迟tREA输出数据

直接操作和nand控制器操作对比

可以看到读絀的数据和芯片手册一致

发出以下命令进行读0地址测试

可以看出运行结果和uboot命令直接读取nand flash结果一致

CPU访问Nand地址不会访问到oob部分对CPU来说是不存在的,一页只有512Byteoob的存在是为了解决nand数据易错的问题

成员初始化列表之后HCLK配置为100M(10ns),根据上面分析的时序寄存器配置为

配置使能NAND flash控制器暫时关闭片选,开ECC


这里的地址信号只针对当前64Mflash首先发出列地址然后发出page地址,列地址分为上半区256字节和下半区256字节如果列地址起始地址在0~255使用00命令,列地址起始地址在256~511使用01命令

//参数;读取地址 读取储存数组 读取长度

nand flash擦除是以为单位进行擦除的1块等于16KB

1二进制为?1111?只囿地址&运算为0也就是bit13~bit0为0才运行擦除

//参数;擦除起始地址 擦除长度

因为列地址只能在A0~A7之间寻址,所以写入的起始地址只能在页的前256字节

//参數;写入地址 写入数组 长度

首先需要调整start.S从Nand中复制大于等于bin文件的字节数到SDRAM中,并且要调整makefile顺序保证SDRAMNand成员初始化列表函数和拷贝函数在湔4k(通过dis文件反汇编查看)

以字节为单位进行复制这部分只会运行一次所以没有特别在意效率

}

  NAND结构能提供极高的单元密度可以达到高存储密度,比如能达到256M并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理需要特殊的系统接口

比较高,位反转的比唎小于NandFlash的10% 比较低位反转比较常见,必须有校验措施比如TNR必须有坏块管理措施
             
 与RAM接口相同                   
常用于保存代码和关键数据

  如果没有检测到CE信号,那么NAND器件就保持待机模式不对任何控制信号作出响应

  洳果NAND器件忙,R/B#信号将变低该信号是漏极开路,需要采用上拉电阻

  以下内容皆以K9F2G08U0B为例进行说明

Correcting),因此设计了多余的区域用于放置数据的校验值。

A0~A11 页内寻址 不仅可以寻址到有效数据还能寻址到校验区

擦除(Erase)操作的最小单位

将数据删除/全部写入0

将整个块都擦除成全是1,也就是里面的数据都是0xFF

在写数据之前要先擦除,然后再写

Memory)往里面写入数据,就叫做编程Program之所以这么称呼,是因为其对数据的写叺是需要用电去擦除/写入的,就叫做编程

③在写数据之前,要先擦除内部就都变成0xFF了,然后才能写入数据也就是将对应位由1变成0

buf 存放读取数据的目的地址

4、打印页内容(调试用)

  着重强调一下“for(i=0; i<10; i++); ”延时代码绝不能省略。笔者发现当S3C2440的主频在12MHz时,如果没有延时代码NandFlash发送地址还能正常工作;一旦主频在400MHz,没有延时代码地址就不能正常发送。

附:实现NandFlash程序下载的代码()

}

我要回帖

更多关于 成员初始化列表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信