Nand-Flash/Nor-Flash存储模块设计
来源:互联网 发布:qq音乐代理端口 编辑:程序博客网 时间:2024/05/10 11:23
随着嵌入式系统越来越广泛的应用,嵌入式系统中的数据存储和数据管理已经成为一个重要的研究课题。Flash存储器具有速度快、成本低等很多优点,因此在嵌入式系统中的应用也越来越多。为了合理地管理存储数据,进行数据共享,Flash的设计在ARM嵌入式系统中对数据存储和数据管理尤为重要。
1实例说明
所有的Flash器件都受位交换现象的困扰。在某些情况下(Nand-Flash发生的次数要比 Nor-Flash多),一个比特位会发生反转或被报告反转了。一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障就可能导致系统停机。如果只是报告有问题,则多读几次就可能解决。
该 Flash采用25根地址线和16位数据线,可以通过nBYTE这个信号来选择是8位还是16位方式访问。该系统是采用16位方式访问的,因此该信号线接高电平,同时A0地址线不起作用,一同接高。nOE/nWE是读写信号,由EP7312的读写控制线直接控制。Flash的片选信号有3个,它们组合后的结果如表7-1所示。
系统中将CEl、CE2信号接高,CE0由ARM的CS0片选线来控制。
3.2 Nand-Flash的设计
系统中所采用的Nand-Flash芯片是Samsung公司的K9F2808U。该器件存储容量为16M×8位,除此之外还有512KX 8位的空闲存储区。该器件采用TSSOP48封装,工作电压为2.7~3.6V。8位I/O端口采用地址、数据和命令复用的方法,这样既可减少引脚数,又可使接口电路简捷。
由于ARM系统没有Nand-Flash控制所需要的CLE、ALE信号,因此需要利用ARM的通用GPIO口。具体的连接电路如图7-3所示。
?命令锁存使能(CLE),使输入的命令发送到命令寄存器。当变为高电平时,在WE上升沿命令通过I/O口锁存到命令寄存器。
?地址锁存使能(ALE),控制地址输入到片内的地址寄存器中,地址是在WE的上升沿被锁存的。
?片选使能(CE),用于器件的选择控制。在读操作、CE变为高电平时,器件返回到 备用状态;然而,当器件在写操作或擦除操作过程中保持忙状态时,CE的变高将被忽略,不会返回到备用状态。
?写使能(WE),用于控制把命令、地址和数据在它的上升沿写入到I/O端口;而在 读操作时必须保持高电平。
?读使能(RE),控制把数据放到I/O总线上,在它的下降沿tREA时间后数据有效;同时使内部的列地址自动加1。
?I/O端口,用于命令、地址和数据的输入及读操作时的数据输出。当芯片未选中时, I/O口为高阻态。
?工写保护(WP),禁止写操作和擦除操作。当它有效时,内部的高压生成器将会复位。
?准备/忙(R/B),反映当前器件的状态。低电平时,表示写操作或擦除操作以及随机读正进行中;当它变为高电平时,表示这些操作已经完成。它采用了开漏输出结构,在芯片未选中时不会保持高阻态。
3.3 Nor-F1ash/Nand-FIash跳线选择
由于ARM提供了Nand-Flash Boot-loader技术和可选择的多种启动方式,因此硬件设计中同时设计了Nor-Flash和Nand-Flash,通过跳线选择启动方式,如图7-4所示。
4软件设计
Flash 存储器的支撑软件包括基本的读/写/擦除操作和上层的闪存管理软件,采用的嵌入式Linux操作系统中通过MTD子系统提供的抽象设备机制,来实现对Flash设备的管理控制和数据读写。
4.1 FIash数据存储操作流程
向Flash存储器的特定寄存器写入地址和数据命令,就可对Flash存储器进行烧写、擦除等操作,但操作必须按照一定的顺序,否则就会导致Flash存储器复位而使操作命令无法完成。编程指令只能使“1”变为“0”,而擦除命令可使“0”变为“1”,因此正确的操作顺序是先擦除,后编程,当Flash存储器被擦除以后,读出的内容应全为0xFF。
对Flash操作的程序流程如图7-5所示。
系统启动后,对系统关键设备(包括ARM、sI)RAM、N0r-Flash和Nand-Flash等)进行初始化操作,然后启动Boot-loader,将Nand-Flash上的Linux内核读入SDRAM执行。
初始化时,除了对Flash内部寄存器进行初始化设置外,还需要设置ARM的寄存器。
4.2程序代码说明
对Flash存储器的烧写、整片擦除、按扇区擦除及其他操作,都可以通过编程实现(见如下代码)。对于编写连续烧写Flash存储器多个存储单元的程序,只需循环执行即可,但应在对每个单元烧写命令发出后进行检测,保证前一个单元烧写结束后再进行下一个存储单元的烧写,当然也可采用延时等待的方法进行连续的烧写。
在读取Flash的时候不一定读取一个block,可以按照实际需要的地址读取;但是在写的时候一次需要擦除一个扇区,然后再写入。读取子程序设定了一次读取一个扇区,目的是为了按需要更改后再写入。
5实例总结
ARM与Flash存储器的接口电路设计与调试,以及对Flash存储器的编程与擦除是ARM系统设计中的一项重要部分,Flash存储器通常装载着嵌入式系统的Boot-loader程序和操作系统的核心代码,因此Flash的稳定与否直接决定整个系统能否运作。
本章讲述了两种Flash芯片——Nor-Flash和Nand-Flash的特点、软硬件设计,在对Flash的编程中,需要注意以下三个方面。
?在Flash编程之前应先擦除Flash,对Flash进行擦除过程将持续一段时间(视不同的Flash芯片而定,具体的可以查找Flash芯片典型擦除时间,一般为20s左右),擦除后Flash的数据为全FF。
?对Flash编程的过程,将持续很长时间,通常编程50KB的文件需要15分钟左右(视不同的Flash芯片、上位机和操作系统而定)。
?擦除Flash操作不可恢复,对Flash编程需使用“初始化配置”,如关闭看门狗、关闭系统对Flash空间的缓冲、设置对Flash空间的操作时序等。
原文地址 http://blog.eccn.com/u/luogongqiang/archives/2007/242.htm
- Nand-Flash/Nor-Flash存储模块设计
- Nand-Flash/Nor-Flash存储模块设计
- Nand-Flash/Nor-Flash存储模块设计
- Nand-Flash/Nor-Flash存储模块设计
- NAND flash、NOR flash
- Nand Flash & Nor Flash
- NOR FLASH & NAND FLASH
- Nor与nand flash存储区别
- NOR FLASH 与 NAND FLASH
- NAND FLASH 和 NOR FLASH
- nor flash和nand flash
- NAND flash vs NOR flash
- Nand Flash与Nor Flash
- NOR Flash 和 NAND Flash
- nor flash nand flash区别
- nor flash nand flash区别
- NAND FLASH和NOR FLASH
- Nand Flash和Nor Flash
- 佛教
- Java学习之路:不走弯路,就是捷径
- 100条教育信条送给父母
- ashx是什么文件
- JS 客户端验证文件类型,获取图片信息
- Nand-Flash/Nor-Flash存储模块设计
- Microsoft Dynamics AX 2009 Form之间值传递(通过类传递)
- 初到北京的感觉
- 玩玩AJAX之使用ashx文件响应来自JQuery的JSON请求
- Nba 季候赛有感
- 使用OLED显示屏更新你的系统界面
- 一些好的资源
- 开始
- .Net之ashx文件浅谈