在线咨询:
在线咨询
在线咨询
ARM仿真器-foxICE 设为首页   |   加入收藏夹   |   网站地图         
站内搜索:   
 
http://www.foxice.net
最新下载_foxICE
ARM7TDMI R3内核
ARM7EJS内核
ARM946E-S内核
ARM966E-S内核
ARM9TDMI内核
ARM940T内核
ARM指令集速查卡
ARM925T内核(TI925T)

更多 >> 

   首页>技术专栏>Nandflash专栏>一种NAND FLASH自启动的新方法

一种NAND FLASH自启动的新方法

来自:今日电子    作者:蔡浩 1  2     下载pdf版

1

随着消费类电子产品包括 PDA , MP3 、智能手机等手持设备的市场需求逐步扩大,产品间的竞争也愈发激烈,降低产品的设计成本,提升产品的市场竞争力成为嵌入式系统开发者所面临的重大挑战。 NAND FLASH 和 NORFLASH 作为两种主要的非易失性存储器,被应用于各种嵌入式系统。其中 NAND FLASH 主要优点在于存储密度高、容量大,有更占优势的存储性价比。但是 NANDFLASH 由于其独特的页式读写方式,并不适合程序的直接执行。因此,从 NAND FLASH 启动需要片上存储器作为代码执行的中转区。本文所讨论的一种系统启动方式,是在缺少片上存储器支持的情况下,实现系统直接从 NAND FLASH 启动。论文中充分考虑了如何实现软、硬件之间的协同工作,以完成 SOC 系统的设计。

2 NAND FLASH 控制器的结构

本文所讨论的 NAND FLASH 控制器是针对一款基于 ARM7TDMI 的 SoC 芯片,该控制器在芯片中的位置如图 1 所示,作为 AMBA 总线上的一个从设备集成于 AHB 上。主要模块包括总线接口模块、 FIFO 缓冲模块、 ECC 编码模块以及逻辑控制模块。

总线接口模块主要的功能是转换 AMBA 总线上的控制和数据信号:将总线上的数据送入 FIFO 或将数据从 FIFO 读出到总线上,将总线上的控制信号转换时序后送到控制模块。

NAND 控制器包含一个宽度为 32 b ,深度为 4 的缓冲 FIFO ,用于解决高速总线与低速设备之间数据传输速度的匹配问题。为提高总线的传输效率,以及控制器设计的便利性, NAND FLASH 在总线上的数据传输采用 DMA 的方式来完成。譬如在读取 FLASH 一页数据时,数据持续写入控制器 FIFO , FIFO 满时发出 DMA 传输的请求,同时暂停 FLASH 的数据读取,控制信号 nRE 拉高,直至 DMA 响应请求即 FIFO 不满时, FLASH 的数据传输重新开始。当选择应用的 FLASH 位宽为 8 ,页大小为 (512+16)B 时,控制器需要发出 (32+1) 次 4 拍字宽度的 DMA 传输请求来完成数据和校验信息的读取。

控制模块的上作主要是将总线接口转换的控制信号,按照 NAND FLASH 的接口协议.将片选、地址、命令、读写使能按照所配置的时序要求,发送到 NAND FLASH 中,并且控制数据的传输个数,以及 DMA 请求、数据传输完成中断、数据错误中断等系统信号。

NAND FLASH 可靠性相对较差,存储器芯片中有坏块的存在,会导致存储数据出错。 ECC 校验模块针对 NAND FLASH 的可靠性问题,提供了一种查错、纠错的机制。 ECC 校验码在数据读人时,由硬件计算完成后写入到 FLASH 的校验位中,当此页数据读出时,校验码再次生成与存储器校验位中的数据进行比较,若相同则没有损坏位,若不同,则给出出错中断,软件通过检查比较结果,判断出错位的位置进行纠错处理。纠错功能仅针对单 bit 位的出错,当一个以上位同时在一页中出现时, ECC 校验不能给出出错位正确的位置。

3 NAND FLASH 工作的软件流程

按照上节对控制器结构以及传输机理的分析, NANDFLASH 的使用需要在 FLASH 控制器模块以及 DMA 控制器模块的协同下完成,工作的软件流程如图 2 所示。

软件驱动的主要工作是配置 DMA 模块以及 FLASH 控制模块,当传输完成,检测到中断后,软件查询状态寄存器,其中的状态位来自 FLASH 。当一次操作完成后,控制器自动向 FLASH 发出查询状态的命令 0x70 ,读出的状态字保存在控制器的状态寄存器中。

4 NAND FLASH 系统启动的传统模式

目前支持从 NAND FLASH 启动的 SoC 芯片中,一般都内嵌有片内存储器。各个处理器厂商对这块片上存储器定义的容量大小有所不同,但是启动模式都是比较一致的。 NAND FLASH 按页顺序读取的方式,意味着对当前的存储地址访问后就无法马上再次访问,需在当前页访问完成后,重新对此页访问时,才可对先前的地址单元再次访问,这就导致了一些程序语句无法执行,譬如跳转、循环等语句的使用。因此 NAND FLASH 仅作为启动代码的存储区,而真正执行的存储器区域是内嵌的片上存储器或者片外的 SDRAM 。

以上文中描述的控制器为例,按照这种启动模式,程序搬运以及执行的过程如下:

1  2

立即下载:
点击下载
相关文档
U-Boot在44B0X开发板上的移植以及代码分析
U-boot移植日记(s3c44b0)
S3C44B0\U-Boot的启动流程及移植
U-Boot在S3C2410上的移植
uboot在ARM s3c2410上移植过程
VxWorks 的bootrom 到u-boot 的移植心得
嵌入式系统中U-Boot基本特点及其移植方法
uboot移植到S3C44B0X开发板的经历
下载说明:
  1. 未经本站明确许可,任何网站不得非法盗链及抄袭本站资源!
 

首页 | 产品介绍 | 技术支持 | 下载中心 | 技术专栏 | 关于我们 | 联系我们
订购方式 | 付款方式 | 送货方式
电话:86-755-82798083   82796301   传真:86-755-82799007    Email:sales@foxice.net   sales6@foxice.net
在线咨询:QQ:346466907 有事儿您Q我!!  MSN:sales6@foxice.net   ini3000@msn.com

© 2006 Foxice.net 版权所有