CN109189405B - 一种验证程序Flash数据一致性的方法及*** - Google Patents
一种验证程序Flash数据一致性的方法及*** Download PDFInfo
- Publication number
- CN109189405B CN109189405B CN201810798254.0A CN201810798254A CN109189405B CN 109189405 B CN109189405 B CN 109189405B CN 201810798254 A CN201810798254 A CN 201810798254A CN 109189405 B CN109189405 B CN 109189405B
- Authority
- CN
- China
- Prior art keywords
- data
- flash
- segment
- program
- address
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了一种验证程序Flash数据一致性的方法及***,下载并烧录应用程序至Flash;下载过程中提取并计算应用程序的校验信息;下载完成后,将校验信息和通过上位机程序发送的验证信息进行比对,数据一致则表明烧录成功,将校验信息存储在Flash中;上电时,读取存储在Flash中的校验信息,读取应用程序所有分段数据并进行校验,将计算出的校验值和存储的校验信息进行比对,数据一致则表明程序Flash中的数据没有发生损坏。
Description
技术领域
本发明涉及计算机程序处理技术领域,特别是涉及一种验证程序Flash数据一致性的方法及***。
背景技术
在中小型嵌入式***形式的汽车电子产品中,一般由MCU内部的Nor型Flash存储并运行***程序,Nor flash的特点是容量小,支持片内运行(excute in place)。作为一种CMOS工艺的集成电路芯片,随着其工作频率越来越快、集成度越来越高、工艺尺寸越来越小,MCU及其内部Flash越来越容易受到辐射效应的影响。辐射效应可能造成Nor型Flash数据的破坏,从而使得基于程序指令运行的嵌入式***的应用逻辑发生混乱,带来不可意料的问题。因此,Nor型Flash的数据一致性对产品的功能稳定性和数据安全性尤为重要,有必要设计一种方法,检验汽车电子产品程序Flash数据的一致性。
在中小型嵌入式***中,特别是在大批量生产并销售的汽车电子产品中,出于成本的约束,8位单片机/16位单片机/中低端32位单片机成为MCU的首选。这类MCU程序Flash地址空间被划分为若干个分段(Segment),分段尺寸不固定,但都小于扇区长度,扇区一般为16KB或32KB,对于中小型嵌入式***而言,几个分段就能够满足程序的存储要求。
Nor型Flash的特点是芯片内执行(Execute In Place),应用程序不必把代码读到***RAM中,可以直接在Flash内运行,它的读取方式和RAM一致,支持按地址进行单字节读取。写入时须保证写入地址位置处于已擦除状态,擦除以扇区(Sector)为单位,写入以页(Page)为单位,扇区长度可以被页长度整除。
现有技术中,中国发明专利:一种校验Flash存储数据的方法(申请号:201310209256.9),提出了一种判断数据块写入是否正确的方法,在数据写入过程中提取标识信息,和数据块已知的验证信息进行比对,标识信息和验证信息一致表明数据块写入正确。这种方法仅用于判断写入数据时是否发生错误,没有考虑***整个生命周期内Flash存储数据发生破损的情况。此处的整个生命周期指的是产品寿命期。一般对于汽车电子产品来说,寿命都在10年以上。
中国发明专利:软件程序的校验保护方法及***(申请号:201710192523.4),提出了一种对软件程序数据进行校验的方法,在软件程序加载阶段对程序各个模块进行哈希计算,将计算结果发回服务器端进行比对。这种方法不适合嵌入式***程序Flash数据的校验,而且没有说明校验信息的生成方法。
综上所述,现有技术中对于中小型嵌入式***Nor型Flash数据一致性的问题尚缺乏相应的技术手段。
发明内容
为了解决现有技术的不足,本发明提供了一种验证程序Flash数据一致性的方法,通过上位机生成程序Flash数据的验证信息,通过Bootloader生成程序Flash数据的校验信息,可以校验程序Flash数据的一致性。
一种验证程序Flash数据一致性的方法,包括:
下载并烧录应用程序至处理器芯片;
下载过程中提取并计算应用程序的校验信息;
下载完成后,将校验信息和通过上位机程序发送的验证信息进行比对,数据一致则表明烧录成功,将校验信息存储在处理器Flash中;
上电时,读取存储在Flash中的校验信息,读取应用程序所有分段数据并进行校验,将此时计算出的校验信息和存储的校验信息进行比对,数据一致则表明程序Flash中的数据没有发生损坏。
由于在Flash数据发生变化后,计算出的校验信息不等于存储的校验信息。只有flash数据没有发生变化时,两者才相等。因此,通过对比可得到程序Flash中的数据有没有发生损坏。
进一步优选的技术方案,待烧录的应用程序数据文件导入所述上位机程序后,所述上位机程序计算存储有待烧录的应用程序的Flash的地址空间的各分段尺寸和存储有应用程序Flash的校验值。
进一步优选的技术方案,Flash的地址空间包含若干分段,以分段1,分段2,...分段n表示,n为分段数量,在应用程序的链接文件中设定各个分段的首地址和截止地址,分段的尾地址小于或等于截止地址,分段尺寸定义为:
分段尺寸=分段尾地址-分段首地址+1;(1)。
进一步优选的技术方案,所述应用程序的数据文件为S19文件,每一行数据为一条SRecord,SRecord含有Flash写入地址、程序数据、程序数据长度信息,分段由多条SRecord组成,分段首地址和分段尾地址的定义分别为:
分段首地址=分段第一条SRecord的Flash写入地址;(2)
分段尾地址=分段最后一条SRecord的Flash写入地址+程序数据长度-1;(3)。
进一步优选的技术方案,所述上位机程序计算分段尺寸的方法为,
步骤1:读取分段首行SRecord,提取Flash写入地址和程序数据长度,分段首地址赋值为Flash写入地址,分段尾地址初始值赋值为(Flash写入地址+程序数据长度-1)。然后进入步骤2;
步骤2:读取下一行SRecord,提取Flash写入地址和程序数据长度,如果Flash写入地址等于(分段尾地址+1),进入步骤3,否则,进入步骤4;
步骤3:将分段尾地址累加,累加值为程序数据长度,判断该行是否为S19文件最后一行,如果是,进入步骤5,否则,进入步骤2;
步骤4:按照所述公式(1)计算分段尺寸,将该行视为下一个分段首行SRecord,进入步骤1;
步骤5:按照所述公式(1)计算分段尺寸,退出分段尺寸的计算过程。
进一步优选的技术方案,所述上位机程序计算应用程序Flash数据的校验值的方法为:读取应用程序数据文件每一条SRecord中的程序数据,进行CRC32校验,将最后的计算结果作为应用程序Flash数据的校验值。
进一步优选的技术方案,所述上位机程序发送的验证信息是指上位机程序计算出的各分段尺寸和CRC32校验值;
所述应用程序的校验信息是指Bootloader计算出的各分段尺寸和CRC32校验值。
进一步优选的技术方案,上电时,具体指产品上电或复位后,首先进入Bootloader程序,读取存储在数据Flash中的应用程序有效标志,如果为0x55,跳转到应用程序入口,否则,继续停留在Bootloader程序中。
进一步优选的技术方案,下载应用程序数据前,上位机发送指定报文,命令Bootloader擦除应用程序Flash地址空间;
下载应用程序数据期间,Bootloader提取CAN报文中的Flash写入地址和程序数据,以页为单位烧写程序Flash,并通过烧写地址计算地址所属分段的尺寸。
进一步优选的技术方案,根据烧写地址计算地址所属分段尺寸的方法为:如果烧写地址属于分段i,将分段i尺寸累加,累加值为页长度。
进一步优选的技术方案,下载应用程序数据期间,Bootloader对报文中的程序数据进行CRC32校验,将最后的计算结果作为应用程序Flash数据的校验值;
下载应用程序数据完成后,上位机程序将各分段尺寸和CRC32校验值做为验证信息发送到产品中。
进一步优选的技术方案,Bootloader比对上位机发送的验证信息和计算得出的校验信息,如果数据一致,将校验信息存储在数据Flash(MCU的flash包括程序Flash和数据Flash)中,将应用程序有效标志置为0x55,存储在数据Flash中,跳转到应用程序入口。如果数据不一致,应用程序烧写失败,将应用程序有效标志置为0,存储在数据Flash中,***复位,恢复初始化状态。
在应用程序的初始化阶段,读取存储在数据Flash中的校验信息,根据校验信息中的分段尺寸,读取各个分段中的Flash数据,进行CRC32校验,并将计算结果和校验信息中的CRC32校验值进行比对,如果数据一致,表明程序Flash数据没有损坏,***正常运行,如果不一致,表明程序Flash数据被损坏,进入跛行模式。
进一步优选的技术方案,在应用程序的运行阶段,接收到上位机的应用程序升级请求,将应用程序有效标志置为0,存储在数据Flash中,***复位,进入Bootloader程序。
一种验证程序Flash数据一致性的***,包括:
上位机及处理器芯片,所述上位机通过CAN总线与处理器芯片通信;
所述上位机中存储有上位机程序,把待烧录的应用程序数据文件导入所述上位机程序后,上位机程序计算得出应用程序Flash地址空间的各分段尺寸和应用程序Flash数据的校验值;
通过CAN总线下载并烧录应用程序,下载过程中提取并计算应用程序的校验信息,下载完成后,将校验信息和通过上位机程序发送的验证信息进行比对,数据一致则表明烧录成功,将校验信息存储在数据Flash中,上电时,读取存储在数据Flash中的校验信息,读取应用程序所有分段数据并进行校验,将计算出的校验值和存储的校验值进行比对,数据一致则表明程序Flash中的数据没有发生损坏。
与现有技术相比,本发明的有益效果是:
1、本发明通过上位机生成程序Flash数据的验证信息,通过Bootloader生成程序Flash数据的校验信息,可以在产品生产下线阶段校验程序Flash数据的一致性。
2、不仅可以检测产品生产下线阶段程序Flash数据的一致性,还能够检测产品整个生命周期内因电磁干扰、空间辐射等对Flash数据造成的损坏。
3、在中低端MCU中实现对程序Flash数据一致性的检测,实现了一定程度的功能安全。
4、在产品生命周期内通过Bootloader进行软件升级,可以同步更新应用程序Flash数据的校验信息。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为本发明实施例子的主程序流程图;
图2为本发明实施例子的程序Flash地址空间分配图;
图3为本发明实施例子的上位机分段尺寸计算程序流程图。
具体实施方式
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
本申请的一种典型的实施方式中,一种验证程序Flash数据一致性的方法,程序Flash数据存储在MCU的程序Flash数据,基于CAN总线的Bootloader,此处Bootloader为引导加载程序,在具体实施时,在汽车电子零部件中,特指程序刷新软件,在产品生产阶段,通过CAN总线下载并烧录应用程序,下载过程中提取并计算应用程序的校验信息,下载完成后,将校验信息和通过上位机程序发送的验证信息进行比对,数据一致则表明烧录成功,将校验信息存储在数据Flash中。在产品运行阶段,产品上电时,读取存储在数据Flash中的校验信息,读取应用程序所有分段数据并进行校验,将计算出的CRC校验值和存储的校验值进行比对,数据一致则表明程序Flash中的数据没有发生损坏。
具体的,本发明实施例子的主程序流程图,如图1所示,***上电或复位,进入Bootloader程序,读取应用程序的有效标志,该有效标志存储在数据Flash中,理论上可以设置为0xff之外的任意值,本申请实施例子中,有效标志设置为0x55,若应用程序的有效标志为0x55,则跳转至应用程序入口,否则,接收CAN报文,擦除应用程序Flash地址空间,接收CAN报文,提取烧录地址和程序数据,将程序数据烧写到烧录地址指定的位置,根据烧录地址计算分段尺寸,对程序数据进行CRC32校验,判断程序数据是否下载完成,若是,则接收上位机验证信息,否则返回接收CAN报文,提取烧录地址和程序数据的步骤,接收上位机验证信息后判断验证信息和校验信息是否一致,若是,则置应用程序有效标志为0x55并存储到数据Flash中,否则,应用程序烧录失败,置应用程序有效标志为0并存储到数据Flash中,***复位。
对程序数据进行CRC32校验,具体方法为:CRC-循环冗余校验,校验值可以是8位,16位,32位,CRC32是校验值为32位的循环冗余校验。CRC32校验值的初值为0,将程序数据按照烧录地址从小到大的顺序,依次进行CRC32校验运算,最终得到的计算结果为CRC32校验值。
置应用程序有效标志为0x55并存储到数据Flash中之后,跳转至应用程序入口,读取校验信息,提取个分段尺寸和校验值,根据各分段尺寸读取程序Flash数据,进行CRC32校验,判断检验结果是否等于存储的校验值,若是,则程序Flash数据完成,程序正常运行,否则,程序Flash数据损坏,进行跛行模式。
在收到软件升级请求时,置应用程序有效标志为0并存储到数据Flash中,***复位,进行程序升级。
为实现上述目的,本发明在具体实施例子中采取如下技术措施:
本申请的具体是时候例子中,设计一种上位机程序,把待烧录的应用程序数据文件导入所述上位机程序后,上位机程序计算得出应用程序Flash地址空间的各分段尺寸和应用程序Flash数据的校验值。
本发明实施例子的程序Flash地址空间分配图,如图2所示,程序Flash地址空间包括应用程序Flash地址空间及Bootloader Flash地址空间,刚上电时程序在BooloaderFlash地址空间运行,如果检测到存在应用程序,就跳入应用程序Flash空间运行。两者互不重叠。
其中,应用程序Flash地址空间包含若干分段,以分段1,分段2,...分段n表示,n为分段数量。在应用程序的链接文件中设定各个分段的首地址和截止地址,由于函数指令数据不能跨段存储,分段的尾地址小于或等于截止地址,分段尺寸定义为:
分段尺寸=分段尾地址-分段首地址+1;(1)
应用程序数据文件为S19文件,每一行数据为一条SRecord(S记录),SRecord含有Flash写入地址、程序数据、程序数据长度信息。分段由多条SRecord组成(分段是一段连续的地址空间。如果上下两条S记录的地址不连续,这两条S记录属于不同分段。),分段首地址和分段尾地址的定义分别为:
分段首地址=分段第一条SRecord的Flash写入地址;(2)
分段尾地址=分段最后一条SRecord的Flash写入地址+程序数据长度-1;(3)
关于:S19:Motorola format for EEPROM programming,为了在不同的计算机平台之间传输程序代码和数据,摩托罗拉将程序和数据文件以一种可打印的ASCII形式编码成s格式文件。S19文件由多条S记录组成。
S19文件首行SRecord是分段1首行SRecord,分段1结束后的下一条SRecord是分段2的首行SRecord,...,分段n-1结束后的下一条SRecord是分段n的首行SRecord。
本发明实施例子的上位机分段尺寸计算程序流程图,如图3所示,上位机程序计算分段尺寸的方法为:
步骤1:读取分段首行SRecord,提取Flash写入地址和程序数据长度,分段首地址赋值为Flash写入地址,分段尾地址初始值赋值为(Flash写入地址+程序数据长度-1),然后进入步骤2。
步骤2:读取下一行SRecord,提取Flash写入地址和程序数据长度,如果Flash写入地址等于(分段尾地址+1),进入步骤3,否则,进入步骤4。
步骤3:将分段尾地址累加,累加值为程序数据长度。判断该行是否为S19文件最后一行,如果是,进入步骤5,否则,进入步骤2。
步骤4:按照所述公式(1)计算分段尺寸,将该行视为下一个分段首行SRecord,进入步骤1。
步骤5:按照所述公式(1)计算分段尺寸,退出分段尺寸的计算过程。
上位机程序计算应用程序Flash数据的校验值的方法为,读取应用程序数据文件每一条SRecord中的程序数据,进行CRC32校验,将最后的计算结果作为应用程序Flash数据的校验值。
上位机程序发送的验证信息是指上位机程序计算出的各分段尺寸和CRC32校验值。
产品上电或复位后,首先进入Bootloader程序,读取存储在数据Flash中的应用程序有效标志,如果为0x55,跳转到应用程序入口,否则,继续停留在Bootloader程序中。
下载应用程序数据前,上位机发送指定报文,命令Bootloader擦除应用程序Flash地址空间。
下载应用程序数据期间,Bootloader提取CAN报文中的Flash写入地址和程序数据,以页(Page)为单位烧写程序Flash,并通过烧写地址计算地址所属分段的尺寸。
根据烧写地址计算地址所属分段尺寸的方法为,
如果烧写地址属于分段i,将分段i尺寸累加,累加值为页长度。
下载应用程序数据期间,Bootloader对报文中的程序数据进行CRC32校验,将最后的计算结果作为应用程序Flash数据的校验值。
应用程序的校验信息是指Bootloader计算出的各分段尺寸和CRC32校验值。
下载应用程序数据完成后,上位机程序将各分段尺寸和CRC32校验值作为验证信息发送到产品中的MCU(MCU中存在程序Flash)中。
Bootloader比对上位机发送的验证信息和计算得出的校验信息,如果数据一致,将校验信息存储在数据Flash中,将应用程序有效标志置为0x55,存储在数据Flash中,跳转到应用程序入口。如果数据不一致,应用程序烧写失败,将应用程序有效标志置为0,存储在数据Flash中,***复位,恢复初始化状态。
在应用程序的初始化阶段,读取存储在数据Flash中的校验信息,根据校验信息中的分段尺寸,读取各个分段中的Flash数据,进行CRC32校验,并将计算结果和校验信息中的CRC32校验值进行比对,如果数据一致,表明程序Flash数据没有损坏,***正常运行。如果不一致,表明程序Flash数据被损坏,进入跛行模式。
跛行模式:具体指产品出现故障后进入的运行模式。特点是不再执行正常的程序流程,根据产品功能的不同,不同产品的跛行模式下的处理各不相同。
在应用程序的运行阶段,接收到上位机的应用程序升级请求,将应用程序有效标志置为0,存储在数据Flash中,***复位,进入Bootloader程序。
在实际应用时,本申请的上述方法并不局限于汽车电子产品。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (8)
1.一种验证程序Flash数据一致性的方法,其特征是,包括:
下载并烧录应用程序至处理器芯片;
下载过程中提取并计算应用程序的校验信息;
下载完成后,将校验信息和通过上位机程序发送的验证信息进行比对,数据一致则表明烧录成功,将校验信息存储在处理器芯片Flash中;
上电时,读取存储在Flash中的校验信息,读取应用程序所有分段数据并进行校验,将此时计算出的校验信息和存储的校验信息进行比对,数据一致则表明程序Flash中的数据没有发生损坏;
由于在Flash数据发生变化后,计算出的校验信息不等于存储的校验信息;只有flash数据没有发生变化时,两者才相等;因此,通过对比可得到程序Flash中的数据有没有发生损坏;
Flash的地址空间包含若干分段,以分段1,分段2,...分段n表示,n为分段数量,在应用程序的链接文件中设定各个分段的首地址和截止地址,分段的尾地址小于或等于截止地址,分段尺寸定义为:
分段尺寸=分段尾地址-分段首地址+1(1);
所述上位机程序计算分段尺寸的方法为,
步骤1:读取分段首行SRecord,提取Flash写入地址和程序数据长度,分段首地址赋值为Flash写入地址,分段尾地址初始值赋值为Flash写入地址+程序数据长度-1,然后进入步骤2;
步骤2:读取下一行SRecord,提取Flash写入地址和程序数据长度,如果Flash写入地址等于分段尾地址+1,进入步骤3,否则,进入步骤4;
步骤3:将分段尾地址累加,累加值为程序数据长度,判断该行是否为S19文件最后一行,如果是,进入步骤5,否则,进入步骤2;
步骤4:按照公式(1)计算分段尺寸,将该行视为下一个分段首行SRecord,进入步骤1;
步骤5:按照公式(1)计算分段尺寸,退出分段尺寸的计算过程。
2.如权利要求1所述的一种验证程序Flash数据一致性的方法,其特征是,待烧录的应用程序数据文件导入所述上位机程序后,所述上位机程序计算存储有待烧录的应用程序的Flash的地址空间的各分段尺寸和存储有应用程序Flash的校验值。
3.如权利要求1所述的一种验证程序Flash数据一致性的方法,其特征是,所述应用程序的数据文件为S19文件,每一行数据为一条SRecord,SRecord含有Flash写入地址、程序数据、程序数据长度信息,分段由多条SRecord组成,分段首地址和分段尾地址的定义分别为:
分段首地址=分段第一条SRecord的Flash写入地址(2) ;
分段尾地址=分段最后一条SRecord的Flash写入地址+程序数据长度-1(3)。
4.如权利要求1所述的一种验证程序Flash数据一致性的方法,其特征是,所述上位机程序计算应用程序Flash数据的校验值的方法为:读取应用程序数据文件每一条SRecord中的程序数据,进行CRC32校验,将最后的计算结果作为应用程序Flash数据的校验值。
5.如权利要求1所述的一种验证程序Flash数据一致性的方法,其特征是,所述上位机程序发送的验证信息是指上位机程序计算出的各分段尺寸和CRC32校验值;
所述应用程序的校验信息是指Bootloader计算出的各分段尺寸和CRC32校验值。
6.如权利要求1所述的一种验证程序Flash数据一致性的方法,其特征是,上电时,具体指产品上电或复位后,首先进入Bootloader程序,读取存储在数据Flash中的应用程序有效标志,如果为0x55,跳转到应用程序入口,否则,继续停留在Bootloader程序中。
7.如权利要求1所述的一种验证程序Flash数据一致性的方法,其特征是,下载应用程序数据前,上位机发送指定报文,命令Bootloader擦除应用程序Flash地址空间;
下载应用程序数据期间,Bootloader提取CAN报文中的Flash写入地址和程序数据,以页为单位烧写程序Flash,并通过烧写地址计算地址所属分段的尺寸;
根据烧写地址计算地址所属分段尺寸的方法为:如果烧写地址属于分段i,将分段i尺寸累加,累加值为页长度;
下载应用程序数据期间,Bootloader对报文中的程序数据进行CRC32校验,将最后的计算结果作为应用程序Flash数据的校验值;
下载应用程序数据完成后,上位机程序将各分段尺寸和CRC32校验值做为验证信息发送到产品中。
8.一种验证程序Flash数据一致性的***,其特征是,包括:
上位机及处理器芯片,所述上位机通过CAN总线与处理器芯片通信;
所述上位机中存储有上位机程序,把待烧录的应用程序数据文件导入所述上位机程序后,上位机程序计算得出应用程序Flash地址空间的各分段尺寸和应用程序Flash数据的校验值;
通过CAN总线下载并烧录应用程序,下载过程中提取并计算应用程序的校验信息,下载完成后,将校验信息和通过上位机程序发送的验证信息进行比对,数据一致则表明烧录成功,将校验信息存储在数据Flash中,上电时,读取存储在数据Flash中的校验信息,读取应用程序所有分段数据并进行校验,将计算出的校验值和存储的校验值进行比对,数据一致则表明程序Flash中的数据没有发生损坏;
Flash的地址空间包含若干分段,以分段1,分段2,...分段n表示,n为分段数量,在应用程序的链接文件中设定各个分段的首地址和截止地址,分段的尾地址小于或等于截止地址,分段尺寸定义为:
分段尺寸=分段尾地址-分段首地址+1(1);
所述上位机程序计算分段尺寸的方法为,
步骤1:读取分段首行SRecord,提取Flash写入地址和程序数据长度,分段首地址赋值为Flash写入地址,分段尾地址初始值赋值为Flash写入地址+程序数据长度-1,然后进入步骤2;
步骤2:读取下一行SRecord,提取Flash写入地址和程序数据长度,如果Flash写入地址等于分段尾地址+1,进入步骤3,否则,进入步骤4;
步骤3:将分段尾地址累加,累加值为程序数据长度,判断该行是否为S19文件最后一行,如果是,进入步骤5,否则,进入步骤2;
步骤4:按照公式(1)计算分段尺寸,将该行视为下一个分段首行SRecord,进入步骤1;
步骤5:按照公式(1)计算分段尺寸,退出分段尺寸的计算过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810798254.0A CN109189405B (zh) | 2018-07-19 | 2018-07-19 | 一种验证程序Flash数据一致性的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810798254.0A CN109189405B (zh) | 2018-07-19 | 2018-07-19 | 一种验证程序Flash数据一致性的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109189405A CN109189405A (zh) | 2019-01-11 |
CN109189405B true CN109189405B (zh) | 2022-03-01 |
Family
ID=64936396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810798254.0A Active CN109189405B (zh) | 2018-07-19 | 2018-07-19 | 一种验证程序Flash数据一致性的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109189405B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413223A (zh) * | 2019-06-25 | 2019-11-05 | 汉纳森(厦门)数据股份有限公司 | Flash存储器的数据读写方法、介质、设备及装置 |
CN112417433A (zh) * | 2019-08-21 | 2021-02-26 | 纬湃科技投资(中国)有限公司 | 用于检验电子控制单元的应用程序的方法 |
CN110764787B (zh) * | 2019-08-26 | 2024-04-02 | 晶晨半导体(上海)股份有限公司 | 一种检测内存缺陷的usb烧录***和usb烧录方法 |
CN111124742B (zh) * | 2019-12-18 | 2023-07-18 | 上海东软载波微电子有限公司 | Flash数据校验方法及Flash控制器、存储介质、设备 |
CN111796839B (zh) * | 2020-07-07 | 2024-04-09 | 北京经纬恒润科技股份有限公司 | 控制器程序管理方法和装置 |
CN111998510B (zh) * | 2020-08-28 | 2022-02-18 | 海信(山东)空调有限公司 | 一种空调器及其控制方法 |
CN112925547A (zh) * | 2021-03-22 | 2021-06-08 | 珞石(北京)科技有限公司 | 一种EtherCAT总线更新DSP程序的方法 |
CN115858396B (zh) * | 2023-02-02 | 2023-07-04 | 北京紫光芯能科技有限公司 | 用于芯片验证的方法及装置、电子设备、存储介质 |
CN116564399B (zh) * | 2023-04-20 | 2024-04-02 | 深圳市晶存科技有限公司 | 芯片测试方法、装置、电子设备及计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104021011A (zh) * | 2014-05-09 | 2014-09-03 | 苏州汇川技术有限公司 | 嵌入式设备程序升级***及方法 |
CN104091616A (zh) * | 2014-06-20 | 2014-10-08 | 广东九联科技股份有限公司 | 机顶盒内置flash芯片数据一致性检测方法 |
CN106293859A (zh) * | 2016-09-22 | 2017-01-04 | 珠海格力电器股份有限公司 | 基于控制器的软件升级或烧录方法、装置和*** |
CN107657153A (zh) * | 2017-09-27 | 2018-02-02 | 深圳芯邦科技股份有限公司 | 一种芯片内flash区的代码保护方法及装置 |
CN108200044A (zh) * | 2017-12-28 | 2018-06-22 | 宁德时代新能源科技股份有限公司 | 车载程序文件加密方法和*** |
CN108228198A (zh) * | 2016-12-22 | 2018-06-29 | 比亚迪股份有限公司 | 烧写方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7774540B2 (en) * | 2007-12-26 | 2010-08-10 | Hitachi Global Storage Technologies Netherlands B.V. | Storage system and method for opportunistic write-verify |
WO2016050315A1 (en) * | 2014-10-02 | 2016-04-07 | Hitachi Data Systems Engineering UK Limited | Method and an apparatus, and related computer-program products, for managing access request in multi-tenancy environments |
CN105117237A (zh) * | 2015-04-22 | 2015-12-02 | 北京天诚盛业科技有限公司 | 基于Flash的程序分层存储、运行以及升级的方法和装置 |
CN105117236B (zh) * | 2015-06-30 | 2018-06-01 | 无锡华润矽科微电子有限公司 | 一种自动校验的编程烧写方法 |
CN106776122A (zh) * | 2016-11-23 | 2017-05-31 | 武汉光迅科技股份有限公司 | 一种基于Flash启动过程中主备保护的方法 |
-
2018
- 2018-07-19 CN CN201810798254.0A patent/CN109189405B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104021011A (zh) * | 2014-05-09 | 2014-09-03 | 苏州汇川技术有限公司 | 嵌入式设备程序升级***及方法 |
CN104091616A (zh) * | 2014-06-20 | 2014-10-08 | 广东九联科技股份有限公司 | 机顶盒内置flash芯片数据一致性检测方法 |
CN106293859A (zh) * | 2016-09-22 | 2017-01-04 | 珠海格力电器股份有限公司 | 基于控制器的软件升级或烧录方法、装置和*** |
CN108228198A (zh) * | 2016-12-22 | 2018-06-29 | 比亚迪股份有限公司 | 烧写方法及装置 |
CN107657153A (zh) * | 2017-09-27 | 2018-02-02 | 深圳芯邦科技股份有限公司 | 一种芯片内flash区的代码保护方法及装置 |
CN108200044A (zh) * | 2017-12-28 | 2018-06-22 | 宁德时代新能源科技股份有限公司 | 车载程序文件加密方法和*** |
Non-Patent Citations (9)
Title |
---|
Decoding the .map(Linker Address Map) , .abs(ABS file ) and S19 file;Nycil;《https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Decoding-the-map-Linker-Address-Map-abs-ABS-file-and-S19-file/m-p/149748》;20100923;1-10 * |
EEE Approved Draft Standard for Service Interoperability in Ethernet Passive Optical Networks (SIEPON);IEEE;《https://ieeexplore.ieee.org/servlet/opac?punumber=7781576》;20160101;1-19 * |
Erich Styger.Tutorial: CRC32 Checksum with the KBOOT Bootloader.《https://mcuoneclipse.com/2018/03/05/tutorial-crc32-checksum-with-the-kboot-bootloader/》.2018,1-18. * |
NOR Flash 烧写说明;zhangzhibin160410132;《https://blog.csdn.net/zhangzhibin160410132/article/details/38533439》;20140813;1-3 * |
Verification-Based Multi-backup Firmware Architecture, an Assurance of Trusted Boot Process for the Embedded Systems;Hongfei Yin等;《2011IEEE 10th International Conference on Trust, Security and Privacy in Computing and Communications》;20120103;1188-1195 * |
东东bh.基于飞思卡尔微控制器的CAN Bootloader的实现与应用.《http://blog.sina.com.cn/s/blog_8a30d1990102vufa.html》.2015,1-4. * |
嵌入式软件在线升级的设计及实现;詹圣益;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20160715;I138-458 * |
整车控制器BootLoader的设计与实现;张艳等;《计算机工程》;20110620;第37卷(第12期);233-235 * |
电动汽车整车控制器BootLoader功能开发;乐志国;《佳木斯大学学报(自然科学版)》;20140315;237-241 * |
Also Published As
Publication number | Publication date |
---|---|
CN109189405A (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189405B (zh) | 一种验证程序Flash数据一致性的方法及*** | |
US9256744B2 (en) | System-on-chip and booting method thereof | |
WO2015070521A1 (zh) | 将ubi格式的***文件制作成工厂烧录映像文件方法 | |
CN101650662A (zh) | 一种嵌入式***的存储器件、固件启动及升级方法 | |
CN113110891B (zh) | 固态硬盘的固件加载方法、装置、计算机设备及存储介质 | |
US20060195833A1 (en) | Data-burning method and system thereof based on auto-detection of computer platform | |
CN109582332B (zh) | 互联网摄像机的***升级方法及装置 | |
CN105677409B (zh) | 一种***升级方法及装置 | |
CN112540725A (zh) | 非易失性数据存储方法、嵌入式***以及存储介质 | |
CN111782246A (zh) | 基于总线的多节点设备嵌入式程序升级方法 | |
CN104133743A (zh) | 一种将文件烧录到emmc芯片的方法及装置 | |
CN107479924B (zh) | 基于Android***的软件升级校验方法 | |
US20080140920A1 (en) | Microcomputer for flash memory rewriting | |
CN112559071A (zh) | 一种用于dsp的分段双冗余引导加载方法 | |
CN111857785B (zh) | 一种mcu的启动方法、装置及终端设备 | |
CN116755735A (zh) | 嵌入式软件在线升级方法、装置、腹膜透析仪、存储介质 | |
CN110928570A (zh) | 一种固件升级的方法及装置、可读存储介质 | |
CN113094107B (zh) | 数据保护方法、装置、设备及计算机存储介质 | |
CN102184115B (zh) | 升级***软件的方法及终端设备 | |
US7490232B2 (en) | Disk device using disk to rewrite firmware and firmware determination method | |
CN111061514A (zh) | Flash器件、集成电路及Flash器件启动方法 | |
CN113626091A (zh) | 固态硬盘的启动优化方法、装置、计算机设备及存储介质 | |
CN112052112A (zh) | 基于NOR Flash存储的位翻转错误检测方法、装置及存储介质 | |
CN106611124A (zh) | 计算机装置及其开机方法 | |
CN110764947A (zh) | 数据写入方法以及存储控制器 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |