基于并口的flash存储器在线编程方法

文档序号:6781852阅读:412来源:国知局

专利名称::基于并口的flash存储器在线编程方法
技术领域
:本发明涉及一种嵌入式系统应用领域的在线编程方法,尤其涉及一种适用于嵌入式系统的基于并口的FLASH存储器在线编程方法。
背景技术
:随着大规模集成电路和半导体技术的飞速发展,嵌入式系统的出现和发展引发了微电子领域的巨大变革,并已经成为IC设计的主流和趋势。其中,MIPS或者ARM等不同架构的内核作为目前嵌入式系统的主流处理器而被广泛使用。在嵌入式系统应用中,往往需要一块或者多块存储器来存放一些必要的自举程序、固定功能模块以及常用的数据表格等。为了实现和完成这一功能,基于容量和实际应用等需求的考虑,现在较多采用片外FLASH存储器来取代原来的片内ROM存储器。目前,对FLASH存储器的编程大多采用专用的编程器进行离线编程,但这种离线编程方法的缺点非常明显即编程麻烦,它不能对FLASH的内容进行任意的在线修改。因此也开发了一些适用于FLASH存储器的在线编程的方法,常用的FLASH存储器的在线编程方法,这些方法包括通过CPU协助进行的系统编程(ISP);利用诸如在板测试ICT仿真器等等其它设备进行FLASH存储器的协助编程;通过诸如JTAG或者串口等一些标准接口访问FLASH存储器进行配置编程。通过CPU协助完成系统编程的方法简单适用,但要求系统中必须有成熟的CPU器件;釆用仿真器的方法则需要额外购买仿真器,增加了开发成本;JTAG方法是当前应用较为广泛的一种方法,但是要求FLASH存储器件和JTAG加载口之间的所有器件都支持边界扫描协议。经对现有技术的文献检索发现,中国专利申请号为02124004.3,
专利名称:为"基于边界扫描技术的FLASH器件在线编程方法",该专利披露了一种基于JTAG的配置编程方法,其核心思想是构造一个大的非边界扫描逻辑簇,包含了边界扫描器件和非边界扫描器件,并忽略非边界扫描器件的影响,直接建立FLASH器件和边界扫描端口的连接关系。从而解决了边界扫描器件和FLASH器件之间存在的非边界扫描簇的问题。但该方法有可能存在着下列问题难以应用于处理器设计的初级阶段;需要JTAG加载器的支持完成数据格式的转换;需要熟悉和掌握板上的硬件环境来构造完整的JTAG菊花链;无法调节FLASH存储器的编程速度。显然,这种技术在实际应用中要求较高,使用较为麻烦。
发明内容本发明针对上述技术的不足和缺点,提出了一种基于并口的FLASH存储器在线编程方法,该方法具有编程速度快且编程速度可调、可以在线任意修改编程内容、不需要CPU参与工作、可自匹配型号选择适用范围广的特点,特别适用于嵌入式系统的开发阶段。本发明是通过以下技术方案实现的本发明所涉及的基于并口的FLASH存储器在线编程方法,基于专用并口管脚定义建立的数据通信协议,通过并口发送数据,利用异步FIFO接收从PC端传来的数据,并在状态机的控制下,经过格式转化写入FLASH存储器,并进行数据校验。本发明上述方法包括三步骤,即基于PC通用并口的数据发送和应用于缓冲接口部分和目标器件的数据接收,以及为保证数据准确性进行的数据校验,其中所述基于PC通用并口的数据发送步骤包括基于在线编程FLASH专用管脚的定义,建立新的并口收发通信协议;访问PC并口的通用寄存器,获取并口信号的状态;以及,响应并口信号状态,自适应速度调整,适时将本地文件所读取到的数据写入到通用并口的数据寄存器中,并以8位宽的基本格式发送;所述应用于缓冲接口部分和目标器件的数据接收步骤包括响应数据流程的状态机制,自适应调整接受目标板上的时钟,并采用异步FIFO作为高速数据的缓冲,实时接收并口传送来的数据;以及,FLASH存储器的自匹配型号检测,实现数据格式的基本转换,将转换后的数据写入所需编程的目标器件,即FLASH存储器;所述数据校验步骤包括将FLASH存储器中的数据读回到PC机;以及,将读回的数据与PC本地数据进行比对,纠正错误数据。本发明的目的是利用PC并口实现FLASH存储器的在线编程功能,由此需要确定通用并口管脚的定义。本发明可采用等于或大于25针的通用并口作为PC并口来实现,并确定并口管脚的各自定义,用以满足配置FLASH存储器、检测FLASH存储器状态以及数据收发编程的功能需要。专用于PC并口在线编程FLASH存储器的并口管脚定义包括数据收发管脚,用于实现PC并口和接收目标器件(即,FLASH存储器)之间交换数据的链接作用;本发明中,并口发送数据主要用在对FLASH编程的过程中,而接收数据则用于读取FLASH中的数据进行数据校验的过程中;发送数据采用8bit宽度形式并行方式,而接收数据受限于管脚的数量,采用2bit并行的方式;状态检测管脚,用于PC端检测目标板的状态;在线编程系统检测当前的操作是否己经执行完毕,可进入下一操作,对应的检测信号为BUSY;为了实现高速数据缓冲,避免数据覆盖或者丢失,系统采用了两个异步的FIFO分别用于读和写FLASH的过程中;异步FIFO是否为满(FULL)或者空(EMPTY),这两个信号是选择数据发送的时机,保证数据能够正确地被FIFO接收或从FIFO读取的依据;命令控制管脚,用于PC端将操作命令传送给目标板,使之执行相应的操作;命令控制管脚包括PC端并口收发数据的控制时钟信号管脚ppCLK,整个系统的复位信号管脚RESET,以及系统操作命令的选择信号管脚CMD。系统运行的时候,需要选择当前进行的操作,根据操作类型的数量确定控制信号的长度;对FLASH在线编程的系统至少要包含读取、写入、擦除、校验等四种操作,需要至少2bit数据进行标识,因此本发明定义CMD[l..O]用来选择操作命令。具体的管脚定义如下表:管脚信号流向管脚定义管脚定义功能说明引脚InputWDATAO-7并口发送数据2-9I叩utppCLK并口处理数据时钟1InputRESET复位信号14InputCMDO操作选择命令16InputCMD1178<table>tableseeoriginaldocumentpage9</column></row><table>本发明基于PC通用并口的发送步骤主要基于在线编程专用并口管脚的定义建立通信协议,并通过不断调整卯CLK的频率来实现自适应速度调整,从而将数据正确地发送给接收端。基于预先定义的在线编程专用并口管脚,建立PC并口和目标板之间的数据通信协议,将数据从本地经过PC并口送到接收端。具体的数据通信协议包含了数据发送协议和数据接收协议,数据发送协议用于FLASH存储器的数据在线编程过程中,数据接收协议用于FLASH存储器的内容读取过程中。在线编程系统复位之后,根据CMD控制信号判断当前处于何种操作状态。数据接收协议中,操作命令为读,系统通过检测BUSY管脚,来确定当前系统处于等待状态还是可以执行下一步的操作。当BUSY信号为低时,系统检测相关FIFO的状态是否为空。如果FIFO为空,则空转等待,直到FIFO变为非空状态,然后读取2bit数据到并口的数据寄存器当中,相应的数据地址加l,直到读到末地址为止。数据发送协议中,操作命令为写,系统通过检测BUSY管脚,来确定当前系统处于等待状态还是可以执行下一步的操作。当BUSY信号为低时,系统检测相关FIFO的状态是否为满。如果FIFO为满,则空转等待,直到数据从FIFO中取走、FIFO变为非满状态,然后从并口的数据寄存器中读取8bit数据到FIF0中,数据地址加l,直到读到末地址为止。以上就是在线编程系统完成PC端和目标板端数据搬移的依据。为了适应不同硬件设备和实际应用的需要,本发明提出了一种自适应的速度调整策略,以此来决定FLASH存储器在线编程的速度。PC端的时间记为ppCLK,由PC端的CPU提供;目标板端的时钟记为fCLK,由板上晶振来提供。本发明所提出的自适应速度调整策略包含了主动模式和被动模式两种主动式速度调整由系统自主完成,通过不断尝试改变PPCLK和fCLK来实现FLASH存储器数据内容的稳定可靠读写,从而获得最快的稳定编程时钟,并将两个时钟PPCLK和fCLK固定。这种方法适用于快速大批量的FLASH存储器的在线编程应用中;被动式速度调整则由使用者根据FLASH存储器的基本特性以及性能自主设定时钟速度。这种方法可普遍适用于编程速度要求不高、数量较少的FLASH存储器的在线编程的应用。自适应速度调整策略应用于FLASH在线编程的初始阶段,一旦最优速度固定之后,才开始根据指定的地址和内容实现FLASH存储器的在线编程。在FLASH在线编程过程中,通过检测并口的通用寄存器得到各个信号的状态,当BUSY和FULL信号都无效时,从本地读取一个八位数据到并口的数据寄存器,在ppCLK的下一个上升沿,将数据从并口的数据寄存器发送到目标板,从而完成数据发送部分的功能。本发明应用于缓冲接口部分和目标器件的数据接收步骤中,数据以8bit并行从PC并口输出后,需要接收端处理之后写入FLASH存储器。为了避免数据出现相互冲突,本发明采用输入输出两个先进先出(FIFO)存储器作为数据的高速缓冲,以此协调发送端和接收端之间的数据收发速度差异,从而保证数据能够准确的被接收端获取。FIFO的大小对FLASH在线编程的速度有一定的影响。一般来说,FIFO的深度越大,则缓冲区越大,系统能更好地协调发送/接收两端之间的速度差异,具有更好的系统稳定性。本发明采用两个异步的FIFO分别作为I叩utFIFO(输入先进先出存储器)和OutputFIFO(输出先进先出存储器)来使用。对于I叩utFIFO而言,读时钟由板上晶振fCLK提供,写时钟由并口的ppCLK信号提供。对于OutputFIFO,读时钟由并口的ppCLK信号提供,写时钟由板上晶振fCLK提供。InputFIFO用于写FLASH存储器的在线编程过程,而OutputFIFO用于读FLASH存满,则等待数据写入FLASH,状态变为非满;否则,在下一个ppCLK的上升沿,将当前并口数据寄存器的数据送出。FULL信号和BUSY信号共同构成了数据可否立即发送的决定因素。在读FLASH过程中,涉及到OutputFIFO的使用。PC端必须检测OutputFIFO的状态是否为空。如果空的话,必须等待FIFO从FLASH获得数据,状态变为非空;否则在下一个卯CLK上升沿的时候从FIFO中读取数据。EMPTY信号和BUSY信号共同构成了数据能否立即接收的决定因素。FULL和EMPTY信号都通过并口线连接PC端和目标板,检测这两个信号保证了每次读取和写入数据的有效性。不同厂家不同型号的FLASH存储器可采用不同的编程方式,对于不同型号的FLASH存储器,读写过程的周期和固定命令字各不相同。因此,在接收过程中,必须首先确定FLASH的型号。本发明提出一种自匹配型号选择机制,用于解决这一问题。本发明所提出的自匹配型号选择机制包括两个主要部分型号的选择和状态的控制。系统上电后,首先自动检测FLASH的ID号,获得当前系统待编程FLASH的具体型号,通过与预先建立的FLASH元件库进行比较来确定应用于FLASH编程的固定命令字,进而实现FLASH存储器的读写操作。预建FLASH元件库的范围直接影响到该方法的通用程度。PC并口以八位宽形式发送数据,而FLASH能够接收的格式是十六位宽格式。因此,在上述二者之间必须要有一个格式转换的过程,用于将八位宽数据拼接成十六位宽度,成为FLASH存储器能够支持的数据格式。对FLASH存储器的读写操作的完成依赖于状态机的控制,本发明所采用的状态控制流程是一种通用的方法,涵盖了系统在空闲、复位、读、写、擦除、等待等状态之间的跳转。在状态机的控制下,针对FLASH存储器的对应地址完成相应的数据操作。本发明的数据校验步骤实际是将读取过程和对比修正的过程结合到一起。读取是上述写入过程的逆过程。不同之处在于,受限于管脚的数量,读取采用的是二位宽数据并行的方式。读取的过程同样要在状态机的控制之下,依赖并口通信协议完成从FIFO到并口的数据传递。比对过程则是从FLASH中读回的数据与放在缓存区的数据进行对比,遇到不相符合的数值则进行修正并计数;当错误数累计达到一定数量的时候,提示编程失败,要求重新写入。修正的过程是对单个数据进行写入的过程。实际应用过程中,编程失败的情况多数因为硬件设计问题,因此往往省略校验过程而执行两次重复编程,也可以提高FLASH存储器在线编程的成功率。本发明的整体实现过程是通过检测控制寄存器的控制信号,包括开始信号START、清除标志CLEAR以及读、写、擦除等命令字,用于指示系统的当前状态以及将要执行的操作,并设定针对FLASH存储器操作范围的起始地址和结束地址。通过控制寄存器得到当前的操作类型以及待操作的地址范围之后,在时钟的跳变沿检测FIFO的状态(满或空),完成数据的搬移,并在FLASH存储器接口的选通信号CE有效的情况下,根据读使能OE或者写使能WE完成对应操作,将数据写入FLASH存储器或从FLASH存储器中读出。对比现有技术,本发明具备以下优点(l)速度快且可调整。并口采用的是8bit并行的数据,速度一般在1M左右,满足FLASH存储器的快速编程的需要。本发明提供的方法不仅速度快,而且可以自动调节,可满足不同实际应用的需要。(2)兼容性好。本发明通过采用自匹配型号选择机制,实现了对不同厂商不同信号的FLASH存储器的兼容,具备很强的移植能力。进一步,还可以通过自定义FLASH元件库,扩大该方法的直接使用范围。(3)适用范围广。通过并口实现FLASH在线编程的方法具备FLASH快速在线编程的优点。相对于JTAG而言,该方法又可用于CPU设计过程当中,完全不需要CPU配合工作。这一优点扩展了FLASH在线编程的应用领域,具有很大的市场价值。本发明利用目标板上现有资源来实现。在开发板上具有可编程逻辑器件的情况下,本发明除PC端软件部分外,所有功能都可以通过硬件描述语言在可编程逻辑器件上实现。在目标板上没有可编程的逻辑器件情况下,也可以通过简单的门电路实现接口电路的功能。通过SRAM构成异步FIFO和简单寄存器,就能实现相应的功能模块。作为一种可大规模应用的在线编程FLASH存储器方方法,也可以利用ASIC来实现本发明。将本发明所涉及的功能生成IPcore,通过ASIC来实现,成为一个专用的FLASH在线编程器。图1是根据本发明实现通过并口的FLASH在线编程方法的流程图;图2是根据本发明FLASH在线编程方法实现装置的系统结构图;图3是根据本发明FLASH在线编程方法实现装置的系统信号结构图;图4是基于本发明采用并口在线编程FLASH方法的高清电视音视频解码系统应用系统结构示意图;以及,图5是实现本发明FLASH在线编程方法所定义的并口通信协议的流程图。具体实施例方式下面结合附图对本发明的实施例作详细说明本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围包括但不限于下述的实施例。图4是基于本发明采用并口实现FLASH在线编程的方法,实现了对开发板片上FLASH在线配置的结构示意图。它是高清数字电视解码系统的一部分。该系统中,SoC芯片内部嵌入MIPS处理器,需要Linux操作系统的支持。因而需要将操作系统的boot程序和系统代码都保存在片外FLASH当中。系统所提供的硬件环境包括普通PC机、带有片上FLASH的开发板和数据连线。重新定义的并口功能管脚和并口通信协议都通过PC机实现,作为高速缓冲的FIFO则通过板上FPGA实现,自匹配的型号选择机制也通过FPGA来完成。自适应速度调整则包含了两个部分PPCLK的调整由PC端软件实现,而此外,读写FLASH的时钟则由FPGA分频板上晶振获得。以上构成了本发明一个具体实施实例的基础。图4显示了系统与FLASH存储器在线编程的相关部分。其中,FLASH采用AMD公司生产的AM29LV641,所存储的内容包括SoC内部CPU的操作系统,音频解码的代码和一些常用的数据表格。在该实例中,缓冲接口部分由可编程逻辑器件(FPGA)来完成,实现异步FIFO和寄存器、状态机的功能,如图2所示,整个系统由PC接口、控制寄存器、异步FIFO和FLASH接口部分组成,详细的数据流图参照图3。FLASH存储器的在线编程具体实现过程如图l所示。在系统复位之后,执行数据发送步骤IOI,这时,PC端首先从本地读取待编程的文件,并设定编程段的起始地址和结束地址,完成FLASH存储器在线编程的准备工作。一旦PC端检测系统状态并确认系统准备就绪时,便可开始在线编程过程。根据建立的数据通信协议,系统通过检査并口状态寄存器的值,选择发送数据的时机,并通过控制寄存器将控制命令传送给接收端。系统就绪的条件是当前没有对FLASH进行任何操作,系统没有处于BUSY状态。而系统的BUSY信号是从FPGA中获得的。系统上电加载好FPGA代码之后,将BUSY位(并口的第ll脚)置为0。系统准备就绪,可以进行下一步操作。系统准备就绪之后,则可以开始发送或者接收数据步骤102,否则进行空转等待;同时,自动调整系统编程FLASH的速度。通过不断尝试读写FLASH,完成速度的调整。在保证数据烧写正确的情况下,尽量提高ppCLK和fCLK(FLASH端读写FIFO的时钟)的频率。这种方法适用于大批量编程FLASH的过程中,在硬件环境不变的情况下,获得最大的编程可靠速度之后,将两个时钟频率固定,完成对大批量同型号FLASH的烧写。对于单片FLASH而言,可以跳过自适应调整系统时钟这一部分。每次读写之前,都要判断当前FIFO的状态。FIFO的状态分为满或者非满、空等。写过程中,如果FIFO己满,系统将写使能信号无效,PC端软件发送部分进入空转等待状态,FIFO的状态变成非满,系统将写使能信号激活,系统进入写状态。读过程中,如果FIFO已空,系统将读使能信号无效,PC端软件部分进入空转等待状态,直到FIFO的状态变成非空,系统将读使能信号激活,系统进入写状态,PC端可从FIFO读取数据。其中,数据接收步骤102的实现可有多种方式,只要能满足数据接收缓冲、状态控制和数据格式转换的功能要求即可。在示例的系统当中,是通过FPGA采用硬件逻辑描述语言verilogHDL来实现的。这部分主要分为四个模块FIFO数据缓冲、状态机控制、数据格式转换、写入模块。其中,FIFO分为输入FIFO和输出FIF0,作为数据的缓冲,分别用在读或写FLASH存储器的过程中。FIFO的设计是为了保证系统数据的连续性,通过提高FIFO的深度可以增加系统的稳定性和速度,但要耗费更多的FPGA资源。系统检测获得当前板上的FLASH存储器的ID号,通过与预先建立的器件库进行比较,获取FLASH存储器的具体型号。针对该实例所采用的AM29LV032FLASH存储器,在状态机的控制下完成了对其在线编程的功能。最后的数据转换模块将FIFO取出的数据转换成16bit并行的方式,送给FLASH存储器,完成对FLASH的编程。数据校验步骤103主要用于保证编程的准确性。校正的目的包括一,如果系统仅出现少量的数据错误,则进行修正。二,如果系统中出现大量的数据错误,提示重新写入。校正的过程实际上是读FLASH存储器和写FLASH存储器的结合。一方面,要从FLASH中将数据读回PC端。另一方面,读回的数据需要和缓存区中的数据进行对比。对比的过程是逐个比较的过程,如果发现二者不一致,则进行校正并计数。当计数超过系统容错上限时,提示重新写入。图5具体显示了实现本发明FLASH在线编程方法所定义的并口通信协议的流程。在线编程FLASH存储器系统复位500之后,进入空闲(Idle)状态501,等待下一步的操作指令。此时,通过并口的CMD[l..O]从PC端接收到操作命令,如果当前为写操作501,则系统进入写数据到FLASH存储器的过程506;如果当前为读操作502,系统进入读FLASH存储器的数据到PC端的过程。写过程中,系统检测当前操作是否完成,如果未完成,则进入等待态,直到完成为止506。当当前操作完成之后,系统可以执行新的操作,从PC端的并口数据寄存器读取8bit数据,送给FLASH存储器507。如果输入FIFO已满,则进入等待状态508,直到FIFO的数据被FLASH取走;当FIFO重新变成未满状态时,则可将新的数据写入输入FIFO中。这时,PC内存地址加一509,并判断当前是否已到达末地址510。如果己到达末地址,操作结束512;否则,继续下一个写数据的过程506。在进入读过程之后,系统同样需要检测当前操作是否完成,如果未完成,则进入等待态,直到操作完成为止502。当操作完成之后,系统从输出FIFO读取2bit数据到PC端的并口数据寄存器。如果此时输出FIFO为空,则进入等待状态,直到有数据从FLASH搬移到输出FIFO503,FIFO变成非空状态,数据可以从FIFO中读出,并写入到并口的数据寄存器504,并将PC内存地址加一。随后,判断当前是否已到达末地址505。如果已到达末地址,操作结束;否则,继续下一个读数据过程503。重复上述过程直至整个操作结束为止。以上实例仅为本发明应用的一个方面。一切具备了本发明所提到的硬件环境的系统,都可以采用本发明提供的方法实现FLASH的在线编程,编程的速度和效率都能得到保证。本系统设置板上晶振时钟为4M,实际编程速度比较快速稳定。这一发明也可用于大批量的编程FLASH存储器,具有相当大的实用价值。权利要求1、一种基于并口的FLASH存储器在线编程方法,其特征在于,基于专用并口管脚定义建立的数据通信协议,通过并口发送数据,利用异步FIFO接收从PC端传来的数据,并在状态机的控制下,经过格式转化写入FLASH存储器,并进行数据校验。2、根据权利要求l所述的基于并口的FLASH存储器在线编程方法,其特征是,包括三个步骤,即基于PC通用并口的数据发送,应用于缓冲接口部分和目标器件的数据接收,以及数据校验,其中所述基于PC通用并口的数据发送步骤包括基于在线编程FLASH专用管脚定义,建立新的并口收发通信协议;访问PC并口的通用寄存器,获取并口信号的状态;和,响应并口信号状态,自适应速度调整,适时将本地文件所读取到的数据写入到通用并口的数据寄存器中,并以8位宽的基本格式发送;所述应用于缓冲接口部分和目标器件的数据接收步骤包括响应数据流程的状态机制,自适应调整接受目标板上的时钟,并采用异步FIFO作为高速数据的缓冲,实时接收并口传送来的数据;和,FLASH型号的自匹配检测,完成数据格式的基本转换,将转换后的数据写入所需编程的目标器件,即FLASH存储器;所述数据校验步骤包括将FLASH存储器中的数据读回到PC机;和,将读回的数据与PC本地数据进行比对,纠正错误数据。3、根据权利要求2所述的基于并口的FLASH存储器在线编程方法,其特征是,所述基于在线编程FLASH专用管脚定义包括数据收发管脚,用于实现PC并口和接收目标器件之间交换数据的链接作用,并口发送数据主要用在对FLASH存储器进行在线编程的过程中,而接收数据则用于读取FLASH中的数据进行数据校验的过程中,发送数据采用8bit宽度形式并行方式,接收数据采用2bit并行的方式;状态检测管脚,用于PC端检测目标板的状态,在线编程系统检测当前的操作是否已经执行完毕,可进入下一操作,对应的检测信号为BUSY,系统采用两个异步的FIFO分别用于读和写FLASH的过程中,异步FIFO是否为满或者空,这两个信号是选择数据发送的时机,保证数据能够正确地被FIFO接收或从FIFO读取的依据;命令控制管脚,用于PC端将操作命令传送给目标板,使之执行相应的操作;命令控制管脚包括PC端括并口收发数据的控制时钟信号管脚ppCLK,整个系统的复位信号管脚RESET,以及系统操作命令的选择信号管脚CMD,系统运行的时候,需要选择当前进行的操作,根据操作类型的数量确定控制信号的长度,对FLASH在线编程的系统至少要包含读取、写入、擦除、校验四种操作,需要至少2bit数据进行标识,定义CMD[l..O]用来选择操作命令。4、根据权利要求2所述的基于并口的FLASH存储器在线编程方法,其特征是,所述基于PC通用并口的数据发送步骤进一步包括基于在线编程专用并口管脚的定义建立PC并口和目标板之间的数据通信协议,将数据从本地经过PC并口送到接收端,所述数据通信协议包含数据发送协议和数据接收协议,其中,所述数据发送协议用于FLASH存储器的在线编程过程,所述数据接收协议用于读取FLASH存储器内容的过程,在线编程系统复位之后,根据CMD控制信号判断当前处于何种操作状态。5、根据权利要求4所述的基于并口的FLASH存储器在线编程方法,其特征是,所述数据接收协议中,操作命令为读,系统通过检测BUSY管脚,来确定当前系统处于等待状态还是可执行下一步的操作,当BUSY信号为低时,系统检测相关FIFO的状态是否为空,如果FIFO为空,则空转等待,直到FIFO变为非空状态,然后读取2bit数据到并口的数据寄存器当中,相应的数据地址加1,直到读到末地址为止;所述数据发送协议中,操作命令为写,系统通过检测BUSY管脚,来确定当前系统处于等待状态还是可执行下一步的操作,当BUSY信号为低时,系统检测相关FIFO的状态是否为满,如果FIFO为满,则空转等待,直到数据从FIFO中取走、FIFO变为非满状态,然后从并口的数据寄存器中读取8bit数据到FIFO中,数据地址加l,直到读到末地址为止。6、根据权利要求2或4所述的基于并口的FLASH存储器在线编程方法,其特征是,所述基于PC通用并口的数据发送步骤还进一步包括采用自适应的速度调整策略来确定FLASH存储器在线编程的速度,其中,PC端的时间记为卯CLK,由PC端的CPU提供;目标板端的时钟记为fCLK,由板上晶振来提供;所述自适应速度调整策略包含主动模式和被动模式主动式速度调整由系统自主完成,通过不断尝试改变PPCLK和fCLK来实现FLASH存储器数据内容的稳定可靠读写,从而获得最快的稳定编程时钟,并将两个时钟ppCLK和fCLK固定;被动式速度调整则由使用者根据FLASH存储器的基本特性以及性能自主设定时钟速度,自适应速度调整策略应用于FLASH在线编程系统的初始阶段,一旦最优速度固定之后,才开始根据指定的地址和内容实现FLASH存储器的在线编程。7、根据权利要求2或4所述的基于并口的FLASH存储器在线编程方法,其特征是,所述基于PC通用并口的数据发送步骤还进一步包括在FLASH烧写过程中,通过检测并口的通用寄存器得到各个信号的状态,当BUSY和FULL信号都无效时,从本地读取一个八位数据到并口的数据寄存器,在PPCLK的下一个上升沿,将数据发送给目标板从并口的数据寄存器送到目标板,完成数据发送部分的功能。8、根据权利要求2所述的基于并口的FLASH存储器在线编程方法,其特征是,所述应用于缓冲接口部分和目标器件的数据接收步骤进一步包括:采用InputFIFO和OutputFIFO两个异步的FIFO来协调发送端和接收端之间的数据收发速度差异,对InputFIFO而言,读时钟由板上晶振fCLK提供,写时钟由并口的ppCLK信号提供;对于OutputFIFO,读时钟由并口的ppCLK信号提供,写时钟由板上晶振fCLK提供;InputFIFO用于写FLASH存储器过程,而OutputFIFO用于读FLASH存满,则等待数据写入FLASH,状态变为非满;否则,在下一个ppCLK的上升沿,将当前并口数据寄存器的数据送出;FULL信号和BUSY信号共同构成了数据可否立即发送的决定因素,在读FLASH过程中,涉及到OutputFIFO的使用,PC端必须检测OutputFIFO的状态是否为空,如果空的话,必须等待FIFO从FLASH获得数据,状态变为非空;否则在下一个ppCLK上升沿的时候从FIFO中读取数据;EMPTY信号和BUSY信号共同构成了数据能否立即接收的决定因素,FULL和EMPTY信号都通过并口线连接PC端和目标板,检测这两个信号保证了每次读取和写入数据的有效性。9、根据权利要求2或8所述的基于并口的FLASH存储器在线编程方法,其特征是,所述应用于缓冲接口部分和目标器件的数据接收步骤还进一步包括采用自匹配型号选择机制,所述自匹配型号选择机制包括两个部分型号的选择和状态的控制,系统上电后会自动检测FLASH的ID号,得到当前系统采用的FLASH具体型号,通过与预先建立的FLASH元件库进行比较确定FLASH编程过程中采用的固定命令字,进而完成对FLASH存储器的读写操作;采用的状态控制是一种通用的方法,涵盖系统在空闲、复位、读、写、擦除、等待状态之间的跳转,在状态机的控制下,针对FLASH存储器的对应地址完成相应的数据操作。10、根据权利要求1或2所述的基于并口的FLASH存储器在线编程方法,其特征是,所述数据校验步骤将读取过程和对比修正的过程结合到一起,其中读取是写入过程的逆过程,采用二位宽数据并行的方式,在状态机的控制之下,依赖并口通信协议完成从FIFO到并口的数据传递;比对过程则是从FLASH中读回的数据,据与放在缓存区的数据进行对比,遇到不相符合的数值则进行修正并计数,当错误数累计达到一定数量的时候,提示编程失败,要求重新写入;修正的过程是对单个数据进行写入的过程。全文摘要本发明提供一种嵌入式系统应用领域的基于并口的FLASH存储器在线编程方法,所述方法基于专用并口管脚定义建立的数据通信协议,通过并口发送数据,利用异步FIFO接收从PC端传来的数据,并在状态机的控制下,经过格式转化写入FLASH存储器,并对数据进行校验。本发明具有编程速度快且编程速度可调、可以在线任意修改编程内容、不需要CPU参与工作、可自匹配型号选择适用范围广的特点,特别适用于嵌入式系统的开发阶段。文档编号G11C16/10GK101315812SQ200810034859公开日2008年12月3日申请日期2008年3月20日优先权日2008年3月20日发明者孙雁飞,孙鸣乐,胡剑凌,陈颖琪,龙沪强申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1