CN101620885B - 一种从flash上引导系统的操作方法及装置 - Google Patents

一种从flash上引导系统的操作方法及装置 Download PDF

Info

Publication number
CN101620885B
CN101620885B CN2009101628657A CN200910162865A CN101620885B CN 101620885 B CN101620885 B CN 101620885B CN 2009101628657 A CN2009101628657 A CN 2009101628657A CN 200910162865 A CN200910162865 A CN 200910162865A CN 101620885 B CN101620885 B CN 101620885B
Authority
CN
China
Prior art keywords
flash
pld
management system
code data
initial part
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2009101628657A
Other languages
English (en)
Other versions
CN101620885A (zh
Inventor
林建加
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Star Net Communication Co Ltd
Original Assignee
Fujian Star Net Communication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian Star Net Communication Co Ltd filed Critical Fujian Star Net Communication Co Ltd
Priority to CN2009101628657A priority Critical patent/CN101620885B/zh
Publication of CN101620885A publication Critical patent/CN101620885A/zh
Application granted granted Critical
Publication of CN101620885B publication Critical patent/CN101620885B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种从FLASH上引导系统的操作方法及装置,包括:可编程逻辑器件在上电后通过Reset管脚将管理系统置于复位后,将FLASH中的最初部分的启动代码数据复制进可编程逻辑器件并对其进行错误检查和纠正,然后释放Reset管脚;让管理系统从可编程逻辑器件读取错误检查和纠正后的最初部分的启动代码数据,使管理系统从FLASH读取最初部分以后的启动代码数据引导系统启动。本发明能够确保系统可以正常启动;避免了现有系统的FLASH由于发生FLASH的位翻转而导致系统瘫痪的不足。

Description

一种从FLASH上引导系统的操作方法及装置
技术领域
本发明涉及计算机技术,特别涉及一种从FLASH上引导系统的操作方法及装置。
背景技术
首先对本申请涉及的各技术术语进行说明。
CPLD是Complex Programmable Logic Device(复杂可编程逻辑器件)的缩写,代表的是一种可编程逻辑器件(PLD),它可以在制造完成后由用户根据自己的需要定义其逻辑功能,在电子系统中一般用于实现一些简单的用户定制逻辑。
SRAM的英文全称是“Static RAM”,翻译成中文为:静态随机存储器。
ROM(Read Only Memory)是指只读存储器,该种存储器是在掉电后数据不会丢失的一种存储器,主要用来存放“固件”(Firmware)。
EPROM(Erasable Programmable ROM,可擦除可编程ROM)也是一种ROM,EPROM是通过紫外光的照射擦除原先的程序,是一种通用的存储器。
FLASH存储器又称闪存,是一种可以在线多次擦除的非易失性存储器,即掉电后数据不会丢失,通常为嵌入式系统中典型的存储设备。在嵌入式系统中一般用于存储系统工作的代码和数据。
并行FLASH是FLASH存储器的一种,又称为NOR FLASH,由于并行FLASH支持代码片上执行,应用程序和启动代码可以直接在Flash上运行,因此在嵌入式系统中一般用于存储系统的启动代码。
位翻转:在所有flash器件都受位交换现象的困扰。是指在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特(bit)位会发生反转或被报告反转了,即,存储在FLASH里的数据由0变成1,或者由1变成0。
位翻转的影响:一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机,比如位翻转发生在系统的引导程序。当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。
ECC是“Error Checking and Correcting”的简写,中文名称是“错误检查和纠正”。ECC是一种能够实现“错误检查和纠正”的技术。
启动代码:该代码是完成处理器系统处理的配置和系统设备的初始化的代码。
并行FLASH器件一般包含地址信号线、数据信号线和读写控制线,CPU处理器通过以上三种信号线读或写FLASH内容。
图1为并行FLASH的管脚示意图,如图所示,例中并行FLASH的管脚分别代表是:
RESET为芯片的复位管脚;
CE为芯片的片选信号线;
WE为芯片的写控制线;
OE为芯片的读控制线;
VCC为芯片的电源输入管脚;
VSS为芯片的接地管脚;
BYTE为芯片的工作方式选择管脚,BYTE接高电平时芯片工作在16位工作模式,BYTE接地时芯片工作在8位工作模式;
WP/ACC芯片的写保护管脚,WP接低电平时芯片不允许被修改;
DQ0-DQ7芯片工作在8位模式下的数据信号线;
DQ8-DQ15芯片工作在16位模式下的数据信号线;
A0、A1、A2到A20为芯片工作在16位工作模式下的地址线;
A-1、A0、A1到A20为芯片工作在8位工作模式下的地址线。
其中:
地址线:用来传输地址信息的信号线,如图1中的A0、A1等。
数据线:用来传输数据信息的信号线,如图1中的DQ0-DQ7。
控制信号线:用来传输控制信息的信号线,比如读写选择等信息。
图2为读写系统中FLASH连接方式结构示意图,如图所示,读写系统中的管理系统200和FLASH201通过地址线、读信号线、写信号线、片选信号线连接在一起。其中:
管理系统200完成整个系统的控制,包括发起对FLASH201的读写操作;
FLASH201用于存储系统工作中正常的代码和数据,接受管理系统发送的读写命令。
写信号线:用于当管理系统要对FLASH进行写操作时,将该信号线管脚置为低电平。
写保护管脚203直接连接到高电平,允许管理系统的写操作行为,高电平一般是3.3V的电压,写保护管脚即为图1中的WP管脚。
管理系统200通过串口204输出系统的工作状态。
传统的引导系统上电流程可以包括如下过程:
1、系统上电,处理器复位结束;
2、处理器从FLASH读取代码;
a、处理器正常启动(FLASH代码没有发生位翻转);
b、处理器无法正常启动(FLASH里的数据发生位翻转,处理器无法读取到正确的代码)。
传统系统的问题在于:
1、在FLASH中存在位翻转的问题,系统的引导代码可能发生程序丢失的问题;
2、系统没有ECC的装置,在出现问题的时候无法把出问题的代码恢复正常。
这也将导致以下的情况发生:
由于位翻转,则将导致FLASH的关键数据系统的引导区被破坏,导致系统无法正常的工作。
图3为并行FLASH翻转故障处理流程示意图,如图所示,为了解决并行FLASH的ECC问题,当前业界对并行FLASH的处理方式如下:
步骤301、系统上电;
步骤302、处理器读取FLASH里最初一小段启动代码;
步骤303、处理器执行启动代码里的ECC代码程序;
步骤304、处理器读取剩余的启动代码,并且采用ECC算法修正出错的代码;
步骤305、处理器完成启动代码的读取。
从图3可以看出,目前的处理方式还是存在一定的问题,如果并行FLASH的位翻转发生在处理器读取的最初的小段的启动代码里,则处理器就无法正常启动,更无法执行后续的ECC代码,因此该处理方式还是存在一定的致命问题。
因此,现有技术的不足在于:传统系统存在无法对FLASH的关键部分做ECC保护的不足,以及因无法检测到ECC错误,导致系统发生位翻转的时候系统无法觉察的不足。
发明内容
本发明提供了一种从FLASH上引导系统的操作方法及装置。用以解决现有技术中在FLASH数据出现位翻转时系统不能启动的问题。
本发明实施例中提供了一种可编程逻辑器件,包括:
控制逻辑模块,用于从FLASH中将最初部分的启动代码数据复制至SRAM;
SRAM,用于存储从外部FLASH中复制的最初部分的启动代码数据;
ECC模块,用于对SRAM中的最初部分的启动代码数据进行ECC;
读取切换逻辑模块,用于在外部处理器从SRAM读取ECC后的最初部分的启动代码数据后,将外部处理器的读取对象从SRAM切换为外部FLASH。
较佳地,所述读取切换逻辑模块包括:
复位单元,用于在上电后通过Reset管脚将外部处理器置于复位,在ECC模块对SRAM中的最初部分的启动代码数据进行ECC后,释放Reset管脚;
切换单元,用于在上电后,将外部处理器所在的管理系统的读信号输入线与SRAM的读信号线、读片选输入线与SRAM的片选信号线连接;在接收到切换命令后进行切换,将控制外部处理器所在的管理系统的读信号输入线与FLASH的读信号线、读片选输入线与FLASH的片选信号线连接。
较佳地,所述读取切换逻辑模块进一步包括:
标示单元,用于在切换单元切换完成后,设置FLASH读取标示位,所述FLASH读取标示位用以指示外部处理器从FLASH读取启动代码数据。
较佳地,进一步包括:
EPROM,用于存储ECC模块执行ECC所需的数据。
较佳地,进一步包括:
位翻转标志位模块,用于在ECC模块确定所述最初部分的启动代码数据出现位翻转时,设置位翻转标志。
本发明实施例中提供了一种FLASH的引导系统,包括:
管理系统,读信号线与PLD读信号线相连,片选信号线与PLD的片选信号线相连,Reset管脚与PLD相连,用于根据读取的启动代码数据引导系统启动;
PLD,读信号线分别与管理系统、FLASH的读信号线相连,片选信号线分别与管理系统、FLASH的片选信号线相连,用于对FLASH上的最初部分的启动代码数据进行ECC,并控制管理系统读取PLD或FLASH上的启动代码数据;
FLASH,读信号线与PLD的读信号线相连,片选信号线与PLD的片选信号线相连,用于存储启动代码数据。
较佳地,所述PLD进一步用于在上电后通过Reset管脚将管理系统置于复位;将外部处理器所在的管理系统的读信号输入线与SRAM的读信号线、读片选输入线与SRAM的片选信号线连接,将FLASH中的最初部分的启动代码数据复制进PLD;对复制的最初部分的启动代码数据进行ECC后,释放Reset管脚;在接收到切换命令后进行切换,所述切换是将管理系统的读信号输入线与FLASH的读信号线、读片选输入线与FLASH的片选信号线连接;
所述管理系统进一步用于从PLD读取ECC后的最初部分的启动代码数据;初始化后向PLD发送切换命令;从FLASH读取最初部分以后的启动代码数据引导系统启动。
较佳地,所述PLD进一步用于在确定所述最初部分的启动代码数据出现位翻转时,设置位翻转标志;
管理系统进一步用于在识别出位翻转标志后,对FLASH中所述最初部分的启动代码数据进行修复。
较佳地,所述PLD进一步用于在所述切换完成后,设置FLASH读取标示位;
所述管理系统进一步用于在识别出所述FLASH读取标示位后,从FLASH读取启动代码数据。
本发明实施例中提供了一种从FLASH上引导系统的操作方法,包括如下步骤:
PLD在上电后通过Reset管脚将管理系统置于复位;
PLD将FLASH中的最初部分的启动代码数据复制进PLD;
PLD对复制的最初部分的启动代码数据进行ECC后,释放Reset管脚;
管理系统从PLD读取ECC后的最初部分的启动代码数据,初始化后向PLD发出切换命令;
PLD根据切换命令将管理系统的读信号输入线与FLASH的读信号线、读片选输入线与FLASH的片选信号线连接;
管理系统从FLASH读取最初部分以后的启动代码数据引导系统启动。
较佳地,进一步包括:
PLD在确定所述最初部分的启动代码数据出现位翻转时,设置位翻转标志;
管理系统在识别出位翻转标志后,对FLASH中所述最初部分的启动代码数据进行修复。
较佳地,进一步包括:
PLD在收到切换命令后,设置FLASH读取标示位;
管理系统在识别出所述FLASH读取标示位后,从FLASH读取启动代码数据。
本发明有益效果如下:
本发明在实施中,PLD在上电后通过Reset管脚将管理系统置于复位后,将FLASH中的最初部分的启动代码数据复制进PLD并对其进行ECC,然后释放Reset管脚;让管理系统从PLD读取ECC后的最初部分的启动代码数据,最后才使管理系统从FLASH读取最初部分以后的启动代码数据引导系统启动。由于通过在电路中添加PLD,将其用于检测系统的FLASH是否发生位翻转,在检测到系统的FLASH发生位翻转时通过ECC算法进行纠正,从而能够确保系统可以正常启动;避免了现有系统的FLASH由于发生FLASH的位翻转而导致系统瘫痪的不足。
附图说明
图1为背景技术中并行FLASH的管脚示意图;
图2为背景技术中读写系统中FLASH连接方式结构示意图;
图3为背景技术中并行FLASH翻转故障处理流程示意图;
图4为本发明实施例中FLASH的引导系统结构示意图;
图5为本发明实施例中可编程逻辑器件结构示意图;
图6为本发明实施例中读取切换逻辑模块工作示意图;
图7为本发明实施例中读取切换流程实施示意图;
图8为本发明实施例中从FLASH上引导系统的操作方法实施流程示意图;
图9为本发明实施例中引导系统上电后的实施流程示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行说明。
图4为FLASH的引导系统结构示意图,如图所示,系统中可以包括:
管理系统401,读信号线与PLD的读信号线相连,片选信号线与PLD、的片选信号线相连,Reset管脚与PLD相连,用于根据读取的启动代码数据引导系统启动;
PLD402,读信号线分别与管理系统、FLASH的读信号线相连,片选信号线分别与管理系统、FLASH的片选信号线相连,用于对FLASH上的最初部分的启动代码数据进行ECC,并控制管理系统读取PLD或FLASH上的启动代码数据;
FLASH403,读信号线与PLD的读信号线相连,片选信号线与PLD的片选信号线相连,用于存储启动代码数据。
实施中,管理系统通过总线发送读写命令与PLD交互数据;管理系统通过读写、数据地址信号线发送读写命令给FLASH;
实施中,PLD可以进一步用于在上电后通过Reset管脚将管理系统置于复位;将外部处理器所在的管理系统的读信号输入线与SRAM的读信号线、读片选输入线与SRAM的片选信号线连接,将FLASH中的最初部分的启动代码数据复制进PLD;对复制的最初部分的启动代码数据进行ECC后,释放Reset管脚;在接收到切换命令后进行切换,所述切换是将管理系统的读信号输入线与FLASH的读信号线、读片选输入线与FLASH的片选信号线连接;
管理系统可以进一步用于从PLD读取ECC后的最初部分的启动代码数据;初始化后向PLD发送切换命令;从FLASH读取最初部分以后的启动代码数据引导系统启动。
实施中,PLD还可以进一步用于在确定所述最初部分的启动代码数据出现位翻转时,设置位翻转标志;
管理系统则可以进一步用于在识别出位翻转标志后,对FLASH中所述最初部分的启动代码数据进行修复。
实施中,PLD可以进一步用于在切换完成后,设置FLASH读取标示位;
管理系统则可以进一步用于在识别出所述FLASH读取标示位后,从FLASH读取启动代码数据。
图中,系统中不仅包括管理系统401和PLD402、FLASH403,还可以包括EPROM404以及串口405,PLD通过总线406控制EPROM,PLD通过片选信号线、数据线、读信号读取FLASH的数据,下面将会在PLD的具体实施中进行说明。
图5为可编程逻辑器件结构示意图,如图所示,PLD中可以包括:
控制逻辑模块4021,用于从FLASH中将最初部分的启动代码数据复制至SRAM;
SRAM4022,用于存储从外部FLASH中复制的最初部分的启动代码数据;
ECC模块4023,用于对SRAM中的最初部分的启动代码数据进行ECC;
读取切换逻辑模块4024,用于在外部处理器从SRAM读取ECC后的最初部分的启动代码数据后,将外部处理器的读取对象从SRAM切换为外部FLASH。
实施中,SRAM是PLD内部的存储单元,可以用于存放PLD从FLASH里拷贝的数据;控制逻辑模块用来完成管理系统和PLD的通信控制、完成PLD和FLASH的通信控制,负责拷贝FLASH的数据到SRAM,还可以用控制逻辑模块来实现其他一些信号的控制;ECC模块的功能可以是检测拷贝到SRAM里的数据是否和原始数据一致,如果不一致则对SRAM里的数据进行错误纠正。
实施中,读取切换逻辑模块中可以包括:
复位单元,用于在上电后通过Reset管脚将外部处理器置于复位,在ECC模块对SRAM中的最初部分的启动代码数据进行ECC后,释放Reset管脚;
切换单元,用于在上电后,将外部处理器所在的管理系统的读信号输入线与SRAM的读信号线、读片选输入线与SRAM的片选信号线连接;在接收到切换命令后进行切换,在进行切换时,可以是将控制外部处理器所在的管理系统的读信号输入线与FLASH的读信号线、读片选输入线与FLASH的片选信号线连接。
图6为读取切换逻辑模块工作示意图,如图所示,在复位单元释放Reset管脚后,读取切换逻辑模块将外部处理器所在的管理系统的读信号输入线与SRAM的读信号线、读片选输入线与SRAM的片选信号线连接,这样,管理系统中的处理器便可以读取PLD中SRAM的数据;
在外部处理器从SRAM读取ECC后的最初部分的启动代码数据后,读取切换逻辑模块将控制外部处理器所在的管理系统的读信号输入线与FLASH的读信号线、读片选输入线与FLASH的片选信号线连接,这样,管理系统中的处理器便可以读取FLASH中的数据。
图7为读取切换流程实施示意图,如图所示,具体的切换流程可以包括:
步骤701、上电后,管理系统的读信号输入和PLD内部的SRAM读信号连接;
步骤702、上电后,管理系统的片选信号输入和PLD内部的SRAM片选信号输入连接;
步骤703、管理系统从内部的SRAM读取数据;
步骤704、PLD接收到管理系统发送的读取切换命令;
步骤705、管理系统的读信号输入和外部的FLASH读信号连接;
步骤706、管理系统的片选信号输入和外部的FLASH片选信号输入连接;
步骤707、管理系统从外部的FLASH读取数据。
实施中,读取切换逻辑模块还可以进一步包括:
标示单元,用于在切换单元切换完成后,设置FLASH读取标示位,所述FLASH读取标示位用以指示外部处理器从FLASH读取启动代码数据。
实施中,PLD中还可以进一步包括:
EPROM,用于存储ECC模块执行ECC所需的数据。
EPROM404的结构位置关系可以如图4中所示,在EPROM上可以存放FLASH关键数据的ECC的检验字和ECC模块需要的数据;EPROM的容量大小可以根据系统的实际需要来确定。
需要注意的是,图4中的EPROM是外置于PLD的,实际实施中也可以置于PLD,或者就使用PLD的存储器,外置或者使用内部的EPROM等是由读取的最初部分的启动代码数据的字节数决定的。
PLD中还可以进一步包括:
位翻转标志位模块4025,用于在ECC模块确定所述最初部分的启动代码数据出现位翻转时,设置位翻转标志。
位翻转标示位是用于标示系统的FLASH的引导部分发生了位翻转;在处理器正常启动后,便与处理器确认是否需要修改FLASH里有问题的部分数据。
可以看出,本发明实施例中所提供的技术方案适用于对系统可靠性要求比较高的应用场合。本发明实施中,主要是通过以下手段来克服老系统存在的问题,具体为:
通过在PLD电路中添加ECC检测,用于检测FLASH是否发生位翻转,并且在发生位翻转错误的时候纠正FLASH的错误数据;
在实施中,则是在管理系统上电后,先运行ECC检测,用以保证后续处理器可以读取到正确的代码,通过ECC检测确保系统需要的FLASH没有问题后,才启动处理器的读取代码的过程。
系统上电后,处理器没有马上读取并行FLASH的代码,而是等待ECC检测单元完成FLASH内容的确认后才开始工作。
进一步的,本发明实施中可以通过在检测到发生位翻转的同时,通知处理器系统发生位翻转,通知处理器及时纠正错误的FLASH数据,使系统的数据更可靠,不会发生更多的错误。
相应的,本发明实施例中还提供了一种从FLASH上引导系统的操作方法,下面进行说明。
图8为从FLASH上引导系统的操作方法实施流程示意图,如图所示,在系统引导时可以包括如下步骤:
步骤801、PLD在上电后通过Reset管脚将管理系统置于复位;
步骤802、PLD将FLASH中的最初部分的启动代码数据复制进PLD;
步骤803、PLD对复制的最初部分的启动代码数据进行ECC后,释放Reset管脚;
步骤804、管理系统从PLD读取ECC后的最初部分的启动代码数据,初始化后向PLD发出切换命令;
步骤805、PLD根据切换命令将管理系统的读信号输入线与FLASH的读信号线、读片选输入线与FLASH的片选信号线连接;
步骤806、管理系统从FLASH读取最初部分以后的启动代码数据引导系统启动。
实施中,还可以进一步包括:
PLD在确定所述最初部分的启动代码数据出现位翻转时,设置位翻转标志;
管理系统在识别出位翻转标志后,对FLASH中所述最初部分的启动代码数据进行修复。
实施中,还可以进一步包括:
PLD在收到切换命令后,设置FLASH读取标示位;
管理系统在识别出所述FLASH读取标示位后,从FLASH读取启动代码数据。
下面再用一实例进行说明,该例中最初部分的启动代码数据为1K字节的数据量,实施中,为便于具体了解实施的功能模块,具体以管理系统的处理器为例进行说明,则在具体实施中可以如下:
图9为引导系统上电后的实施流程示意图,如图所示,在上电后可以包括如下步骤:
步骤901、系统上电,PLD通过Reset管脚把处理器置于复位状态;
将Reset管脚处于复位状态可以使处理器不能读取FLASH的代码;
步骤902、PLD读取存放在FLASH里的启动代码的头1K个字节到PLD内部的SRAM;
步骤903、PLD分四次对1K的数据做ECC的校验,若发现数据出现位翻转,则PLD运行ECC纠正功能,对存放在PLD内部的数据进行ECC纠正,并且置PLD内部的“系统位翻转的标识位”;
步骤904、PLD控制内部地址逻辑,PLD释放Reset管脚使处理器开始工作;
步骤905、处理器读取存放在PLD内部SRAM里的启动代码的头1K代码;
由上述步骤903可知该部分代码是经过ECC纠正过的代码;
步骤906、处理器初始化管理系统,处理器发送PLD读取切换的命令;
步骤907、PLD切换读切换逻辑,并且置从FLASH读取标示位,使处理器可以正常的从FLASH里读取其他1K字节外的代码数据;
步骤908、处理器从PLD内部读取到“从FLASH读取的标示位”置位,处理器从FLASH里读取其他的代码开始运行系统程序;
步骤909、处理器读取“系统位翻转标示位”,如果发现系统的FLASH存在位翻转,则运行代码修复程序,修复FLASH里有问题的1K字节的代码,如无发生位翻转错误,则不处理。
需要说明的是,上述实施例中提到的1K字节只是个示例,在实际的使用过程中,可以根据系统的实际需要调整字节数,处理器只要有这1K字节就可以完成处理器本身的工作正常的配置;确认处理器至少需要多少字节才能完成处理器的配置,可以用以决定读取和校验多大字节空间的启动代码;读取的字节数也决定了需要多大容量的EPROM也决定了是否可以直接采用PLD内部的EPROM。
实施中,执行步骤909的修复是由于FLASH在使用过程中会发生越来越多的位翻转,因此可以在检测到第一次的位翻转的时候就修复FLASH里的代码,从而可以把FLASH的位翻转的比率减低到最低。
由上述实施例可以看出,与现有技术相比,本发明实施例提供的技术方案至少有如下不同:
1、在系统启动的时候,先启动的不是处理器,而是系统的ECC检测功能,是对FLASH内容的正确性完成确认后,才启动处理器;
2、传统的系统的ECC是由处理器执行单元完成,本发明技术方案中的ECC算法是由外置的装置完成;
3、传统系统的ECC算法可以执行的前提是:系统的FLASH至少有一小段的代码是不存在位翻转问题,而本发明实施例提供的技术方案则无此要求,允许系统FLASH的任何地方存在一定比例的位翻转;
4、在系统启动的时候,处理器不是从FLASH读取最初的代码,而是读取存放PLD的SRAM里的、经过ECC检验和纠正过的代码。由于系统的主要代码还是存放在FLASH里,因此在读取完最基本的引导代码后,PLD通过切换地址逻辑,使得处理器可以从FLASH读取代码。
综上,本发明实施例中提供的技术方案通过在电路中添加PLD,将其用于检测系统的FLASH是否发生位翻转,在检测到系统的FLASH发生位翻转时通过ECC算法进行纠正,从而能够确保系统可以正常启动;避免了现有系统的FLASH由于发生FLASH的位翻转而导致系统瘫痪的不足。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (12)

1.一种可编程逻辑器件PLD,其特征在于,包括:
控制逻辑模块,用于从FLASH中将最初部分的启动代码数据复制至静态随机存储器SRAM;
SRAM,用于存储从外部FLASH中复制的最初部分的启动代码数据;
错误检查和纠正ECC模块,用于对SRAM中的最初部分的启动代码数据进行ECC;
读取切换逻辑模块,用于在外部处理器从SRAM读取ECC后的最初部分的启动代码数据后,将外部处理器的读取对象从SRAM切换为外部FLASH。
2.如权利要求1所述的PLD,其特征在于,所述读取切换逻辑模块包括:
复位单元,用于在上电后通过复位Reset管脚将外部处理器置于复位,在ECC模块对SRAM中的最初部分的启动代码数据进行ECC后,释放Reset管脚;
切换单元,用于在上电后,将外部处理器所在的管理系统的读信号输入线与SRAM的读信号线、外部处理器所在的管理系统的读片选输入线与SRAM的片选信号线连接;在接收到切换命令后进行切换,所述切换是将控制外部处理器所在的管理系统的读信号输入线与FLASH的读信号线、外部处理器所在的管理系统的读片选输入线与FLASH的片选信号线连接。
3.如权利要求2所述的PLD,其特征在于,所述读取切换逻辑模块进一步包括:
标示单元,用于在切换单元切换完成后,设置FLASH读取标示位,所述FLASH读取标示位用以指示外部处理器从FLASH读取启动代码数据。
4.如权利要求1所述的PLD,其特征在于,进一步包括:
可擦除可编程只读存储器EPROM,用于存储ECC模块执行ECC所需的数据。
5.如权利要求1至4任一所述的PLD,其特征在于,进一步包括:
位翻转标志位模块,用于在ECC模块确定所述最初部分的启动代码数据出现位翻转时,设置位翻转标志。
6.一种FLASH的引导系统,其特征在于,包括:
管理系统,所述管理系统的读信号线与PLD的读信号线相连,所述管理系统的片选信号线与PLD的片选信号线相连,Reset管脚与PLD相连,用于根据读取的启动代码数据引导系统启动;
PLD,所述PLD的读信号线分别与管理系统、FLASH的读信号线相连,所述PLD的片选信号线分别与管理系统、FLASH的片选信号线相连,用于对FLASH上的最初部分的启动代码数据进行ECC,并控制管理系统读取PLD或FLASH上的启动代码数据;
FLASH,所述FLASH的读信号线与PLD的读信号线相连,所述FLASH的片选信号线与PLD的片选信号线相连,用于存储启动代码数据。
7.如权利要求6所述的引导系统,其特征在于,
所述PLD进一步用于在上电后通过Reset管脚将管理系统置于复位;将外部处理器所在的管理系统的读信号输入线与所述PLD内部的SRAM的读信号线、外部处理器所在的管理系统的读片选输入线与所述PLD内部的SRAM的片选信号线连接,将FLASH中的最初部分的启动代码数据复制进PLD;对复制的最初部分的启动代码数据进行ECC后,释放Reset管脚;在接收到切换命令后进行切换,所述切换是将管理系统的读信号输入线与FLASH的读信号线、管理系统的读片选输入线与FLASH的片选信号线连接;
所述管理系统进一步用于从PLD读取ECC后的最初部分的启动代码数据;初始化后向PLD发送切换命令;从FLASH读取最初部分以后的启动代码数据引导系统启动。
8.如权利要求6所述的引导系统,其特征在于,
所述PLD进一步用于在确定所述最初部分的启动代码数据出现位翻转时,设置位翻转标志;
管理系统进一步用于在识别出位翻转标志后,对FLASH中所述最初部分的启动代码数据进行修复。
9.如权利要求6所述的引导系统,其特征在于,所述PLD进一步用于在切换完成后,设置FLASH读取标示位;
所述管理系统进一步用于在识别出所述FLASH读取标示位后,从FLASH读取启动代码数据。
10.一种从FLASH上引导系统的操作方法,其特征在于,包括如下步骤:
PLD在上电后通过Reset管脚将管理系统置于复位;
PLD将FLASH中的最初部分的启动代码数据复制进PLD;
PLD对复制的最初部分的启动代码数据进行ECC后,释放Reset管脚;
管理系统从PLD读取ECC后的最初部分的启动代码数据,初始化后向PLD发出切换命令;
PLD根据切换命令将管理系统的读信号输入线与FLASH的读信号线、管理系统的读片选输入线与FLASH的片选信号线连接;
管理系统从FLASH读取最初部分以后的启动代码数据引导系统启动。
11.如权利要求10所述的方法,其特征在于,进一步包括:
PLD在确定所述最初部分的启动代码数据出现位翻转时,设置位翻转标志;
管理系统在识别出位翻转标志后,对FLASH中所述最初部分的启动代码数据进行修复。
12.如权利要求10所述的方法,其特征在于,进一步包括:
PLD在收到切换命令后,设置FLASH读取标示位;
管理系统在识别出所述FLASH读取标示位后,从FLASH读取启动代码数据。
CN2009101628657A 2009-08-07 2009-08-07 一种从flash上引导系统的操作方法及装置 Expired - Fee Related CN101620885B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101628657A CN101620885B (zh) 2009-08-07 2009-08-07 一种从flash上引导系统的操作方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101628657A CN101620885B (zh) 2009-08-07 2009-08-07 一种从flash上引导系统的操作方法及装置

Publications (2)

Publication Number Publication Date
CN101620885A CN101620885A (zh) 2010-01-06
CN101620885B true CN101620885B (zh) 2012-01-25

Family

ID=41514064

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101628657A Expired - Fee Related CN101620885B (zh) 2009-08-07 2009-08-07 一种从flash上引导系统的操作方法及装置

Country Status (1)

Country Link
CN (1) CN101620885B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491716B (zh) * 2018-10-19 2021-11-16 北京行易道科技有限公司 启动方法及装置、程序存储方法及装置
CN112052112A (zh) * 2020-07-14 2020-12-08 许继集团有限公司 基于NOR Flash存储的位翻转错误检测方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1282089C (zh) * 2003-01-09 2006-10-25 三星电子株式会社 控制串行快闪存储器中适当执行的装置和方法及相应芯片
CN101243453A (zh) * 2005-08-22 2008-08-13 Nxp股份有限公司 控制内置存储器访问
CN101276297A (zh) * 2008-05-14 2008-10-01 北京星网锐捷网络技术有限公司 一种处理器系统、设备及故障处理方法
CN101299200A (zh) * 2008-06-11 2008-11-05 北京星网锐捷网络技术有限公司 一种处理器系统、设备及故障处理方法
CN201185088Y (zh) * 2008-04-16 2009-01-21 浩通科技(深圳)有限公司 基于可编程逻辑器件的nand闪存启动装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1282089C (zh) * 2003-01-09 2006-10-25 三星电子株式会社 控制串行快闪存储器中适当执行的装置和方法及相应芯片
CN101243453A (zh) * 2005-08-22 2008-08-13 Nxp股份有限公司 控制内置存储器访问
CN201185088Y (zh) * 2008-04-16 2009-01-21 浩通科技(深圳)有限公司 基于可编程逻辑器件的nand闪存启动装置
CN101276297A (zh) * 2008-05-14 2008-10-01 北京星网锐捷网络技术有限公司 一种处理器系统、设备及故障处理方法
CN101299200A (zh) * 2008-06-11 2008-11-05 北京星网锐捷网络技术有限公司 一种处理器系统、设备及故障处理方法

Also Published As

Publication number Publication date
CN101620885A (zh) 2010-01-06

Similar Documents

Publication Publication Date Title
CN101369453B (zh) 闪存存储器设备和控制闪存存储器设备的方法
CN101681281B (zh) 检测出现的坏块
CN102023815B (zh) 在固态存储器中实现raid
JP4994112B2 (ja) 半導体集積回路装置およびメモリ制御方法
CN101558452B (zh) 用于在闪速eeprom存储页中重构可靠性数据的方法和装置
CN101246738B (zh) 具有备份电路的存储系统及编程方法
JP4620049B2 (ja) メモリデバイスおよびホスト機器
CN102298545B (zh) 一种系统启动引导处理方法及装置
CN103299276A (zh) 嵌入式装置的软件更新过程
US8756398B2 (en) Partitioning pages of an electronic memory
KR20070076849A (ko) 메모리 카드의 카피백 동작을 수행하는 장치 및 방법
CN102099793A (zh) 根据固态存储器的擦除计数进行误差校正的方法和装置
WO2007119267A1 (ja) フラッシュメモリ用のメモリコントローラ
WO2007023674A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
CN101882472A (zh) 具可变动错误校正码机制的快闪储存装置及其控制方法
CN114303196A (zh) 处理块擦除操作期间产生的不良块
US8966344B2 (en) Data protecting method, memory controller and memory storage device
CN101241769A (zh) 可修复半导体存储器件及其修复方法
CN109727630A (zh) 存储系统及其操作方法
CN101620885B (zh) 一种从flash上引导系统的操作方法及装置
JP2013171343A (ja) ストレージデバイス
US8966161B2 (en) Memory storage device and restoring method thereof
JP2004342112A (ja) エラーチェック訂正技法を用いて不揮発性メモリユニットのデータ保持損に応答する装置及び方法
CN101694636B (zh) 非易失性数据存储器数据更新备份系统及方法
JP6233134B2 (ja) 電子情報記憶媒体、情報処理方法、及び情報処理プログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120125

Termination date: 20150807

EXPY Termination of patent right or utility model