[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN102135927B - 一种基于nand flash的系统引导方法和装置 - Google Patents

一种基于nand flash的系统引导方法和装置 Download PDF

Info

Publication number
CN102135927B
CN102135927B CN 201110111751 CN201110111751A CN102135927B CN 102135927 B CN102135927 B CN 102135927B CN 201110111751 CN201110111751 CN 201110111751 CN 201110111751 A CN201110111751 A CN 201110111751A CN 102135927 B CN102135927 B CN 102135927B
Authority
CN
China
Prior art keywords
address
cpu
nand flash
boot
boot program
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.)
Active
Application number
CN 201110111751
Other languages
English (en)
Other versions
CN102135927A (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.)
New H3C Information Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies 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 Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN 201110111751 priority Critical patent/CN102135927B/zh
Publication of CN102135927A publication Critical patent/CN102135927A/zh
Application granted granted Critical
Publication of CN102135927B publication Critical patent/CN102135927B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明提供了一种基于NAND FLASH的系统引导方法和装置。该方法包括:预先在NAND FLASH中存储多份引导程序,在进行系统引导的过程中,利用逻辑芯片对CPU发送到NAND FLASH的原始地址进行偏移运算,得到一个未被读取过的引导程序地址;CPU读取并执行NAND FLASH中该未被读取过的引导程序,如果执行成功,则系统引导成功,否则,重新启动CPU并再次尝试进行系统引导,直到系统引导成功,或所有引导程序均执行失败,系统引导失败。本发明通过更换读取的引导程序地址,能够实现引导程序的备份启动。

Description

一种基于NAND FLASH的系统引导方法和装置
技术领域
本发明涉及计算机系统的引导方法,特别涉及一种基于与非闪存(NANDFLASH)的引导方法和装置。 
背景技术
在系统启动之初,系统的内存并不是直接可读写的,内存中也没有可以执行的内核代码,这就需要进行系统引导。系统引导,是指在操作系统内核运行之前运行的引导程序,通过引导程序,初始化硬件设备、建立内存空间的映射图,为最终调用操作系统内核准备好正确的环境。引导程序通常存放在非易失存储设备上。 
目前的非易失存储设备主要包括或非闪存(NOR FLASH)和与非闪存(NAND FLASH)两种。NOR FLASH的接口由地址总线,数据总线和读、写、片选等控制信号线组成,接口读写控制时序也和RAM芯片相同,可以实现代码的芯片内执行(XIP)操作,因此成为主流系统引导存储芯片。NANDFLASH的接口如图1所示,没有地址总线和数据总线的区分,对数据的读写操作都是通过I/O总线串行操作的。读取NAND FLASH的数据,需要先发送读操作命令并通过I/O总线输入要读取数据的地址,再由I/O总线读出数据,读写操作和RAM芯片的读写操作不同,无法实现XIP操作。 
与NOR FLASH相比,NAND FLASH具有较高存储密度和较长使用寿命的优势,因此,也有越来越多的CPU支持NAND FLASH作为系统引导存储芯片。但是,NAND FLASH作为系统引导存储芯片,在启动过程中存在以下几个问题: 
(1)坏块问题:由于NAND FLASH的工艺特点,坏块问题不可避免。 对NAND FLASH的擦除操作是将存储单元全部恢复成逻辑“1”电平,当NAND FLASH的数据块中有不能被恢复的页时,这个块就是坏块。坏块是不能再被使用的,通过自身的oob(out of band)区域进行标识。 
(2)位翻转:数据在保持和读时,由于存储单元的电荷释放过程,会出现位翻转的问题,导致数据的异常。解决位翻转问题的方法是在每一页的oob区域记录该页数据的ECC,用于读取时的纠正动作,保证数据的可靠性。 
(3)无法实现引导代码的备份执行:NAND FLASH不支持数据的随机访问,无法像NOR FLASH一样通过修改地址总线的连接方式达到更换启动代码位置,进行备份启动的目的。 
由于以上几个问题的存在,NAND FLASH在系统引导方面的应用存在较大的风险,位翻转和坏块问题可能导致执行代码的错误,不能像NOR FLASH一样支持随机线性访问,也就无法直接实现代码段的备份启动。 
现有技术中,可以通过如图2所示的连接方式实现从NAND FLASH启动,也可以通过如图3所示的连接方式实现从NAND FLASH启动。 
在图2所示的连接方式中,CPU和NAND FLASH的各个管脚直接相连,CPU直接由NAND FLASH进行启动,由于NAND FLASH接口的限制,无法直接通过地址线读取特定地址的数据,无法通过更换启动代码位置实现对代码的备份启动;该连接方式显然也无法解决NAND FLASH的位翻转问题,无法保证启动代码的可靠性,无法保证系统启动的可靠性,因此,该连接方式也不适用在大批量生产的系统上。 
在图3所示的连接方式中,使用一片小容量NOR FLASH存放初始启动代码,完成CPU NAND FLASH控制器的初始化并读取NAND FLASH中的更大段的启动代码,NOR FLASH中的读取NAND FLASH的代码需要带有坏块检测和ECC算法代码。然而,该实现方式需要使用NOR FLASH芯片,并实现坏块检测和ECC功能,因此,系统设计比较复杂。 
发明内容
有鉴于此,本发明的目的在于提供一种基于NAND FLASH的系统引导装置,该装置能够实现引导程序的备份启动,且系统设计简单。 
为了达到上述目的,本发明提供了一种基于NAND FLASH的系统引导装置,该装置包括CPU、NAND FLASH、和逻辑芯片;其中,逻辑芯片转接CPU和NAND FLASH间的输入输出(I/O)总线;CPU的控制管脚与NANDFLASH的控制管脚直接相连,同时接入到逻辑芯片; 
所述NAND FLASH,用于预先存储主引导程序和一份或多份备引导程序; 
所述CPU,用于在需要进行系统引导时,向NAND FLASH发送读控制命令和原始地址;所述的原始地址为一个在NAND FLASH地址空间范围内的地址;在发送读控制命令和原始地址后,从NAND FLASH中读取引导程序并执行,如果执行成功,则发送定时信号到逻辑芯片,否则不发送定时信号; 
所述逻辑芯片,用于预先存储各备引导程序地址相对于原始地址的偏移量;用于等待接收CPU发来的定时信号,并判断是否在预设时间内收到CPU发来的定时信号,如果未收到,若存在未被读取过的引导程序,则发送复位信号到CPU,重启CPU再次尝试进行系统引导,并在CPU重新读取引导程序时,根据预先存储的备引导程序相对于原始地址的偏移量,对CPU向NAND FLASH发送的原始地址进行偏移运算得到一个未被读取过的备引导程序地址,并将所述未被读取过的备引导程序地址发送到NAND FLASH以使CPU读取该未被读取过的备引导程序;若不存在未被读取过的引导程序,则本次系统引导失败。 
本发明还提供了基于NAND FLASH的系统引导方法,应用于上述装置该方法包括: 
A、预先在NAND FLASH中存储主引导程序和一份或多份备引导程序, 预先在逻辑芯片中存储各备引导程序地址相对于原始地址的偏移量; 
B、需要进行系统引导时,CPU向NAND FLASH发送读控制命令和原始地址;并在发送读控制命令和原始地址后,从NAND FLASH中读取引导程序并执行,如果执行成功,则发送定时信号到逻辑芯片,否则不发送定时信号; 
C、逻辑芯片等待接收CPU发来的定时信号,并判断是否在预设时间内收到CPU发来的定时信号,如果未收到,若存在未被读取过的引导程序,则发送复位信号到CPU,重启CPU再次尝试进行系统引导,并在CPU重新读取引导程序时,根据预先存储的备引导程序相对于原始地址的偏移量,对CPU向NAND FLASH发送的原始地址进行偏移运算得到一个未被读取过的备引导程序地址,并将所述未被读取过的备引导程序地址发送到NANDFLASH,以使CPU读取该未被读取过的备引导程序;若不存在未被读取过的引导程序,则本次系统引导失败。 
由上面的技术方案可知,本发明通过利用逻辑芯片,在进行系统引导的过程中,对CPU发送到NAND FLASH的原始地址进行偏移运算,得到偏移地址,CPU读取并执行NAND FLASH中从该偏移地址开始的引导程序,进行系统引导。本发明通过更换引导程序的地址来更换引导程序,能够实现引导程序的备份启动,且简化了系统设计。 
附图说明
图1是NAND FLASH的接口示意图; 
图2是现有技术一种实现从NAND FLASH启动进行系统引导的装置的结构示意图; 
图3是现有技术另一种实现从NAND FLASH启动进行系统引导的装置的结构示意图; 
图4是本发明实施例基于NAND FLASH的系统引导装置的结构示意图; 
图5是图4所示装置中CPLD的一种内部结构示意图; 
图6是图4所示装置中NAND FLASH中一种引导程序存放方式示意图; 
图7是本发明实施例基于NAND FLASH的系统引导方法流程图。 
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明进行详细说明。 
本发明通过利用NAND FLASH的高存储密度,在给定的模具尺寸内提供更高容量的特性,在NAND FLASH中存放多份备引导程序,并记录每个备引导程序相对于原始地址的偏移量;在系统引导需要时,通过逻辑芯片对CPU发送到NAND FLASH的原始地址进行偏移运算,进而更改将要读取的引导程序地址,从而达到读取备引导程序启动的目的。 
这里的备引导程序,也即主引导程序的备份引导程序,以下统称为备引导程序。 
下面以使用复杂可编程逻辑器件(CPLD)为例对本发明进行详细说明,本领域技术人员能够明了,这里的逻辑芯片并不限于CPLD,还可以是其它逻辑芯片,例如FPGA。 
参见图4,图4是本发明实施例基于NAND FLASH的系统引导装置结构图;其中,CPLD分别与CPU NAND FLASH控制器的I/O管脚及NANDFLASH的I/O管脚相连,用于转接CPU和NAND FLASH之间的I/O总线;CPU的控制管脚与NAND FLASH的控制管脚直接相连,同时接入到CPLD。 
图4所示装置中,NAND FLASH,用于预先存储主引导程序和一份或多份备引导程序; 
CPU,用于在需要进行系统引导时,向NAND FLASH发送读控制命令和原始地址;在发送读控制信号和原始地址后,从NAND FLASH中读取引导程序并执行,如果执行成功,则发送定时信号到CPLD,否则不发送定时信号;所述的原始地址为一个在NAND FLASH地址空间范围内的地址; 
CPLD,用于预先存储各备引导程序地址相对于原始地址的偏移量;用 于等待接收CPU发来的定时信号,并判断是否在预设时间内收到CPU发来的定时信号,如果未收到,若存在未被读取过的引导程序,则发送复位信号到CPU,重启CPU再次尝试进行系统引导,在CPU重新读取引导程序时,根据预先存储的备引导程序相对于原始地址的偏移量,对CPU向NANDFLASH发送的原始地址进行偏移运算得到一个未被读取过的备引导程序地址,并将所述未被读取过的备引导程序地址发送到NAND FLASH以使CPU读取该未被读取过的备引导程序;若不存在未被读取过的引导程序,则本次系统引导失败。 
参见图5,图5是图4所示装置中CPLD的一种内部结构示意图,该CPLD包括:加法单元、地址偏移单元、计时单元、复位单元;其中, 
加法单元,用于预先存储各备引导程序地址相对于原始地址的偏移量; 
地址偏移单元,用于在CPU重新读取引导程序时,根据加法单元中存储的备引导程序相对于原始地址的偏移量,对CPU向NAND FLASH发送的原始地址进行偏移运算得到一个未被读取过的备引导程序地址,并将所述未被读取过的备引导程序地址发送到NAND FLASH以使CPU读取该未被读取过的备引导程序; 
计时单元,用于等待接收CPU发来的定时信号,并判断是否在预设时间内接收到CPU发来的定时信号,如果是,则本次系统引导成功,否则,向复位单元发送超时信号; 
复位单元,用于接收到计时单元发来的超时信号后,判断是否还有未被读取过的引导程序,如果是,则向CPU发送复位信号,重启CPU再次尝试进行系统引导,否则,本次系统引导失败。 
另外,该CPLD还包括命令解析单元,用于检测CPU接入到CPLD的控制管脚的状态,并根据所述控制管脚的状态和CPU向NAND FLASH发送的读控制命令判断当前是否为地址周期,如果是,则向地址偏移单元发送地址周期指示; 
所述的地址偏移单元,在对CPU向NAND FLASH发送的原始地址进行 地址偏移运算之前,进一步用于:判断是否接收到的命令解析单元发来的地址周期指示,如果是,则对CPU向NAND FLASH发送的原始地址进行地址偏移运算,否则,将转接的CPU和NAND FLASH间的I/O总线设置为直通模式;所述的直通模式为不对CPU和NAND FLASH间的数据传输进行干预的状态; 
所述的CPU在CPU和NAND FLASH间的I/O总线为直通模式时从NAND FLASH中读取引导程序代码。 
这里,由于NAND FLASH只有I/O总线,在需要读取NAND FLASH中的数据时,需要先发送读控制命令和读取地址到NAND FLASH,然后从NAND FLASH读取所述读取地址处的数据,其中,发送读取地址是在地址周期发送到NAND FLASH的,从NAND FLASH中读取数据则是在数据周期进行,此属于现有技术,不再赘述。 
本发明中,CPU也需要按照上述过程读取引导程序,因此,命令解析单元需要根据控制管脚的状态和CPU向NAND FLASH发送的读控制命令判断当前是否为地址周期,这里,判断当前是否是地址周期的方法与现有技术相同。如果当前为地址周期,则向地址偏移单元发送地址周期指示,地址偏移单元需要根据命令解析单元发来的地址周期指示,在地址周期且需要将原始地址进行地址偏移运算时做地址偏移运算,在非地址周期,CPLD不需要对CPU和NAND FLASH之间的传输数据或命令做任何修改,因此将其转接的CPU和NAND FLASH之间的I/O总线设置为直通模式。直通模式是指CPLD对其转接的CPU和NAND FLASH间的I/O总线上传输的数据不做任何改动或干扰时该I/O总线的状态。 
这里,由于CPU从NAND FLASH读取引导程序之前,已经由CPLD根据是否首次进行系统引导,对CPU向NAND FLASH发送的原始地址进行了相应处理,并将处理后得到引导程序地址发送到NAND FLASH,因此CPU在CPLD转接的I/O总线被设置为直通模式后,可以直接读取NAND FLASH中的该引导程序地址处的引导程序。 
另外,计时单元还具有计时功能,每次进行系统引导时,CPLD在等待接收CPU发来的定时信号之前,需要启动计时功能;在接收到CPU发来的定时信号之后,确定本次系统引导成功,关闭计时功能。可以在系统引导过程中的任何时刻起开启计时功能,只要所述的预设时间大于从计时时刻开始到CPU执行引导程序完成所需要的时间即可。例如,可以在接收到CPU发来的主引导程序地址后开始计时,也可以从CPU开始读取并执行引导程序时开始计时。 
参见图6,图6是图4所示装置中NAND FLASH中一种引导程序存放方式示意图。在NAND FLASH中存储的多份引导程序按照如下方式存放:预先根据NAND FLASH的数据块大小,计算每份引导程序占用的数据块数,将每份引导程序分别从引导程序占用的NAND FLASH数据块数的整数倍位置处的数据块的起始位置开始存放。例如,假设NAND FLASH的数据块大小为128kbytes,引导程序大小为550kbytes,共需要占用NAND FLASH的5个数据块,如果将引导程序1作为主引导程序从NAND FLASH的第1个数据块的开始位置存放,并占用NAND FLASH的第0到4共5个数据块;引导程序2作为第一个备引导程序从第5个数据块的开始位置存放,并占用从第5到9共5个数据块块开始的5个块;引导程序3作为第二个备引导程序从第10个数据块的开始位置存放,并占用从第10到14共5个数据块;依次类推。在实际应用中,也可以将所述主引导程序和备引导程序依次存放在NAND FLASH中,例如,引导程序2从引导程序1的结尾处开始存放,引导程序3从引导程序2的结尾处开始存放,依次类推。也可以将所述主引导程序和备引导程序乱序存放。 
本发明中,由于CPU是在复位重启后进行系统引导,每次重试进行系统引导时发送的地址均为原始地址。为了实现能够从备引导程序启动,加法单元需要记录系统引导重试次数,以便在本次读取的引导程序执行失败时,获取下一个未被读取过的引导程序地址。 
为此,加法单元进一步用于预先设置并初始化系统引导重试次数为0; 进一步用于:在接收到CPU发来的定时信号后,将系统引导重试次数清零;用于等待接收复位单元发来的重试通知,并在接收到复位单元发来的重试通知后,将系统引导重试次数加1; 
复位单元进一步用于:预先存储备引导程序份数;在接收到计时单元发来的超时信号后,判断当前系统引导重试次数是否小于预先存储的备引导程序份数,如果是,则确定存在未被读取过的备引导程序,否则,不存在未被读取过的备引导程序;在向CPU发送复位信号时,进一步用于:向加法单元发送重试通知; 
地址偏移单元对CPU发往NAND FLASH的原始地址进行偏移运算得到一个未被读取过的备引导程序地址时,具体为:如果当前系统引导重试次数为n,则将加法单元中记录的第n个备引导程序地址相对于原始地址的偏移量与原始地址相加得到的值作为一个未被读取过的备引导程序地址。这里n为大于0的自然数。 
另外,为了防止无限制的重试进行系统引导,所述的复位单元进一步用于:预先存储备引导程序份数;在接收到计时单元发来的超时信号后,将系统引导重试次数加1之前,进一步用于:判断当前系统引导重试次数是否小于预先存储的备引导程序份数,如果是,则确定存在未被读取过的备引导程序,否则,不存在未被读取过的备引导程序。 
这里的备引导程序份数为NAND FLASH中存储的备引导程序实际份数。 
这里,CPLD可以根据所述系统引导重试次数确定CPU是首次读取引导程序或重新读取引导程序,如果系统引导重试次数为0,则确定CPU是首次读取引导程序,如果系统引导重试次数不为0,则确定CPU是重新读取引导次数,如果是重新读取引导程序,则需要对CPU发往NAND FLASH的地址进行地址偏移运算,这在前面已经详细介绍过。 
另外,为了进一步验证引导程序的正确性,在引导程序的固定位置存放有该段引导程序的CRC记录; 
CPU读取并执行NAND FLASH中的引导程序完成后,向计时单元发送 定时信号之前,进一步用于:对读取的引导程序进行CRC运算,并将运算结果与引导程序中的CRC记录相比较,如果相同,则向计时单元发送定时信号,否则,不发送定时信号。 
图4所示本发明实施例中,所述的原始地址可以是主引导程序地址,也可以是非引导程序地址;如果是主引导程序地址,则在首次进行系统引导时,不需要CPLD对该原始地址进行地址偏移运算;如果上述的原始地址不是主引导程序地址,则在首次进行系统引导时,CPLD还需要进一步对该原始地址进行地址偏移运算得到主引导程序地址。 
因此,所述的原始地址为非引导程序地址时,所述的加法单元进一步用于:预先存储主引导程序地址相对于原始地址的偏移量;所述的地址偏移单元进一步用于:在首次进行系统引导时,将加法单元中预先存储的主引导程序地址相对于原始地址的偏移量与所述原始地址相加得到的和作为主引导程序地址,并将所述主引导程序地址发送到NAND FLASH。 
以上对本发明基于NAND FLASH的系统引导装置进行了详细说明,本发明还提供了一种基于NAND FLASH的系统引导方法。 
参见图7,图7是本发明实施例在图4所述装置上实现的基于NANDFLASH的系统引导方法流程图,该方法包括以下步骤: 
步骤701、预先在NAND FLASH中存储主引导程序和一份或多份备引导程序,预先在CPLD中存储各备引导程序地址相对于原始地址间的偏移量; 
步骤702、需要进行系统引导时,CPU向NAND FLASH发送读控制命令和原始地址,并在发送读控制命令和所述原始地址后,从NAND FLASH中读取引导程序并执行,如果执行成功,则发送定时信号到CPLD,否则不发送定时信号; 
步骤703、CPLD等待接收CPU发来的定时信号,并判断是否在预设时间内收到CPU发来的定时信号,如果未收到,若存在未被读取过的引导程序,则发送复位信号到CPU,重启CPU再次尝试进行系统引导,并在CPU重新读取引导程序时,根据预先存储的备引导程序相对于原始地址的偏移量,对 CPU向NAND FLASH发送的原始地址进行偏移运算得到一个未被读取过的备引导程序地址,并将所述未被读取过的备引导程序地址发送到NANDFLASH,以使CPU读取该未被读取过的备引导程序;若不存在未被读取过的引导程序,则本次系统引导失败。 
这里的原始地址为一个在NAND FLASH地址空间范围内的地址。 
图7所示实施例中,所述CPLD还持续监控CPU接入到该CPLD的控制管脚的状态; 
所述CPLD对CPU向NAND FLASH发送的原始地址进行地址偏移运算之前,进一步包括:根据监控到的控制管脚的状态和CPU向NAND FLASH发送的读控制命令判断当前是否为地址周期,如果是,则对CPU向NANDFLASH发送的原始地址进行地址偏移运算,否则,将CPLD转接的CPU和NAND FLASH间的I/O总线设置为直通模式;所述的直通模式为CPLD对其转接的CPU和NAND FLASH间的I/O总线上传输的数据信息不进行干预时该I/O总线的状态; 
CPU在和NAND FLASH间的I/O总线为直通模式时从NAND FLASH中读取引导程序代码。 
另外,CPLD具有计时功能,每次进行系统引导时,CPLD在等待接收CPU发来的定时信号之前,需要启动计时功能;在接收到CPU发来的定时信号之后,确定本次系统引导成功,关闭计时功能。可以在系统引导过程中的任何时刻起开启计时功能,只要所述的预设时间大于从计时时刻开始到CPU执行引导程序完成所需要的时间即可。例如,可以在接收到CPU发来的主引导程序地址后开始计时,也可以从CPU开始读取并执行引导程序时开始计时。 
图7所示本发明实施例中,预先在CPLD中设置并初始化系统引导重试次数为0;预先在CPLD中存储备引导程序份数; 
步骤703所述CPLD在判断确定在预设时间内接收到CPU发来的定时信号之后,进一步包括:将系统引导重试次数清零;在判断确定未在预设时 间内接收到CPU发来的定时信号之后进一步包括:将系统引导重试次数加1,并在将系统引导重试次数加1之前,判断当前系统引导重试次数是否小于备引导程序份数,如果是,则存在未被读取过的备引导程序,否则,不存在未被读取过的备引导程序; 
步骤703所述CPLD根据预先存储的备引导程序地址相对于原始地址间的偏移量,对CPU向NAND FLASH发送的原始地址进行偏移运算得到一个未被读取过的备引导程序地址的方法为:如果系统引导重试次数为n,则将原始地址和第n个备引导程序地址相对于原始地址的偏移量相加,将相加得到的和作为一个未被读取过的备引导程序地址。 
这里,CPLD根据预先存储的备引导程序地址相对于原始地址间的偏移量,对CPU向NAND FLASH发送的原始地址进行偏移运算之前,可以根据当前系统引重试导次数确定CPU是首次读取引导程序还是重新读取引导程序,如果当前系统引导重试次数为0,则可以确定CPU是首次读取引导程序,如果当前系统引导重试次数不为0,在可以确定CPU是重新读取引导程序。因此,根据系统引导重试次数,就可以确定是否需要对原始地址作地址偏移运算。 
另外,为了进一步验证读取的引导程序,NAND FLASH中存储的引导程序的固定位置处存放了该段引导程序的CRC记录;步骤702所述CPU执行引导程序完成后,向CPLD发送定时信号前,进一步包括:对接收到的引导程序进行CRC运算,并将运算结果与引导程序中固定位置处存放的CRC记录进行比较,如果相同,则向发送CPLD发送定时信号,否则,不发送定时信号。 
图7所示本发明实施例中,所述原始地址可以是主引导程序地址,也可以是非引导程序地址;如果是主引导程序地址,则在首次读取引导程序时,不需要CPLD对该原始地址进行地址偏移运算;如果不是主引导程序地址,则在首次读取引导程序时,还需要对该原始地址进行地址偏移运算。 
因此,所述的原始地址为非引导程序地址时,所述的CPLD还预先存储 主引导程序地址相对于原始地址的偏移量;在CPU首次读取引导程序时,将主引导程序地址相对于原始地址的偏移量与所述原始地址相加得到的和作为主引导程序地址,并将所述主引导程序地址发送到NAND FLASH。 
由上述本发明的技术方案可知,本发明针对目前从NAND FLASH进行系统引导时存在的不可靠和不实用问题,提出一种基于NAND FLASH的系统引导方法和装置。利用逻辑芯片对系统引导进行监控和更改引导程序地址操作,且更换引导程序起始的过程对CPU和NAND FLASH透明,因此,适用于所有使用NAND FLASH的系统;利用NAND FLASH存储密度高、存储容量大的特点进行多备份启动操作,在保证系统可靠启动的前提下,省略了坏块检测和ECC校验的逻辑实现,规避了NAND FLASH芯片的固有缺陷,提高了NAND FLASH引导系统的可靠性;另外本发明还简化了接口逻辑的实现,提高了可实现性。 
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。 

Claims (15)

1.一种基于与非闪存NAND FLASH的系统引导装置,包括CPU和NANDFLASH,其特征在于,该装置还包括:逻辑芯片;其中,逻辑芯片转接CPU和NAND FLASH间的输入输出(I/O)总线;CPU的控制管脚与NAND FLASH的控制管脚直接相连,同时接入到逻辑芯片;
所述NAND FLASH,用于预先存储主引导程序和一份或多份备引导程序;
所述CPU,用于在需要进行系统引导时,向NAND FLASH发送读控制命令和原始地址;所述的原始地址为一个在NAND FLASH地址空间范围内的地址;在发送读控制命令和原始地址后,从NAND FLASH中读取引导程序并执行,如果执行成功,则发送定时信号到逻辑芯片,否则不发送定时信号;
所述逻辑芯片,用于预先存储各备引导程序地址相对于原始地址的偏移量;用于等待接收CPU发来的定时信号,并判断是否在预设时间内收到CPU发来的定时信号,如果未收到,若存在未被读取过的引导程序,则发送复位信号到CPU,重启CPU再次尝试进行系统引导,并在CPU重新读取引导程序时,根据预先存储的备引导程序相对于原始地址的偏移量,对CPU向NAND FLASH发送的原始地址进行偏移运算得到一个未被读取过的备引导程序地址,并将所述未被读取过的备引导程序地址发送到NAND FLASH以使CPU读取该未被读取过的备引导程序;若不存在未被读取过的引导程序,则本次系统引导失败。
2.如权利要求1所述的装置,其特征在于,所述逻辑芯片包括:加法单元、地址偏移单元、计时单元、复位单元;
所述加法单元,用于预先存储各备引导程序地址相对于原始地址的偏移量;
所述地址偏移单元,用于在CPU重新读取引导程序时,根据加法单元中存储的备引导程序相对于原始地址的偏移量,对CPU向NAND FLASH发送的原始地址进行偏移运算得到一个未被读取过的备引导程序地址,并将所述未被读取过的备引导程序地址发送到NAND FLASH以使CPU读取该未被读取过的备引导程序;
所述计时单元,用于等待接收CPU发来的定时信号,并判断是否在预设时间内接收到CPU发来的定时信号,如果未收到,向复位单元发送超时信号;
所述复位单元,用于接收到计时单元发来的超时信号后,判断是否还有未被读取过的引导程序,如果是,则向CPU发送复位信号,重启CPU再次尝试进行系统引导,否则,本次系统引导失败。
3.如权利要求2所述的装置,其特征在于,所述逻辑芯片还包括命令解析单元;
所述命令解析单元,用于监控CPU接入到所述逻辑芯片的控制管脚的状态,并根据监控到的控制管脚的状态和CPU向NAND FLASH发送的读控制命令判断当前是否为地址周期,如果是,则向地址偏移单元发送地址周期指示;
所述地址偏移单元,在对CPU向NAND FLASH发送的原始地址进行地址偏移运算之前,进一步用于:判断是否接收到命令解析单元发来的地址周期指示,如果是,则对CPU向NAND FLASH发送的原始地址进行地址偏移运算,否则,将转接的CPU和NAND FLASH间的I/O总线设置为直通模式;所述的直通模式为逻辑芯片对其转接的CPU和NAND FLASH间的I/O总线上传输的数据信息不进行干预时该I/O总线的状态;
所述CPU在其和NAND FLASH间的I/O总线为直通模式时从NANDFLASH中读取引导程序代码。
4.如权利要求3所述的装置,其特征在于,所述计时单元,在等待接收CPU发来的定时信号之前,进一步用于:启动计时功能;在接收到CPU发来的定时信号之后,进一步用于,关闭计时功能。
5.如权利要求4所述的装置,其特征在于,所述加法单元进一步用于预先设置并初始化系统引导重试次数为0;用于等待接收CPU发来的定时信号,并在接收到CPU发来的定时信号后,将系统引导重试次数清零;用于等待接收复位单元发来的重试通知,并在接收到复位单元发来的重试通知后,将系统引导重试次数加1;
所述复位单元进一步用于:预先存储备引导程序份数,所述的备引导程序份数为NAND FLASH中存储的备引导程序实际份数;在接收到计时单元发来的超时信号后,判断当前系统引导重试次数是否小于预先存储的备引导程序份数,如果是,则确定存在未被读取过的备引导程序,否则,不存在未被读取过的备引导程序;在向CPU发送复位信号时,进一步用于:向加法单元发送重试通知;
所述地址偏移单元在根据加法单元中存储的备引导程序地址相对于原始地址的偏移量,对CPU向NAND FLASH发送的原始地址进行偏移运算得到一个未被读取过的备引导程序地址时,具体为:如果系统引导重试次数为n,则将原始地址和第n个备引导程序地址相对于原始地址的偏移量相加,并将相加得到的和作为一个未被读取过的备引导程序地址。
6.如权利要求5所述的装置,其特征在于,所述地址偏移单元在加法单元中的系统引导重试次数不为0时,确定CPU重新读取引导程序。
7.如权利要求6所述的装置,其特征在于,预先在引导程序的固定位置存放该段引导程序的CRC记录;
CPU读取并执行NAND FLASH中的引导程序完成后,向计时单元发送定时信号之前,进一步用于:对读取的引导程序进行CRC运算,并将运算结果与引导程序中的CRC记录相比较,如果相同,则向计时单元发送定时信号,否则,不发送定时信号。
8.如权利要求2到7任一权项所述的装置,其特征在于,
所述原始地址为存储在NAND FLASH中的主引导程序地址;
或者,
所述原始地址为一个在NAND FLASH地址空间范围内的任一地址;
所述加法单元进一步用于:预先存储主引导程序地址相对于原始地址的偏移量;
所述地址偏移单元进一步用于:在CPU首次读取引导程序时,将主引导程序地址相对于原始地址的偏移量与原始地址相加得到的和作为主引导程序地址,并将所述主引导程序地址发送到NAND FLASH。
9.一种基于NAND FLASH的系统引导方法,其特征在于,逻辑芯片转接CPU中和NAND FLASH间的I/O总线;CPU的控制管脚和NAND FLASH的控制管脚直接相连,同时接入到逻辑芯片;该方法包括:
A、预先在NAND FLASH中存储主引导程序和一份或多份备引导程序,预先在逻辑芯片中存储各备引导程序地址相对于原始地址的偏移量;
B、需要进行系统引导时,CPU向NAND FLASH发送读控制命令和原始地址;并在发送读控制命令和原始地址后,从NAND FLASH中读取引导程序并执行,如果执行成功,则发送定时信号到逻辑芯片,否则不发送定时信号;
C、逻辑芯片等待接收CPU发来的定时信号,并判断是否在预设时间内收到CPU发来的定时信号,如果未收到,若存在未被读取过的引导程序,则发送复位信号到CPU,重启CPU再次尝试进行系统引导,并在CPU重新读取引导程序时,根据预先存储的备引导程序相对于原始地址的偏移量,对CPU向NAND FLASH发送的原始地址进行偏移运算得到一个未被读取过的备引导程序地址,并将所述未被读取过的备引导程序地址发送到NANDFLASH,以使CPU读取该未被读取过的备引导程序;若不存在未被读取过的引导程序,则本次系统引导失败。
10.如权利要求9所述的方法,其特征在于,逻辑芯片持续监控CPU接入到所述逻辑芯片的控制管脚的状态;
步骤C所述对CPU向NAND FLASH发送的原始地址进行地址偏移运算之前,进一步包括:根据监控到的控制管脚的状态和CPU向NAND FLASH发送的读控制命令判断当前是否为地址周期,如果是,则对CPU向NANDFLASH发送的原始地址进行地址偏移运算,否则,将转接的CPU和NANDFLASH间的I/O总线设置为直通模式;所述的直通模式为逻辑芯片对其转接的CPU和NAND FLASH间的I/O总线上传输的数据信息不进行干预时该I/O总线的状态;
步骤B所述CPU在其和NAND FLASH间的I/O总线为直通模式时从NAND FLASH中读取引导程序代码。
11.如权利要求10所述的方法,其特征在于,步骤C所述逻辑芯片在等待接收CPU发来的定时信号之前,进一步包括:启动计时功能;在接收到CPU发来的定时信号之后,进一步包括:关闭计时功能。
12.如权利要求11所述的方法,其特征在于,预先设置并初始化系统引导重试次数为0;预先存储备引导程序份数,所述的备引导程序份数为NAND FLASH中存储的备引导程序实际份数;
步骤C所述逻辑芯片在判断确定在预设时间内接收到CPU发来的定时信号之后,进一步包括:将系统引导重试次数清零;在判断确定未在预设时间内接收到CPU发来的定时信号之后进一步包括:将系统引导重试次数加1,并在将系统引导重试次数加1之前,判断当前系统引导重试次数是否小于备引导程序份数,如果是,则存在未被读取过的备引导程序,否则,不存在未被读取过的备引导程序;
步骤C所述根据预先存储的备引导程序地址相对于原始地址间的偏移量,对CPU向NAND FLASH发送的原始地址进行偏移运算得到一个未被读取过的备引导程序地址的方法为:如果系统引导重试次数为n,则将原始地址和第n个备引导程序地址相对于原始地址的偏移量相加,将相加得到的和作为一个未被读取过的备引导程序地址。
13.如权利要求12所述的方法,其特征在于,所述逻辑芯片在当前系统引导重试次数不为0时,确定CPU重新读取引导程序。
14.如权利要求13所述的方法,其特征在于,预先在引导程序的固定位置存放该段引导程序的CRC记录;
步骤B所述CPU执行引导程序完成后,向逻辑芯片发送定时信号之前,进一步包括:对该段引导程序进行CRC运算,并将运算结果与该段引导程序中的CRC记录相比较,如果相同,则向逻辑芯片发送定时信号,否则,不发送定时信号。
15.如权利要求9到13任一权项所述的方法,其特征在于,所述的原始地址为存储在NAND FLASH中的主引导程序地址;
或者,
所述的原始地址为一个在NAND FLASH地址空间范围内的任一地址;
所述的逻辑芯片还预先存储主引导程序地址相对于原始地址的偏移量;在CPU首次读取引导程序时,进一步将主引导程序地址相对于原始地址的偏移量与原始地址相加得到的和作为主引导程序地址,并将所述主引导程序地址发送到NAND FLASH。
CN 201110111751 2011-04-29 2011-04-29 一种基于nand flash的系统引导方法和装置 Active CN102135927B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110111751 CN102135927B (zh) 2011-04-29 2011-04-29 一种基于nand flash的系统引导方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110111751 CN102135927B (zh) 2011-04-29 2011-04-29 一种基于nand flash的系统引导方法和装置

Publications (2)

Publication Number Publication Date
CN102135927A CN102135927A (zh) 2011-07-27
CN102135927B true CN102135927B (zh) 2013-02-13

Family

ID=44295715

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110111751 Active CN102135927B (zh) 2011-04-29 2011-04-29 一种基于nand flash的系统引导方法和装置

Country Status (1)

Country Link
CN (1) CN102135927B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102867154B (zh) * 2012-09-12 2015-08-12 迈普通信技术股份有限公司 一种源代码保护方法和装置
CN103279399A (zh) * 2013-06-27 2013-09-04 北京汉邦高科数字技术股份有限公司 一种嵌入式CPU在NAND Flash上启动的方法
CN105320529A (zh) * 2014-07-08 2016-02-10 中兴通讯股份有限公司 基于NAND-Flash双启动引导的启动方法及装置
CN105700901B (zh) * 2014-11-28 2020-05-08 华为技术有限公司 一种启动方法、装置和计算机系统
CN104461659B (zh) * 2014-12-30 2017-11-03 浙江宇视科技有限公司 一种高可靠性的计算机启动方法
CN104765695A (zh) * 2015-04-03 2015-07-08 上海交通大学 一种nand flash坏块管理系统及方法
WO2017143513A1 (zh) * 2016-02-23 2017-08-31 华为技术有限公司 一种启动Boot的方法、CPU及单板
CN105786527B (zh) * 2016-03-28 2017-03-08 中车青岛四方车辆研究所有限公司 TigerSharc系列DSP启动管理芯片及方法
WO2017088531A1 (zh) 2016-03-28 2017-06-01 中车青岛四方车辆研究所有限公司 TigerSharc系列DSP启动管理芯片及方法
CN106325940A (zh) * 2016-08-26 2017-01-11 天津市英贝特航天科技有限公司 一种flash存储器分段智能启动模块
CN109582370B (zh) * 2018-11-01 2022-07-19 浙江大华技术股份有限公司 一种nor flash嵌入式设备的启动方法及装置
CN109976815B (zh) * 2019-03-20 2022-03-29 深圳忆联信息系统有限公司 一种加速Nandboot的方法及其系统
CN110007971A (zh) * 2019-03-25 2019-07-12 联想(北京)有限公司 一种信息处理方法及装置、设备、存储介质
CN110297604A (zh) * 2019-06-26 2019-10-01 深圳忆联信息系统有限公司 一种有效提高nand启动使用寿命的方法及其系统
CN111742297A (zh) * 2019-07-23 2020-10-02 深圳市大疆创新科技有限公司 固件启动方法、设备及计算机可读存储介质
CN111338702B (zh) * 2020-02-27 2022-04-26 珠海亿智电子科技有限公司 一种基于片外nor-flash的SOC系统引导方法
CN112052112A (zh) * 2020-07-14 2020-12-08 许继集团有限公司 基于NOR Flash存储的位翻转错误检测方法、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1490817A (zh) * 2002-10-14 2004-04-21 华为技术有限公司 一种引导程序存储装置及其保障在线升级的方法
CN1914598A (zh) * 2004-01-28 2007-02-14 索尼株式会社 半导体装置和用于启动该半导体装置的处理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007299249A (ja) * 2006-05-01 2007-11-15 Hagiwara Sys-Com:Kk Nand型フラッシュメモリデバイス及びこれを利用したコンピューティングシステムの起動方法
KR101211503B1 (ko) * 2007-10-02 2012-12-12 삼성전자주식회사 부팅 시스템, 그 시스템을 구비한 화상형성장치 및 그제어방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1490817A (zh) * 2002-10-14 2004-04-21 华为技术有限公司 一种引导程序存储装置及其保障在线升级的方法
CN1914598A (zh) * 2004-01-28 2007-02-14 索尼株式会社 半导体装置和用于启动该半导体装置的处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JP特开2007-299249A 2007.11.15
吴健,张华,胡天链,王姮.基于NandFlash存储器的嵌入式系统启动引导程序设计.《西南科技大学学报》.2006,第21卷(第4期),第53-57页. *

Also Published As

Publication number Publication date
CN102135927A (zh) 2011-07-27

Similar Documents

Publication Publication Date Title
CN102135927B (zh) 一种基于nand flash的系统引导方法和装置
CN109117391B (zh) 用于存储器系统的控制器
TWI501253B (zh) 於裝置開機期間處置來自非揮發性記憶體之錯誤
US9542195B1 (en) Motherboards and methods for BIOS failover using a first BIOS chip and a second BIOS chip
JP4840859B2 (ja) 半導体装置、及び起動方法
US9471435B2 (en) Information processing device, information processing method, and computer program
CN102135891B (zh) 可实现引导启动的系统及引导启动控制装置和方法
US10860247B2 (en) Data writing method and storage controller
CN102298545B (zh) 一种系统启动引导处理方法及装置
US20130013853A1 (en) Command executing method, memory controller and memory storage apparatus
EP2048579A2 (en) System and method for managing memory errors in an information handling system
CN103930878A (zh) 用于存储器验证的方法、装置及系统
US9817600B2 (en) Configuration information backup in memory systems
US11379330B2 (en) Information handling systems and related methods for testing memory during boot and during operating system (OS) runtime
KR20160074025A (ko) 데이터 저장 장치의 동작 방법
US8065563B2 (en) System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting
CN110058973B (zh) 数据储存装置的测试系统与数据储存装置的测试方法
CN113094107B (zh) 数据保护方法、装置、设备及计算机存储介质
US20240176887A1 (en) Method for Running Startup Program of Electronic Device, and Electronic Device
US11182231B2 (en) Host system and computing system including the host system
CN110764947B (zh) 数据写入方法以及存储控制器
CN118409921B (zh) 一种存储测试单元及其测试方法、电子设备
CN118626123A (zh) 一种基板管理控制器固件升级方法和装置
CN115794241A (zh) 计算机系统的启动方法和计算机系统
CN114420192A (zh) DRAMLess SSD NAND编程出错的优化方法、装置及介质

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
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: NEW H3C TECHNOLOGIES Co.,Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: HANGZHOU H3C TECHNOLOGIES Co.,Ltd.

CP03 Change of name, title or address
TR01 Transfer of patent right

Effective date of registration: 20230620

Address after: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province

Patentee after: H3C INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 310052 Changhe Road, Binjiang District, Hangzhou, Zhejiang Province, No. 466

Patentee before: NEW H3C TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right