CN111061514A - Flash器件、集成电路及Flash器件启动方法 - Google Patents
Flash器件、集成电路及Flash器件启动方法 Download PDFInfo
- Publication number
- CN111061514A CN111061514A CN201911045569.9A CN201911045569A CN111061514A CN 111061514 A CN111061514 A CN 111061514A CN 201911045569 A CN201911045569 A CN 201911045569A CN 111061514 A CN111061514 A CN 111061514A
- Authority
- CN
- China
- Prior art keywords
- data
- starting
- logic
- area
- file allocation
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提出一种Flash器件,包括主规划区域以及备份规划区域,所述主规划区域用以存储启动程序;所述备份规划区域用以备份启动程序。所述预留区为空白的物理存储空间,用以当数据区的物理块损坏后,进行恢复时,利用预留区的物理块保存数据区的信息。本申请中的Flash器件设置有上述二个特定功能的区域,从而可以大幅度提高了启动Flash器件的可靠性,而且还能大大降低了Flash器件的开发难度,大大增加了维护的灵活性,大大降低了后期维护成本。
Description
技术领域
本发明涉及电子器件领域,具体而言,涉及Flash器件、集成电路及Flash器件启动方法。
背景技术
Flash因为成本低,在低端的系统上获得了非常广泛的应用。但也是因为成本低廉,Flash本身并不搭载固件,在使用Flash作为启动器件的系统中,由固化的启动引导程序(bootrom)从Flash里面加载下一级启动代码,开启系统的启动过程。bootrom本身的代码需要固化,系统定型后无法修改,且其大小受到成本的限制,因此不能过于复杂。
由于制造工艺以及频繁的使用原因,flash难免有部分存储块遭到损坏,但Flash只提供坏块标记的能力,Flash的坏块管理机制都是由主机提供的,整个机制本身逻辑复杂,二进制代码体积相当庞大。如果Flash出现坏块,导致bootrom读取的下一级代码错误,就会使得整个系统的启动失败。
因此,需要有寻找到可以增加Flash器件启动器件的解决方案,在出现坏块的时候,可以保证系统依然能够启动并且有机会在逻辑上修复损坏启动逻辑。
现有的解决方案主要为:
一:双备份方式
bootrom采用双备份的方式在Flash上放置两份二级启动代码。bootrom启动的时候,先读取第一份代码,如果完整性校验通过,那么就从第一份代码上启动。如果不通过,就读取第二份代码。只有两份代码同时错误,系统启动才会失败。
因为一般Flash的坏块是独立产生的,两份代码同时出现坏块的概率很低。但是,这个方式要求在Flash里面实现规划好二级启动代码区域(位置和大小),并且需要预先估计二级启动代码的大小。如果后续二级启动代码大小超过了预先规划的区域的大小,bootrom就无法读取了,启动会不成功。
而且,在系统开发初期,特别是在调试二级启动代码的过程中,频繁反复烧录规划好的二级启动代码区域区段,容易导致该区域内物理块快速损坏。一个规划区域损坏但是其他区域完好的系统,也会因为bootrom只会读取规划区域而无法启动。
二、增加逻辑抽象层
另外一种方案提高可靠性的方式,是加入对块的逻辑抽象层,通过逻辑抽象层使得上层逻辑看到的逻辑块和实际访问的物理块分离,当物理块出现坏块的时候,可以无缝的将原来的逻辑块映射到好的物理块上去。它可以解决第一个方案中需要预先规划启动区域的问题,使得整个的空间都能作为充分利用。
但是这个方案代码逻辑复杂、代码量大,对于像操作系统这种非固化代码逻辑比较适合,不适合bootrom这种固化的代码中。
发明内容
本发明的目的在于提供Flash器件启动方法及Flash器件,具有高可靠性、降低开发成本。
为了实现上述目的,本发明实施例采用的技术方案如下:
一种Flash器件,包括主规划区域以及备份规划区域,其中:
所述主规划区域用以存储启动程序;
所述备份规划区域用以备份启动程序。
进一步地,所述主规划区域包括数据区以及至少一个预留区,所述数据区至少为一个存储物理块,包括头标识、数据主体以及完整性校验数据,其中:
所述头标识用以获取数据主体以及完整性校验数据的信息;
所述数据主体用以存储启动逻辑的信息;
所述完整性校验数据用以对头标识和数据主体进行计算,并进行验证;
所述预留区为空白的物理存储空间,用以当数据区的物理块损坏后,进行恢复时,利用预留区的物理块保存数据区的信息。
进一步地,所述数据主体为二级跳转表,用以获取二级启动逻辑所在的物理块位置地址。
进一步地,所述数据主体包括只读数据、二级跳转表、文件分配表,其中:
所述只读数据用以提供启动使用的数据;
所述二级跳转表用以获取二级启动逻辑所在的物理块位置地址;
所述文件分配表将其位置作为参数传递给二级启动逻辑,实现引导程序的启动。
本发明还公开一种集成电路,包含上述所述的Flash器件。
本发明还公开一种Flash器件启动方法,包括步骤:
(1)获取主规划区的头标识;
(2)获取数据主体和完整性校验数据信息;
(3)进行完整性校验,若校验成功,则跳转执行,若校验失败,则执行步骤(4);
(4)跳转到备份规划区域,执行步骤(1)至(3),若在备份规划区进行校验依然失败,则将其归为错误进行处理。
进一步地,步骤(1)还包括对头标识进行初步的完整性校验。
进一步地,步骤(3)具体为:
计算头标识和数据主体的数字摘要进行校验,所述数据主体为二级跳转表;
解析出二级跳转表结构,获得二级启动逻辑的物理块位置;
跳转到二级启动逻辑执行。
进一步地,作为另一种方式,所述完整性校验包括数字签名校验,所述数据主体包括只读数据、二级跳转表、文件分配表,其步骤(3)具体为:
启动数字签名验证,对只读数据、二级跳转表、文件分配表的完整性进行验证;
使用只读数据完成启动;
解析出二级跳转表结构,获得二级启动逻辑的物理块位置;
解析出文件分配表,将文件分配表的位置作为参数传递给二级启动逻辑;
跳转到二级启动逻辑执行。
进一步地,作为另一种方式,所述完整性校验包括数字签名校验和特征值校验,所述数据主体包括只读数据、二级跳转表、文件分配表,其步骤(3)具体为:
启动特征值校验,对只读数据的特征符进行校验,若校验成功,则使用只读数据实现启动操作;
启动数字签名校验,对二级跳转表以及文件分配表的完整性进行校验,若校验成功,则:
解析出二级跳转表结构,获得二级启动逻辑的物理块位置;
解析出文件分配表,将文件分配表的位置作为参数传递给二级启动逻辑;
跳转到二级启动逻辑执行。
进一步地,作为另一种方式,所述完整性校验包括数字签名校验和特征值校验,所述数据主体包括只读数据、二级跳转表、文件分配表,其步骤(3)具体为:
使用只读数据完成启动;
启动数字签名校验,对二级跳转表以及文件分配表的完整性进行校验,若校验成功,则:
解析出二级跳转表结构,获得二级启动逻辑的物理块位置;
解析出文件分配表,将文件分配表的位置作为参数传递给二级启动逻辑;
跳转到二级启动逻辑执行。
本发明具有以下有益效果:
由于本申请中的Flash器件设置有上述二个特定功能的区域,从而可以大幅度提高了启动Flash器件的可靠性,而且还能大大降低了Flash器件的开发难度,大大增加了维护的灵活性,大大降低了后期维护成本。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明的实施例一中Flash器件中的数据存储规划示意图;
图2是本发明的NAND中的主规划区域和备份规划区的划分示意图;
图3是本发明的实施例一中数据区的划分示意图;
图4是本发明的实施例二中数据存储规划示意图;
图5是本发明的实施例二中数据区的划分示意图;
图6是本发明的实施例一中实施流程图;
图7是本发明的实施例二中时延宽松条件下的实施流程图;
图8是本发明的实施例二中时延苛刻条件下的实施流程图。
1-主规划区域、2-备份规划区域、3-主二级启动逻辑、4-备份二级启动逻辑、5-主文件分配表、6-备份文件分配表;
100-数据区、200-预留区;
101-头标识、102-数据主体、103-完整性校验数据;
1021-只读数据、1022-二级跳转表、1023-文件分配表。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本申请公开了一种Flash器件,本申请的Flash包括主规划区域以及备份规划区域,所述主规划区域用以存储启动程序;所述备份规划区域用以备份启动程序。
所述主规划区域包括数据区以及至少一个预留区,所述数据区至少为一个存储物理块,包括头标识、数据主体以及完整性校验数据,其中:
所述头标识用以获取数据主体以及完整性校验数据的信息;
所述数据主体用以存储启动逻辑的信息;
所述完整性校验数据用以对头标识和数据主体进行计算,并进行验证;
所述预留区为空白的物理存储空间,用以当数据区的物理块损坏后,进行恢复时,利用预留区的物理块保存数据区的信息。
由于本申请中的Flash器件设置有上述二个特定功能的区域,具体详细内容请参见实施例一以及实施例二,从而可以大幅度提高了启动Flash器件的可靠性,而且还能大大降低了Flash器件的开发难度,大大增加了维护的灵活性,大大降低了后期维护成本。
本申请的Flash器件不限于NAND Flash,对于其他结构的Flash也可以适用,如NORFlash器件等。
本申请开公开了一种集成电路,包含了本申请的Flash器件模块,由于Flash器件带来的高可靠性,也大大提高了集成电路带来的可靠性,本申请的集成电路包括但不限于类似如MCU、SOC或者FPGA等。
实施例一
请参阅图1和图2所示,Flash中的分配中,预先规划两个区域,分别为主规划区域1和备份规划区域2。主规划区域1和备份规划区域2的大小相同,内部的数据分布格式也相同,在Flash中体现为包括主规划区域1以及备份规划区域2、主二级启动逻辑3以及备份二级启动逻辑4,位于Flash中的固定位置(具体的位置依据项目的不同、Flash容量和型号的不同而有所区别,一般选择为没有物理坏块的连续区域),主规划区域1和备份规划区域2一般是连续的,也可以不连续,独立分布在不同位置。
数据区100包含一个或者多个物理块,保存有在启动中需要的数据信息,预留区200是空白的物理块,可以设置为多个数据区100倍数的物理块,预留区200的作用是,当数据区100中的物理块发生损坏,导致信息无法保存的时候,需要恢复的时候,利用预留区200里面的完好的空白物理块来保存信息,从而使得主规划区域1或者备份规划区域2依然有能力保存下启动所需要的完整信息。
请参阅图3,本实施例的数据区100划分成3个部分,分别为头标识101、数据主体102和完整性校验数据103。数据主体102是二级跳转表,用来给bootrom指明二级启动逻辑所在的物理块的位置,bootrom可以据此加载真正的二级启动逻辑逻辑,进而完成系统的启动。完整性校验数据103的内容是对头标识101、数据主体102的数字摘要算法的结果,具体的算法选择包含MD5、SHA1和SHA256等来实现。
请参阅图6,本实施例中,启动的过程包含下述步骤:
步骤1、bootrom读取主规划区域1中的头标识101,对存放的数据做一个初步的完整性校验(例如通过magic code的方式)。如果校验错误,转到步骤7。
步骤2、bootrom从头标识101中获取数据主体102的位置与长度,以及完整性校验数据103的位置与长度。
步骤3、bootrom读取数据主体102的内容和完整性校验数据103。
步骤4、bootrom计算头标识101和数据主体102的数字摘要,并且将结果和完整性校验数据103比较。若比较不一致,则校验失败,转到步骤7。
步骤5、bootrom从数据主体102的内容中,解析出二级跳转表结构,获得二级启动逻辑的物理块位置。
步骤6、bootrom装载二级启动逻辑,并跳转到二级启动逻辑执行,启动第一阶段完成。
bootrom是固化在芯片中的逻辑,属于第一阶段的启动逻辑,bootrom一般只使用到最基本的硬件,比如只在静态RAM里运行,只初始化芯片里最简单的功能,完成此第一阶段之后,再启动芯片的更多的功能模块(比如页表、缓存等),然后完成操作系统的装在和配置等。
步骤7、bootrom切换到备份规划区域2,回到步骤1做类似的操作。如果备份规划区域2依然错误,则启动失败。
本实施例的数据区100包含的内容很少,对于常规容量的Flash,可以放置在同一个物理块上。
本实施取得技术效果:
本实施例在现有技术方案的基础提出的技术方案,仅保存二级跳转表,而不是二级启动逻辑本身。二级跳转表本身带校验信息,可以自我验证完整性。二级跳转表的大小远远小于二级启动逻辑,一般一个存储块就可以包含下,而不像二级启动逻辑需要占用多个存储块。这个天然就增加了可靠性,因为对于占用多个存储块的情况下,任何一个块的损坏都会导致整体的错误。
二级跳转表包含跳转地址,指明二级启动逻辑所在的物理块位置。在启动的时候,bootrom首先读取规划区域中的跳转表,完成完整性校验后,从二级跳转表中读取二级启动逻辑的物理块位置,再从二级启动逻辑的物理块位置读取二级启动逻辑,最后完成启动。
在二级启动逻辑开发过程中,修改完二级启动逻辑之后,需要反复烧录的存储块,是二级启动逻辑所在的物理块,而不是位于规划区域的二级跳转表。位于规划区域的二级跳转表只需要烧录一次。只有当二级启动逻辑所在的物理块发生损坏,需要更换二级启动逻辑所在的物理块位置的时候,才需要烧录一次二级跳转表,更新其中的跳转地址。假设一个存储块损坏时,平均写入次数是N。在现有技术中,平均写入N次新的二级启动逻辑,就会有一个位于规划区域的块损坏。而本发明实施例中,平均写入N次新的二级启动逻辑后,才会引发1次对位于规划区域的块的写入操作,因此位于规划区域的块损坏的时间就被推迟到N*N次之后了。同时,因为二级跳转表中的跳转地址可以修改,二级启动逻辑事实上可以位于Flash的任意位置,从而做到只要Flash剩余容量足够,就能支持系统启动。
因此,本实施例不仅仅大幅度提高了器件引导启动的可靠性,而且也使得产品开发的过程中,大幅度降低了开发的难度以及产品后续的维护难度,而且由于产品的读写次数的减少,也提高产品的使用寿命。
实施例二
请参阅图4、图5所示,在实施例一的基础上,数据区100中的数据主体102扩展为3项内容,分别为只读数据1021、二级跳转表1022、文件分配表1023,因此整个数据区100的数据量扩大了。相应地,其在Flash的存储结构中的数据存储规划也最相应改进,增加了主二级启动逻辑3以及主文件分配表5,备份二级启动逻辑4以及备份文件分配表6,对于单个物理块为64K以上的Flash而言(目前主流的Flash都满足这个条件),这些数据依然可以放置在同一个物理块上。
只读数据1021是供bootrom使用的只读数据,可以满足对时延有要求的启动逻辑需求,从而加快执行速度。因为在某些项目上,系统启动阶段对时延有严格的要求,要求在限定的时间内完成特定的操作。针对此类要求,如果按照实施例一的方案,将该操作需要的数据放置在二级跳转表指向的位置的话,bootrom就需要二次读取Flash,读到二级启动逻辑之后才能开始特定的操作,因此无法满足时延的要求,直接放在数据区,就可以在第一次读取完成后就获得有效数据,这个是针对有具体时序要求的操作提供的方案,比如有的操作要求在上电后100ms内完成,那么就需要尽快做完,此类操作需要的数据就可以放在只读区域。
因此,基于实施例一的基础上,本实施例提出一种更优的实施例,本实施例中,将此类数据单独抽出放在主规划区域1和备份规划区域2中,第一次读取就能获得此数据,从而大大提高了速度,满足对实时要求比较高的使用场景里。
具体实施方式如下:
二级跳转表1022的作用和实施例一相同,用来给bootrom指明二级启动逻辑所在的物理块的位置,bootrom可以据此加载真正的二级启动逻辑逻辑,进而完成系统的启动。
文件分配表1023的内容是除了二级启动逻辑之外,其他的启动逻辑包含系统正常启动后的业务数据存放的规划,包含比如三级启动逻辑所在的Flash物理块起始地址和长度、业务数据所在的物理块起始地址和长度等等。系统在运行过程中,各类代码都可以从文件分配表1023中获取具体数据的位置,快速的定位并取得所需要的数据。
由于扩展了数据主体102,完整性校验数据103的计算方式也相应的有所调整,其完整性校验包括二种方式进行校验:数字签名校验和特征值校验,在对头标识101、只读数据1021、二级跳转表1022、文件分配表1023四部分的内容进行校验完毕之后,得到的结果保存在完整性校验数据103中。
本实施例中,启动的过程根据启动时延的要求是否严格,分成两种情况。
第一种情况,请参阅图7,是时延宽松的情况,即启动时延要求容易满足,将先对只读数据进行校验,完成后再进入特定处理流程。具体包含下述步骤:
步骤1、bootrom读取主规划区域1中的头标识101,对存放的数据做一个初步的完整性校验(例如通过magic code的方式)。如果校验错误,转到步骤8。
步骤2、bootrom从头标识101中获取数据主体102(即只读数据1021、二级跳转表1022、文件分配表1023)的信息,以及完整性校验数据103的位置与长度。
步骤3、bootrom读取数据主体102的内容和完整性校验数据103。
步骤4、使用数字签名对只读数据1021、二级跳转表1022以及文件分配表1023这三个信息的完整性进行校验,将结果和完整性校验数据103比较,若比较不一致,则校验失败,转到步骤8。
步骤5、bootrom从数据主体102的内容中,解析出只读数据1021,利用只读数据1021完成时延相关的特定处理。
步骤6、bootrom从数据主体102的内容中,解析出二级跳转表1022,获得二级启动逻辑的物理块位置。
步骤7、bootrom从数据主体102的内容中,解析出文件分配表1023。bootrom装载二级启动逻辑,将文件分配表1023的位置作为参数传递给二级启动逻辑,跳转到二级启动逻辑执行,启动第一阶段完成。
本实施例中的文件分配表是一个表格,描述了flash上各个分区的具体位置。一般的基于Linux的嵌入式设备,在真正加载Linux之前,会有一二三级启动逻辑,还有安全系统相关的逻辑,Linux本身也有数据分区等等。
这些内容都会在flash上存放,因此需要有一个表格告诉代码逻辑,去flash的什么地方去读取这些信息,例如:
物理块120开始,存放内容是Linux启动代码,长度80个物理块。其具体的表格形式为:120,Linux Image,80。
物理块220开始,存放内容是Linux用户数据,长度100个物理块。220,Linux Data,100。
步骤8、bootrom切换到备份规划区域2,回到步骤1做类似的操作。如果备份规划区域2依然错误,则启动失败。
第二种情况,请参阅图8,是对时延苛刻的情况,即启动时延要求不容易满足,将依赖于本身的机制保证只读数据的有效性,完成特定处理流程后,再校验剩下的内容,完成后续启动。具体包含下述步骤:
步骤1、bootrom读取主规划区域1中的头标识101,对存放的数据做一个初步的完整性校验(例如通过magic code的方式)。如果校验错误,转到步骤7。
步骤2、bootrom从头标识101中获取数据主体102(即只读数据1021、二级跳转表1022、文件分配表1023)的信息,以及完整性校验数据103(完整性校验数据也称为完整性认证数据)的位置与长度。
步骤3和步骤4为完整性校验:
步骤3:启动特征值校验,对只读数据1021的特征符进行校验,若校验成功,则使用只读数据实现启动操作,即利用只读数据1021完成时延相关的特定处理。
步骤4、利用数字签名进行校验:使用数字签名对二级跳转表1022以及文件分配表1023的完整性进行校验,将结果和完整性校验数据103比较,若校验失败,则跳转到步骤7。
步骤5和步骤6:
步骤6、若校验成功,bootrom从数据主体102的内容中,解析出二级跳转表1022,获得二级启动逻辑的物理块位置,。
步骤6、bootrom从数据主体102的内容中,解析出文件分配表1023。bootrom装载二级启动逻辑,将文件分配表1023的位置作为参数传递给二级启动逻辑,跳转到二级启动逻辑执行,启动第一阶段完成。
步骤7、bootrom切换到备份规划区域2,回到步骤1执行类似的操作。如果备份规划区域2依然错误,则启动失败。
在时延苛刻的条件下,步骤4中的特定处理中,将处理重入的情况,保证此类特定处理进行且只进行一次。
此外,上述实施例二的第二种情况,还可以进行调整某些步骤,作为另外一种实施例方式,比如其步骤3中使用特征值对只读数据进行校验的情况,也可以不进行校验,而是直接对只读数据进行启动,能够加快启动速度。
上述各实施例中对时延要求高的特殊情况取得比较好的技术效果,此类特殊处理会使用到存放于Flash上的只读数据。如果全部采用二级跳转的方式,那么这些只读数据需要在跳转后第二次读取时才能获得,就有可能无法满足特殊处理的需要。例如,使用预置的PCIe数据来初始化PCIe配置,向主机报告自己的存在,此类操作要求在上电后的80ms内完成。因此,直接在规划区域内放置只读数据,就可以节约时间,满足延时的需求。同时,因为数据是只读的,没有频繁更新的需求,可以保证规划区域内数据不会被频繁写入。
在本申请所提供的几个实施例中,应该理解到,所揭露的器件和方法,也可以通过其它的方式实现。以上所描述的器件实施例仅仅是示意性的,另外,在本发明各个实施例中的各功能单元可以集成在一起形成一个独立的部分,也可以是各个单元单独存在,也可以两个或两个以上单元集成形成一个独立的部分。
以上所述仅为本发明的优选实施例而已,并不用以限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
Claims (11)
1.一种Flash器件,其特征在于,包括主规划区域以及备份规划区域,其中:
所述主规划区域用以存储启动程序;
所述备份规划区域用以备份启动程序。
2.如权利要求1所述的Flash器件,其特征在于,所述主规划区域包括数据区以及至少一个预留区,所述数据区至少为一个存储物理块,包括头标识、数据主体以及完整性校验数据,其中:
所述头标识用以获取数据主体以及完整性校验数据的信息;
所述数据主体用以存储启动逻辑的信息;
所述完整性校验数据用以对头标识和数据主体进行计算,并进行验证;
所述预留区为空白的物理存储空间,用以当数据区的物理块损坏后,进行恢复时,利用预留区的物理块保存数据区的信息。
3.如权利要求2所述的Flash器件,其特征在于,所述数据主体为二级跳转表,用以获取二级启动逻辑所在的物理块位置地址。
4.如权利要求2所述的Flash器件,其特征在于,所述数据主体包括只读数据、二级跳转表、文件分配表,其中:
所述只读数据用以提供启动使用的数据;
所述二级跳转表用以获取二级启动逻辑所在的物理块位置地址;
所述文件分配表将其位置作为参数传递给二级启动逻辑,实现引导程序的启动。
5.一种集成电路,其特征在于,包含上述权利要求1至4任一所述的Flash器件。
6.一种Flash器件启动方法,其特征在于,包括步骤:
(1)获取主规划区的头标识;
(2)获取数据主体和完整性校验数据信息;
(3)进行完整性校验,若校验成功,则跳转执行,若校验失败,则执行步骤(4);
(4)跳转到备份规划区域,执行步骤(1)至(3),若在备份规划区进行校验依然失败,则将其归为错误进行处理。
7.如权利要求6所述的启动方法,其特征在于,步骤(1)还包括对头标识进行初步的完整性校验。
8.如权利要求6所述的启动方法,其特征在于,步骤(3)具体为:
计算头标识和数据主体的数字摘要进行校验,所述数据主体为二级跳转表;
解析出二级跳转表结构,获得二级启动逻辑的物理块位置;
跳转到二级启动逻辑执行。
9.如权利要求6所述的启动方法,其特征在于,所述完整性校验包括数字签名校验,所述数据主体包括只读数据、二级跳转表、文件分配表,其步骤(3)具体为:
启动数字签名验证,对只读数据、二级跳转表、文件分配表的完整性进行验证;
使用只读数据完成启动;
解析出二级跳转表结构,获得二级启动逻辑的物理块位置;
解析出文件分配表,将文件分配表的位置作为参数传递给二级启动逻辑;
跳转到二级启动逻辑执行。
10.如权利要求6所述的启动方法,其特征在于,所述完整性校验包括数字签名校验和特征值校验,所述数据主体包括只读数据、二级跳转表、文件分配表,其步骤(3)具体为:
启动特征值校验,对只读数据的特征符进行校验,若校验成功,则使用只读数据实现启动操作;
启动数字签名校验,对二级跳转表以及文件分配表的完整性进行校验,若校验成功,则:
解析出二级跳转表结构,获得二级启动逻辑的物理块位置;
解析出文件分配表,将文件分配表的位置作为参数传递给二级启动逻辑;
跳转到二级启动逻辑执行。
11.如权利要求6所述的启动方法,其特征在于,所述完整性校验包括数字签名校验和特征值校验,所述数据主体包括只读数据、二级跳转表、文件分配表,其步骤(3)具体为:
使用只读数据完成启动;
启动数字签名校验,对二级跳转表以及文件分配表的完整性进行校验,若校验成功,则:
解析出二级跳转表结构,获得二级启动逻辑的物理块位置;
解析出文件分配表,将文件分配表的位置作为参数传递给二级启动逻辑;
跳转到二级启动逻辑执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911045569.9A CN111061514A (zh) | 2019-10-30 | 2019-10-30 | Flash器件、集成电路及Flash器件启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911045569.9A CN111061514A (zh) | 2019-10-30 | 2019-10-30 | Flash器件、集成电路及Flash器件启动方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111061514A true CN111061514A (zh) | 2020-04-24 |
Family
ID=70298354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911045569.9A Pending CN111061514A (zh) | 2019-10-30 | 2019-10-30 | Flash器件、集成电路及Flash器件启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111061514A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256338A (zh) * | 2020-10-27 | 2021-01-22 | 记忆科技(深圳)有限公司 | Soc启动方法、装置、计算机设备及存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050081004A1 (en) * | 2001-11-12 | 2005-04-14 | Zhang Jianhui | Method for backing up and recovering data in a hard disk |
US20070294575A1 (en) * | 2006-05-12 | 2007-12-20 | International Business Machines Corporation | Method and System for Maintaining Backup Copies of Firmware |
JP2008077221A (ja) * | 2006-09-19 | 2008-04-03 | Denso Corp | 車両用制御装置 |
CN101477469A (zh) * | 2009-02-06 | 2009-07-08 | 杭州华三通信技术有限公司 | 一种启动代码的可靠性读取方法、写入方法和装置 |
CN102023908A (zh) * | 2010-12-03 | 2011-04-20 | 中兴通讯股份有限公司 | 一种引导程序备份方法及装置 |
TW201209845A (en) * | 2010-08-20 | 2012-03-01 | Transcend Information Inc | Data backup method for flash memory module and solid state drive |
CN103079108A (zh) * | 2013-01-11 | 2013-05-01 | 青岛海信宽带多媒体技术有限公司 | 启动机顶盒的方法及机顶盒 |
CN103678030A (zh) * | 2012-09-04 | 2014-03-26 | 杭州海康威视数字技术股份有限公司 | 多系统设备启动系统及其方法 |
CN103914407A (zh) * | 2012-12-30 | 2014-07-09 | 航天信息股份有限公司 | 一种sd卡掉电保护、恢复方法以及带有掉电保护的sd卡 |
CN105302593A (zh) * | 2015-07-17 | 2016-02-03 | 天津市英贝特航天科技有限公司 | PowerPC主机板的远程升级系统及方法 |
CN106445737A (zh) * | 2016-09-12 | 2017-02-22 | 恒为科技(上海)股份有限公司 | 一种多备份启动方法 |
CN106598654A (zh) * | 2016-11-30 | 2017-04-26 | 中国兵器装备集团自动化研究所 | 一种在线更新PowerPC主板引导芯片的方法 |
CN106776122A (zh) * | 2016-11-23 | 2017-05-31 | 武汉光迅科技股份有限公司 | 一种基于Flash启动过程中主备保护的方法 |
CN107544873A (zh) * | 2017-08-28 | 2018-01-05 | 郑州云海信息技术有限公司 | 一种存放备份数据的备份系统和方法 |
CN109408282A (zh) * | 2018-08-31 | 2019-03-01 | 深圳市有方科技股份有限公司 | 应用程序备份恢复方法、设备及计算机可读存储介质 |
-
2019
- 2019-10-30 CN CN201911045569.9A patent/CN111061514A/zh active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050081004A1 (en) * | 2001-11-12 | 2005-04-14 | Zhang Jianhui | Method for backing up and recovering data in a hard disk |
US20070294575A1 (en) * | 2006-05-12 | 2007-12-20 | International Business Machines Corporation | Method and System for Maintaining Backup Copies of Firmware |
JP2008077221A (ja) * | 2006-09-19 | 2008-04-03 | Denso Corp | 車両用制御装置 |
CN101477469A (zh) * | 2009-02-06 | 2009-07-08 | 杭州华三通信技术有限公司 | 一种启动代码的可靠性读取方法、写入方法和装置 |
TW201209845A (en) * | 2010-08-20 | 2012-03-01 | Transcend Information Inc | Data backup method for flash memory module and solid state drive |
CN102023908A (zh) * | 2010-12-03 | 2011-04-20 | 中兴通讯股份有限公司 | 一种引导程序备份方法及装置 |
CN103678030A (zh) * | 2012-09-04 | 2014-03-26 | 杭州海康威视数字技术股份有限公司 | 多系统设备启动系统及其方法 |
CN103914407A (zh) * | 2012-12-30 | 2014-07-09 | 航天信息股份有限公司 | 一种sd卡掉电保护、恢复方法以及带有掉电保护的sd卡 |
CN103079108A (zh) * | 2013-01-11 | 2013-05-01 | 青岛海信宽带多媒体技术有限公司 | 启动机顶盒的方法及机顶盒 |
CN105302593A (zh) * | 2015-07-17 | 2016-02-03 | 天津市英贝特航天科技有限公司 | PowerPC主机板的远程升级系统及方法 |
CN106445737A (zh) * | 2016-09-12 | 2017-02-22 | 恒为科技(上海)股份有限公司 | 一种多备份启动方法 |
CN106776122A (zh) * | 2016-11-23 | 2017-05-31 | 武汉光迅科技股份有限公司 | 一种基于Flash启动过程中主备保护的方法 |
CN106598654A (zh) * | 2016-11-30 | 2017-04-26 | 中国兵器装备集团自动化研究所 | 一种在线更新PowerPC主板引导芯片的方法 |
CN107544873A (zh) * | 2017-08-28 | 2018-01-05 | 郑州云海信息技术有限公司 | 一种存放备份数据的备份系统和方法 |
CN109408282A (zh) * | 2018-08-31 | 2019-03-01 | 深圳市有方科技股份有限公司 | 应用程序备份恢复方法、设备及计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
丁元舟等: "嵌入式Linux系统中的多重备份与恢复设计", 《电子技术应用》 * |
上海交通大学微机研究所, 上海交通大学出版社 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256338A (zh) * | 2020-10-27 | 2021-01-22 | 记忆科技(深圳)有限公司 | Soc启动方法、装置、计算机设备及存储介质 |
CN112256338B (zh) * | 2020-10-27 | 2023-12-05 | 记忆科技(深圳)有限公司 | Soc启动方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189405B (zh) | 一种验证程序Flash数据一致性的方法及系统 | |
US8276029B2 (en) | System and method for using a memory mapping function to map memory defects | |
US8032707B2 (en) | Managing cache data and metadata | |
US8694766B2 (en) | Device bootup from a NAND-type non-volatile memory | |
CN103678030A (zh) | 多系统设备启动系统及其方法 | |
CN101848000A (zh) | 解码方法、编码方法及启动控制系统 | |
CN102239477A (zh) | 针对阵列缺陷使用高效管理方法的非易失性存储器(nvm)中的连续地址空间 | |
CN100536027C (zh) | 与非闪存的读取方法 | |
CN111258666A (zh) | 计算机文件的读取方法、装置、计算机系统及存储介质 | |
CN114968668A (zh) | 数据处理方法、装置、数据接入端及存储介质 | |
CN108733517A (zh) | Ssd固件升级保护方法及装置 | |
CN113641390B (zh) | 一种系统升级方法、装置、设备及存储介质 | |
CN111061514A (zh) | Flash器件、集成电路及Flash器件启动方法 | |
CN111124294B (zh) | 一种扇区映射信息的管理方法及装置、存储介质和设备 | |
CN108170456B (zh) | 电子设备的固件升级方法及装置 | |
CN105825126A (zh) | 一种文件保护方法及装置 | |
CN116795408A (zh) | Ecu的软件升级方法、系统及车辆 | |
CN102737716A (zh) | 存储器储存装置、存储器控制器与数据写入方法 | |
CN113094107B (zh) | 数据保护方法、装置、设备及计算机存储介质 | |
CN111159123B (zh) | 一种嵌入式可靠参数储存文件系统及方法 | |
CN114398087A (zh) | 一种提高单片机更新程序后运行稳定性的方法及单片机 | |
US10866867B2 (en) | Method of error correction in a flash memory | |
CN103092713A (zh) | 使用与非闪存存储嵌入式代码的方法 | |
CN110968455A (zh) | 一种非易失性存储器的修复方法及装置 | |
US20230236827A1 (en) | Electronic device and code patching method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |