专利名称:一种对固化于flash载体的目标文件的检错及读取方法
技术领域:
本发明涉及一种对固化于FLASH载体的目标文件的检错及读取方法。
背景技术:
机载嵌入式计算机靠运行固化在FLASH中的.out或.bin等目标文件来工作,如操作系统、系统引导程序、BIT、应用程序等。直接将目标文件固化到FLASH简单方便,但是在写入过程中如果某一段数据出错或者丢失,则会造成读出的数据错误,而用户却无法判断读出数据的正确性,这将会影响机载嵌入式计算机的正常运行,甚至可能造成计算机的
严重故障。
发明内容
本发明提供了一种对固化于FLASH载体的目标文件的检错及读取方法,以解决将目标文件直接写入FLASH存在读出数据时现有技术手段无法判断正确性的缺陷。本发明的技术方案如下一种对固化于FLASH载体的目标文件的检错及读取方法,包括以下步骤(1)设置固化存储格式将固化存储区域按照读取顺序依次分为目标文件的长度、长度MD5校验、内容MD5 校验、目标文件的内容四个部分进行固化;(2)读取目标文件(2. 1)首先读出目标文件的长度信息,然后继续读出长度MD5校验,如果正确,则继续步骤0.2);如果有误则直接返回并告警,不再读出目标文件的内容;(2. 2)读出内容MD5校验,如果正确,则进行步骤(2. 3);如果有误则直接返回并告警,不再读出目标文件的内容;(2. 3)正确读出目标文件的内容按照目标文件中约定的函数名查找程序入口,发起一个任务来运行目标文件。上述固化存储格式具体可以是以偏移地址0x0为起始地址的四个连续地址存储的是目标文件的长度信息,以偏移地址0x10为起始地址的十六个连续地址存储长度MD5校验,以偏移地址0x20为起始地址的十六个连续地址存储内容MD5校验,以偏移地址0x40为起始地址的length个连续地址存储目标文件的内容;其中,length等于目标文件的长度。上述步骤(2. 1)和(2. 2)中,如果有误则直接返回并告警,不再读出后面存储的内容;然后可以立即查找错误,重新固化目标文件;再返回步骤(2. 1)开始读取。本发明具有以下优点采用本发明的代码固化格式进行固化和读取,有效地提高了信息存储和程序运行的可靠性。代码固化格式由长度、长度MD5校验、内容MD5校验和内容组成。当机载嵌入式计算机读取固化到FLASH中的目标文件时,如果判断目标文件的长度MD5校验和内容MD5 校验出错,则直接返回并告警,不再读出后面存储的内容信息。这样,当写入目标文件的过程中发生数据错误或丢失时,可以及时的发现该问题,方便用户发现错误并及时更正,丰富和便利了机载嵌入式计算机开发应用。
图1为本发明的代码固化格式图。图2为本发明的检错及读取流程示意图。
具体实施例方式本发明提供了一种简单高效的目标文件的检错及读取方法。固化到FLASH的目标文件由长度、长度MD5校验、内容MD5校验和内容组成,系统上电执行时首先读出长度信息, 然后分别判断长度和内容的MD5校验,如果任一校验和有错则直接返回并告警,不再读出后面存储的内容。目标文件具体的固化格式如图1所示,以偏移地址0x0为起始地址的4个连续地址存储的是目标文件的长度信息,以偏移地址0x10为起始地址的16个连续地址存储长度 MD5校验,以偏移地址0x20为起始地址的16个连续地址存储内容MD5校验,以偏移地址 0x40为起始地址的length(等于目标文件的长度)个连续地址存储目标文件的内容。当从FLASH中读取目标文件时,若目标文件存储的起始地址为BASE_ADDR(基地址),首先从BASE_ADDR为起始地址读出目标文件的长度信息,然后从(BASE ADDR+OxlO)为起始地址读出目标文件的长度MD5校验,如果有误则直接返回并告警,不再读出后面存储的内容。接着从(BASE_ADDR+0x20)为起始地址读出目标文件的内容MD5校验,如果有误则直接返回并告警,不再读出后面存储的内容。最后从(BASE_ADDR+0x40)为起始地址读出目标文件的内容。具体的流程如图2所示。当从FLASH中读取已存取的数据时,通过判断长度和内容的MD5校验就可以知道写入的数据是否有错或丢失。当长度MD5校验和内容MD5校验有误时则不运行目标文件的内容并及时提示用户。
权利要求
1.一种对固化于FLASH载体的目标文件的检错及读取方法,包括以下步骤(1)设置固化存储格式将固化存储区域按照读取顺序依次分为目标文件的长度、长度MD5校验、内容MD5校验、目标文件的内容四个部分进行固化;(2)读取目标文件(2. 1)首先读出目标文件的长度信息,然后继续读出长度MD5校验,如果正确,则继续步骤(2. 2);如果有误则直接返回并告警,不再读出目标文件的内容;(2.2)读出内容MD5校验,如果正确,则进行步骤(2.3);如果有误则直接返回并告警, 不再读出目标文件的内容;(2. 3)正确读出目标文件的内容按照目标文件中约定的函数名查找程序入口,发起一个任务来运行目标文件。
2.根据权利要求1所述的方法,其特征在于,所述固化存储格式具体是以偏移地址 0x0为起始地址的四个连续地址存储的是目标文件的长度信息,以偏移地址0x10为起始地址的十六个连续地址存储长度MD5校验,以偏移地址0x20为起始地址的十六个连续地址存储内容MD5校验,以偏移地址0x40为起始地址的length个连续地址存储目标文件的内容; 其中,length等于目标文件的长度。
3.根据权利要求1所述的方法,其特征在于步骤(2.1)和(2. 2)中,如果有误则直接返回并告警,不再读出后面存储的内容;然后查找错误,重新固化目标文件;再返回步骤 (2. 1)开始读取。
全文摘要
本发明提供了一种对固化于FLASH载体的目标文件的检错及读取方法。首先,设置固化存储格式将固化存储区域按照读取顺序依次分为目标文件的长度、长度MD5校验、内容MD5校验、目标文件的内容四个部分进行固化;然后,依次读取目标文件中存储的四部分信息,当机载嵌入式计算机读取固化到FLASH中的目标文件时,如果判断目标文件的长度MD5校验和内容MD5校验出错,则直接返回并告警,不再读出后面存储的内容信息。这样,当写入目标文件的过程中发生数据错误或丢失时,可以及时的发现该问题,方便用户发现错误并及时更正,丰富和便利了机载嵌入式计算机开发应用。
文档编号G06F11/08GK102508728SQ201110387858
公开日2012年6月20日 申请日期2011年11月29日 优先权日2011年11月29日
发明者何立军, 余松涛, 俞大磊, 张彬, 石海洋 申请人:中国航空工业集团公司第六三一研究所