一种NAND FLASH自启动的新方法

最新更新时间:2007-06-26来源: 今日电子关键字:ARM7  缓冲  编码 手机看文章 扫描二维码
随时随地手机看文章
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。

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

 

 

 

系统上电前,外部硬线NAND BOOT开关选择从NAND FLASH启动。芯片设计时,默认DMA占有系统总线,DMA按照配置寄存器的默认值工作,其源地址指向NAND FLASH,目标地址指向片上SRAM,NANDFLASH控制器在NAND BOOT选中的情况下,默认向NAND FLASH的首页发出读命令。即上电后,DMA控制器以及NAND FLASH控制器默认的把FLASH存储器中的第一页搬到了片上SRAM中。一直到DMA的工作完成前,ARM核无法占用总线。此时零地址映射在片上SRAM,DMA完成搬运后,ARM开始执行程序。此段代码完成的工作包括对SDRAM控制器的初始化,从NAND FLASH搬运核心代码至SDRAM,配置地址重映射寄存器至零地址处,最后将PC指向零地址的SDRAM。在SDRAM执行的代码开始真正启动系统。

5 NAND FLASH系统启动的新方法

一般情况下,片上存储器在作为启动代码转移阶石的同时,往往在启动后也有其特殊的作用。可以作为特殊的程序区,譬如在进行MP3解码过程中,核心解码函数作为频繁调用的程序,可以安排在片上SRAM中,以提高读取速度,提升系统性能。在SoC芯片开发过程中,在整体架构以及模块功能的变化之后,这块内嵌的SRAM失去了原来的作用,而仅作为NAND FLASH启动时的代码跳板,对于整个芯片而言,付出的代价比较大。于是提出了在没有片上存储器的架构下,从NAND FLASH启动的一种新模式。

在上述一般模式启动过程中,片上SRAM所起到的作用,就是执行NAND FLASH中第一页的代码,将真正的启动代码引入到SDRAM,最后将PC指针指向SDRAM。在失去片上SRAM的支持后,可以在控制器的FIFO中去执行此段代码,这需要在硬件以及软件代码中作出适当的改变。 (1) 首先需要改变的是地址映射的机制,系统上电后,ARM即从零地址开始执行指令,零地址映射到NAND FLASH的FIFO入口地址,地址的译码过程由AMBA总线模块完成。在外部硬线NAND BOOT拉高的条件下,AMBA从设备地址译码模块在启动过程中,将零地址的设备选择权给到缓冲FIFO。在第一页的指令执行完毕后,PC指针也指向SDRAM。

(2) 其次是NAND FLASH控制器在启动过程中,对数据的读取方式。鉴于NAND FLASH大批量数据读写的特性,往往采用DMA方式对数据进行操作。启动过程中,由ARM core直接向FIFO读取数据,在FIFO读空的情况下,将从没备READY信号拉低,等待NAND中的数据读出。并且在此读取过程中,DMA的请求被屏蔽。

(3) NAND FLASH型号类型众多,从每页容量大小、数据宽度、地址级数以及各型号芯片不同的时序参数,决定了一个控制器接口的兼容性要求相当的高。为了兼容从不同的NAND FLASH启动,设置了4根硬线作为选择。NAND BOOT选择是否从NAND FLASH启动;PAGESIZE选择每页大小,支持512 B/page,2 kB/page;IOWIDE选择数据端口的宽度,支持8位、16位;AD-DRESSCYCLE选择发送地址级数,支持3级、4级、5级地址。时序参数的配置值可以采用默认的宽松值,在读取首页信息之后,将配置值根据当前的时钟频率以及芯片类型,选择舍适的时序值以达到最佳的性能。 (4) 存储器首页的代码是在缓冲FIFO中执行的,FIFO的入口地址是一个高24位的选通地址,因此当系统启动时,零地址开始增加,对FIFO中渎出的指令而言,低8位地址的变化是无关的,FIFO始终被选通。指令的输出是默认的顺序输出。这就要求首页的代码中不可以出现循环、跳转等语句,并且要求在128条指令内完成需要的操作。

6 启动代码和流程的分析

上述的汇编程序即是存放在NAND FLASH首页的启动代码,启动的流程如下:

(1) 配置DMA控制器的4个寄存器,通道使能后,等待FLASH发出的搬运请求;

(2) 配置NAND FLASH控制器的3个寄存器,选择适合的地址、时序参数与所用的FLASH芯片吻合;

(3) 分别在r8~r11中放入程序需要的备用值;

(4) 将需要在SDRAM中运行的4条指令搬入SDRAM 0x30000000处;

(5) 执行Nop指令,Nop指令用于填充一页NANDFLASH中的剩余空间;

(6) 执行在页末的指令,将PC指针指向SDRAM的0x30000000处;

(7) 执行SDRAM中的指令,首先启动NANDFLASH的数据传输,将程序搬往SDRAM的0x30001000处。其次执行一个循环语句,等待第一页的程序搬完,之后将PC指针指向0x30001000处,启动程序从0x30001000处正式开始执行。

7 结 语

本文提出了一种NAND FLASH自启动的新方案,通过对硬件电路以及软件代码作合适的调整,从芯片中去除了内部SRAM,降低了SoC芯片的开发成本。本方案已经通过一款命名为GarfieldV的SoC芯片的测试,达到了预期的效果。

关键字:ARM7  缓冲  编码 编辑: 引用地址:一种NAND FLASH自启动的新方法

上一篇:基于FPGA的高速大容量固态存储设备设计
下一篇:基于VxWorks的FLASH存储器实时存取管理方案

推荐阅读最新更新时间:2023-10-13 10:44

STM32的16位编码器溢出问题
STM32定时器有编码器接口,但是它的计数器只有16位。当要记录的数过大时,会溢出。下文介绍了一种方法,能有效解决因计数器位数过少引起的溢出问题。 (在网上搜了好多,感觉不他们说的方法都不准。这个方法经过我自己验证,可以准确记录编码器的位置) 原理一: unsigned short int j;(j的长度为16bit) ① 当j=65535 ,运行j++后,j=0; ② 当j=0 , 运行j- -后,j=65535; 定时器的16位计数器寄存器(CNT)同样符合上面的逻辑。在编码器模式时, (一)当加计数时(up计数),加到65535后,再加1,CNT的值变为0,且溢出标志位 被置1(UIF=1),
[单片机]
单片机控制的DBPL编码信号源系统设计
引言 DBPL(Differential Bi-Phase Level)编码是一种超越传统数字传输极限的编码方式。DBPL编码被广泛应用于以太网、工程测井仪器和铁路应答器等工程应用中。在铁路应答器中,通过DBPL编码传输信号给列车车载处理器,实现对列车运行的控制。 本文设计了一种基于AT89LV51单片机控制的DBPL编码信号的信号源系统,能够产生DBPL编码信号;同时设计了系统的电源管理模块,保证系统的正常供电。 1 信号源系统的设计 该信号源由时钟复位模块、DBPL信号产生电路、DC-DC转换电路、充电管理电路和A/D转换电路组成。单片机AT89LV51控制编码模块产生DBPL信号;充电管理电路对系统所用电池进行充
[单片机]
单片机控制的DBPL<font color='red'>编码</font>信号源系统设计
SN74SSTUB32864 —具备 SSTL_18 输入与输出的 25 位可配置寄存缓冲
25 位 1:1 或14 位 1:2 可配置寄存缓冲器适用于 1.7 V 至 1.9 V 的 VCC 工作环境。就 1:1 引脚配置而言,每个 DIMM 仅需一个器件驱动 9 个 SDRAM 负载。就 1:2 引脚配置而言,每个 DIMM 需要两个器件驱动 18 个 SDRAM 负载。 除复位 (RESET) 与控制 (Cn) 输入为LVCMOS,所有其它输入均为 SSTL_18。所有输出均针对边缘控制电路进行了优化,可满足无端接 DIMM 负载的要求,并符合 SSTL_18 规范。 SN74SSTUB32864 利用 1 个差分时钟(CLK 与 CLK)工作,并将在 CLK 上升与下降的相交时进行数据
[新品]
LPC2100系列ARM7微控制器的加密方法
1. 加密原理说明 LPC2100系列ARM7微控制器是世界首款可加密的ARM芯片,对其加密的方法是通过用户程序在指定地址上设置规定的数据。PHILIPS公司规定,对于LPC2100芯片(除LPC2106/2105/2104外),当片内FLASH地址0x000001FC处的数据为0x87654321时,芯片即被加密。在加密设置后,JTAG调试接口无效,ISP功能只提供读ID及全片擦除功能。注意:将带有加密设置的程序下载到芯片内部FLASH,在下一次系统复位后加密生效。 2. 加密程序实现 为了实现加密设置,用户必须保证在0x000001FC处定义数据0x87654321。我们先来分析一下带有加密设置的程
[单片机]
涉及编码系统与方法专利 加州理工学院诉戴尔侵权
据lawstreet报道,加州理工学院日前在美国德克萨斯州西区地方法院对戴尔科技公司和戴尔公司(以下统称“戴尔”)提起诉讼,指控戴尔侵犯其编码系统和方法相关专利。 据悉,涉案专利为美国专利号7116710(710专利)、7421032(032专利)和7916781(781专利)。今年早些时候,一个联邦陪审团裁定苹果和博通公司侵犯上述专利,需向加州理工学院支付共计11亿美元的损害赔偿。 具体来说,上述专利揭示了“编码系统和方法的重大改进”,该专利引入了一种新的纠错码,称为“不规则重复和累积码(或IRA码)”,所述方法和装置指向编码器和解码器。 编码器可从消息或消息位生成IRA码字,以随机但已知的方式对这些位的不规则重复实例进行重
[手机便携]
ARM7与FPGA在工控和故障检测中的应用
工业控制中往往需要完成多通道故障检测及多通道命令控制(这种多任务设置非常普遍),单独的CPU芯片由于其外部控制接口数量有限而难以直接完成多路检控任务,故利用ARM芯片与FPGA相结合来扩展检控通道是一个非常好的选择。这里介绍用Atmel公司ARM7处理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)结合使用完成多通道检控任务的一种实现方法。 各部分功能简介 图1为此系统的结构连接框图。如图所示,ARM芯片与FPGA芯片之间通过数据总线、地址总线及读写控制线相连,而与终端PC则通过串口通信;FPGA与目标设备通过命令控制总线和故障检测总线相连。 图1 系统结构框图 1 故障检测和
[单片机]
<font color='red'>ARM7</font>与FPGA在工控和故障检测中的应用
控制与缓冲型半桥DC-DC变换器的PWM控制
  半桥电路由两个功率开关器件总成,并向外提供方波信号。而基于半桥而来的DC-DC转换器由于结构简单,并且易于操作,经常被用于中小功率电路的设计当中。大家都知道,常见的半桥控制器通常有两种控制方法,一种是对称控制,而另一种则是不对称互补控制,本文主要分析实现半桥DC/DC变换器软开关的PWM控制策略。   控制型软开关PWM控制策略   控制型软开关半桥DC/DC变换器不增加主电路元器件(可增加电感电容元件以实现软开关条件),通过合理设计控制电路来实现软开关。图1给出4种控制型软开关半桥DC/DC变换器的PWM控制策略。   图1 控制型软开关PWM 控制策略   不对称互补脉冲PWM控制   开关管的控制脉冲不对称互补
[电源管理]
控制与<font color='red'>缓冲</font>型半桥DC-DC变换器的PWM控制
基于GIO/FVID的DSP视频驱动程序
  引言   随着时代的发展,DSP技术在远程监控、可视电话、工业检测等视频处理领域得到了广泛的应用,对于不同的视频处理系统,会使用不同的视频设备,所以有必要为视频没备设计驱动程序,为高层应用程序提供统一的接口来操作底层硬件。只要是遵循此驱动程序接口标准开发的高层应用程序,都可以在具有相同接口的不同硬件平台上运行,具有很好的通用性和可移植性。同时高层应用程序设计人员只要会使用设备驱动程序提供的API接口,就不必了解底层硬件的具体实现,可以大大提高整个视频系统的开发效率。   对于视频设备,TI公司也提出了对应的视频设备驱动程序模型,但这些模型主要是针对6000系列高端DSP,甚至是DM64X这样的视频处理专用DSP设计
[嵌入式]
小广播
最新缓冲存储文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 综合资讯

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved