CN102799494A - 一种校验内存中应用程序的方法和装置 - Google Patents
一种校验内存中应用程序的方法和装置 Download PDFInfo
- Publication number
- CN102799494A CN102799494A CN2012103131763A CN201210313176A CN102799494A CN 102799494 A CN102799494 A CN 102799494A CN 2012103131763 A CN2012103131763 A CN 2012103131763A CN 201210313176 A CN201210313176 A CN 201210313176A CN 102799494 A CN102799494 A CN 102799494A
- Authority
- CN
- China
- Prior art keywords
- application program
- storer
- primary application
- internal memory
- verification
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供的一种校验内存中应用程序的方法,所述方法应用于嵌入式系统中,包括:当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对;当所述内存中缓存的目标应用程序与所述存储器中的初始应用程序不满足预设比对条件时,判定所述内存中的目标应用程序错误。采用本发明提供的一种校验内存中应用程序的方法,能够在软件系统空闲的时候,对内存中存储的应用程序进行检验,保证了内存中存储的应用程序与存储器中的应用程序一致,系统运行该应用程序时,就能达到设置该应用程序的运行目的,提高应用程序运行的正确性和完整性。
Description
技术领域
本发明属于软件领域,尤其涉及一种校验内存中应用程序的方法和装置。
背景技术
嵌入式处理器是嵌入式系统的核心,是控制、辅助系统运行的硬件单元。嵌入式软件是嵌入式处理器中的操作系统和开发工具软件,由应用程序和文档组成。
应用程序保存在FLASH或ROM等存储器中,当应用程序在内存中运行时,应用程序缓存在RAM等内存中。当应用程序首次运行时,应用程序从FLASH中读取出,并缓存在RAM中,后续运行该应用程序的过程中都是直接从RAM中读取,直至处理器断电RAM中缓存的应用程序消失。
当应用程序在内存中运行时,由于硬件某些偶然性错误、用户的一些非法操作等因素,会导致存储在RAM中一些不允许更改的数据如应用程序代码被改变。所以当RAM中的应用程序出现错误的时候,会对应用程序的运行产生影响,使得应用程序完整性或正确性受到损坏。
而在很多应用场合中,在嵌入式处理器中只采用一些简单的操作系统,如ucosll等,这些操作系统主要用于完成任务调度功能,在这些简单的操作系统中没有严格安全防护机制,所以无法保证RAM中的应用程序代码的完整性或正确性,进而对嵌入式系统的整体可靠性造成影响。
发明内容
有鉴于此,本发明的目的在于提供一种校验内存中应用程序的方法,对嵌入式系统缓存在内存中的应用程序进行检验并校正,提高应用程序运行的正确性和完整性。
为保证本发明提供的一种校验内存中应用程序的方法在实际中的实施,本发明还提供了一种校验内存中应用程序的装置。
一种校验内存中应用程序的方法,所述方法应用于嵌入式系统中,包括:
当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对;
当所述内存中缓存的目标应用程序与所述存储器中的初始应用程序不满足预设比对条件时,判定所述内存中的目标应用程序错误。
上述的方法,优选的,还包括:
当判定所述内存中的目标应用程序错误时,依据所述存储器中的初始应用程序对所述内存中缓存的目标应用程序进行刷新。
上述的方法,优选的,所述存储器中存储的与所述目标应用程序相对应的初始应用程序中预设有管理信息,所述管理信息包括:所述初始应用程序在存储器中的起始地址、所述初始应用程序的大小、和所述初始应用程序的校验和。
上述的方法,优选的,所述当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对包括:
依据所述管理信息中预设的所述存储器中的初始应用程序的起始地址和所述初始应用程序的大小,在所述存储器中获取所述初始应用程序;
依据预设的比较长度,将所述存储器中的初始应用程序划分为至少一个原代码段,将所述内存中对应的目标应用程序划分为与所述原代码段对应的比较代码段;
依次对所述原代码段和所述比较代码段进行比较。
上述的方法,优选的,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对之前还包括:
当所述嵌入式系统中没有应用程序正在运行时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取所述存储器中存储的初始应用程序;
计算获取的存储器中所述初始应用程序的校验和;
判断所述存储器中初始应用程序的校验和与管理信息中预设的校验和是否相同,如果相同,获取存储器中存储的初始应用程序,并且和在内存中缓存的目标应用程序进行比较;如果不同,判定存储器中的初始应用程序错误,发送停止所述嵌入式系统运行的信号停止所述嵌入式系统运行。
上述的方法,优选的,还包括:
当所述嵌入式系统开始运行,未启动运行任务时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取存储器中存储的初始应用程序;
计算获取的存储器中所述初始应用程序的校验和;
判断存储器中初始应用程序的校验和与管理信息中预设的校验和是否相同,如果相同,启动运行任务;如果不同,判定存储器中的初始应用程序错误,发送停止所述嵌入式系统运行的信号停止所述嵌入式系统运行。
一种校验内存中应用程序的装置,所述装置应用于嵌入式系统中,包括:
第一判断器,用于判断所述嵌入式软件是否空闲;
比较器,用于当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对;
第二判断器,用于当所述内存中缓存的目标应用程序与所述存储器中的初始应用程序不满足预设比对条件时,判定所述内存中的目标应用程序错误。
上述的装置,优选的,还包括:
刷新器,用于当判定所述内存中的目标应用程序错误时,依据所述存储器中的初始应用程序对所述内存中缓存的目标应用程序进行刷新。
上述的装置,优选的,所述比较器包括:
获取模块,用于依据所述管理信息中预设的所述存储器中的初始应用程序的起始地址和所述初始应用程序的大小,在所述存储器中获取所述初始应用程序;
划分模块,用于依据预设的比较长度,将所述存储器中的初始应用程序划分为至少一个原代码段,将所述内存中对应的目标应用程序划分为与所述原代码段对应的比较代码段;
比较模块,用于依次对所述原代码段和所述比较代码段进行比较。
上述的装置,优选的,还包括:
校验器,用于当所述嵌入式系统开始运行,未启动运行任务时和/或当判定所述嵌入式系统中没有应用程序正在运行时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取存储器中存储的初始应用程序,计算获取的存储器中所述初始应用程序的校验和,并判断所述存储器中初始应用程序的校验和与管理信息中预设的校验和是否相同;
发送器,用于当检验器判定存储器中初始应用程序的校验和与管理信息中预设的校验和不同时,发送停止所述嵌入式系统运行的信号。
本发明提供的一种校验内存中应用程序的方法,所述方法应用于嵌入式系统中,包括:当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对;当所述内存中缓存的目标应用程序与所述存储器中的初始应用程序不满足预设比对条件时,判定所述内存中的目标应用程序错误。采用本发明提供的一种校验内存中应用程序的方法,能够在软件系统中没有应用程序正在运行的时候,对内存中存储的应用程序进行检验,保证了内存中存储的应用程序与存储器中的应用程序一致,系统运行该应用程序时,就能达到设置该应用程序的运行目的,提高应用程序运行的正确性和完整性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种校验内存中应用程序的方法实施例1的流程图;
图2是本发明提供的一种校验内存中应用程序的方法实施例1的一具体流程图;
图3是本发明提供的一种校验内存中应用程序的方法实施例1的另一种流程图;
图4是本发明提供的一种校验内存中应用程序的方法实施例2的流程图;
图5是本发明提供的一种校验内存中应用程序的方法实施例3的流程图;
图6是本发明提供的一种校验内存中应用程序的装置实施例1的结构示意图;
图7是本发明提供的一种校验内存中应用程序的装置实施例1的一具体结构示意图;
图8是本发明提供的一种校验内存中应用程序的装置实施例1的另一种结构示意图;
图9是本发明提供的一种校验内存中应用程序的装置实施例2的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在嵌入式系统中采用“引导程序”+“应用程序”的方式,引导程序完成系统的启动与初始化,系统的具体工作由应用程序完成。引导程序负责启动应用程序,并且负责检查应用程序的完整性,即本发明提供的一种校验内存中应用程序的方法是引导程序的工作。
参见图1示出了本发明提供的一种校验内存中应用程序的方法实施例1的流程图,包括:
步骤S101:当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对;
为了不影响嵌入式软件的运行,不阻碍应用程序的正常运行,本发明提供的校验内存中应用程序的方法是在嵌入式系统中应用程序没有运行时,即利用系统中的空闲时间段进行的。
因此需要首先判断嵌入式系统中是不是有应用程序任务正在运行,如果有,继续进行应用程序任务的运行,如果没有,进行后续的校验步骤。
所述存储器中存储的与所述目标应用程序相对应的初始应用程序中预设有管理信息,所述管理信息包括:所述初始应用程序在存储器中的起始地址、所述初始应用程序的大小、所述初始应用程序的校验和。
在将该应用程序写入存储器中时,将该应用程序在存储器中的起始地址、大小及其校验和存储到管理信息中,即管理信息中有存储到存储器中的所述初始应用程序最初的属性信息。
参见图2示出的一具体流程图,步骤S101包括:
步骤S1011:依据所述管理信息中预设的所述存储器中的初始应用程序的起始地址和所述初始应用程序的大小,在所述存储器中获取所述初始应用程序;
在管理信息中预设存储有所述初始应用程序的起始地址,该起始地址表示了应用程序在存储器中的起始位置,通过该预设的起始地址,就能在存储器中准确定位该应用程序的起始位置。
管理信息中还预设有该初始应用程序的大小,在存储器中定位了该初始应用程序的起始位置后,只要再依据该应用程序的大小就能准确在存储器得到该初始应用程序。
步骤S1012:依据预设的比较长度,将所述存储器中的初始应用程序划分为至少一个原代码段,将所述内存中对应的目标应用程序划分为与所述原代码段对应的比较代码段;
依据预设的比较长度,将存储器中的初始应用程序代码划分为多个原代码段。
当初始应用程序较短时,可直接进行比较,将所述存储器中的初始应用程序代码视为一个原代码段;当应用程序较长时,需要将存储器中的初始应用程序代码划分为多个原代码段。
同理,依据预设的比较长度,也将内存中的目标应用程序划分为与所述原代码段对应的比较代码段。
步骤S1013:依次对所述原代码段和所述比较代码段进行比较。
分别获取存储器中的第一个原代码段和内存中对应的比较代码段,并进行比较,当二者完全相同时,依次分别获取下一个原代码段和比较代码段进行比较,当二者完全相同时,继续获取下一个原代码段和比较代码段进行比较,以此类推,直至所有的原代码段和比较代码段比较完成。
步骤S102:当所述内存中缓存的目标应用程序与所述存储器中的初始应用程序不满足预设比对条件时,判定所述内存中的目标应用程序错误。
理论上,内存中存储的目标应用程序代码应该与存储器中的初始应用程序代码完全相同,这样,系统中每次运行的该应用程序是内存中的目标应用程序,而当内存中存储的目标应用程序代码和存储器中的初始应用程序代码不相同时,系统在运行该应用程序时,可能会导致各种问题,不能达到设置该应用程序时想要达到的运行目的。
当比较过程中出现任一原代码段和与之相对应的比较代码段不同的时候,说明与存储器中存储的应用程序相比,比较代码段代表的内存中存储的应用程序代码被更改过,出现了错误。
由于嵌入式系统中可能存在多个应用程序,需要对每个存储在内存中目标应用程序分别进行校验,所以可对各个目标应用程序进行排序,使用频率较高的排在前面,优先进行校验,比如当系统中存在应用程序1、应用程序2和应用程序3,使用频率由高到低为应用程序3、应用程序1和应用程序2,当系统中出现空闲时间段时,首先对应用程序3对应的存储内存中的目标应用程序3进行校验,然后是校验应用程序1对应的存储内存中的目标应用程序1,最后校验应用程序2对应的存储内存中的目标应用程序2;
也可优先对即将运行的应用程序排在前面,优先进行校验,比如当系统中存在应用程序4、应用程序5和应用程序6,当系统运行完应用程序4之后,一段空闲时间段后再运行应用程序5,在这段空闲时间段中可对应用程序进行校验,此时即将运行的应用程序为应用程序5,首先对应用程序5对应的存储内存中的目标应用程序5进行校验,时间充裕的话,继续对应用程序6对应的存储内存中的目标应用程序6进行校验,以此类推;
对多个应用程序校验的先后顺序的设置条件可视具体情况设定。
参见图3示出了本发明提供的一种校验内存中应用程序的方法实施例1的另一种流程图,本流程图是在图1的步骤S102之后还包括:
步骤S103:当判定所述内存中的目标应用程序错误时,依据所述存储器中的初始应用程序对所述内存中缓存的目标应用程序进行刷新。
当内存中存储的目标应用程序代码和存储器中的初始应用程序代码不相同时,即内存中存储的目标应用程序错误时,系统在运行该目标应用程序时,可能会导致各种问题,不能达到设置该应用程序时想要达到的运行目的。因此,需要依据所述存储器中存储的初始应用程序代码将内存中的目标应用程序代码刷新,使内存中的目标应用程序代码再次与存储器中存储的初始应用程序代码相同,系统运行该目标应用程序时,就能达到设置该应用程序时想要达到的运行目的。
由上述可知,本发明实施例1提供的一种校验内存中应用程序的方法,包括:当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对;当所述内存中缓存的目标应用程序与所述存储器中的初始应用程序不满足预设比对条件时,判定所述内存中的目标应用程序错误;当判定所述内存中的目标应用程序错误时,依据所述存储器中的初始应用程序对所述内存中缓存的目标应用程序进行刷新。采用本实施例的方法,能够在软件系统空闲的时候,对内存中存储的应用程序进行检验刷新,保证了内存中存储的应用程序与存储器中的应用程序一致,系统运行该应用程序时,就能达到设置该应用程序时的运行目的,提高应用程序运行的正确性和完整性。
参见图4示出了本发明提供的一种校验内存中应用程序的方法实施例2的流程图,本流程图是在图1的步骤S101和步骤S102之间还包括:
步骤S104:当所述嵌入式系统空闲时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取所述存储器中存储的初始应用程序;
当软件系统中没有应用程序任务正在运行,即软件系统在运行过程中空闲时,此时开始对内存中的目标应用程序进行校验,为保证存储器中存储的初始应用程序与设定的应用程序一致,进而保证内存中的目标应用程序校验的准确性,需要先对存储器中的初始应用程序进行检验。
在管理信息中预设存储有初始应用程序的起始地址,该起始地址表示了初始应用程序在存储器中的起始位置,通过该预设的起始地址,就能在存储器中准确定位该初始应用程序的起始位置。
管理信息中还预设有该初始应用程序的大小,在存储器中定位了该初始应用程序的起始位置后,再依据该初始应用程序的大小就能在存储器得到该初始应用程序。
步骤S105:计算获取的存储器中所述初始应用程序代码的校验和;
校验和(checksum),在数据处理和数据通信领域中,用于校验目的的一组数据项的和。这些数据项可以是数值或在计算检验的过程中看作数字的其它字符串。
得到存储器中的初始应用程序之后,依据组成初始应用程序的数据项进行校验和的计算,计算得到存储器中初始应用程序的校验和。
步骤S106:判断所述存储器中初始应用程序代码的校验和与管理信息中预设的校验和是否相同,如果相同,获取存储器中存储的初始应用程序代码和在内存中缓存的目标应用程序代码进行比较;如果不同,判定存储器中的初始应用程序错误,发送停止所述嵌入式系统运行的信号停止所述嵌入式系统运行。
在管理信息中还预设有该初始应用程序的校验和,该预设的校验和是在该初始应用程序编辑过程中就计算得出的,而且将该初始应用程序加载入软件系统中后,对软件系统进行更新过程中校验和可能会有变化,但是,软件系统在线更新完成后,校验和与最初的校验和即管理信息中的校验和一致,不会变化。
计算得到存储器中初始应用程序的校验和后,和管理信息中预设的校验和进行比较:当两个校验和相同时,则表示存储器中的初始应用程序和预设的应用程序一致,后续的对内存中的目标应用程序进行校验就可实现内存中的目标应用程序与加载到存储器中的初始应用程序一致;当两个校验和不同时,则表示存储器中的初始应用程序和预设的应用程序不一致,即存储器中的初始应用程序已出现错误,不能再以存储器中的初始应用程序为依据校验内存中的目标应用程序,而此时内存中的目标应用程序可靠性不能确定,所以需要停止所述嵌入式系统的运行。
当对软件系统进行在线更新时计算初始应用程序的校验和可能会与管理信息中的校验和不一致,但是,软件系统在线更新完成后,初始应用程序的校验和与管理信息中的校验和一致,不会变化。
实际实施中,计算初始应用程序的校验和的时间可能会与软件系统的在线更新的时间相冲突,所以可以设置当某次计算校验和与管理信息中的不一致时,可多次计算校验和,次数可根据实际情况进行设定,若达到设定的次数仍不相同时,就判定存储器中的初始应用程序错误;若最后几次计算都相同,就能说明此时系统正在更新,更新完成后,计算初始应用程序的检验和与管理信息中的相同,则说明初始应用程序正确,可以进行后续的对内存中的目标应用程序的校验步骤。
由上述可知,本发明实施例2提供的一种校验内存中应用程序的方法,还包括:当所述嵌入式系统空闲时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取所述存储器中存储的初始应用程序;计算获取的存储器中所述初始应用程序的校验和;判断所述存储器中初始应用程序的校验和与管理信息中预设的校验和是否相同,如果相同,获取存储器中存储的初始应用程序,并且和在内存中缓存的目标应用程序进行比较;如果不同,判定存储器中的初始应用程序错误,发送停止所述嵌入式系统运行的信号停止所述嵌入式系统运行。采用本实施例的方法在对内存中的目标应用程序进行检验之前,对存储器中的初始应用程序进行校验,保证了存储器中初始应用程序的正确性和完整性,进而保证了内存中目标应用程序的正确性和完整性。
参见图5示出了本发明提供的一种校验内存中应用程序的方法实施例3的流程图,本流程图是在图1的步骤S101之前还包括:
步骤S107:当所述嵌入式系统开始运行,未启动运行任务时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取存储器中存储的初始应用程序;
为保证存储器中存储的初始应用程序与设定的应用程序一致,进而保证内存中的目标应用程序校验的准确性,需要先对存储器中的初始应用程序进行检验。当软件系统开始运行,但引导程序还未启动运行任务时,此时系统中有一段空闲时间段,利用这段空闲的时间段对存储器中的初始应用程序进行校验。
在管理信息中预设存储有初始应用程序的起始地址,该起始地址表示了初始应用程序在存储器中的起始位置,通过该预设的起始地址,就能在存储器中准确定位该初始应用程序的起始位置。
管理信息中还预设有该初始应用程序的大小,在存储器中定位了该初始应用程序的起始位置后,再依据该初始应用程序的大小就能在存储器得到该初始应用程序。
步骤S108:计算获取的存储器中所述初始应用程序代码的校验和;
得到存储器中的初始应用程序之后,依据组成初始应用程序的数据项进行校验和的计算,计算得到存储器中初始应用程序的校验和。
步骤S109:判断存储器中初始应用程序的校验和与管理信息中预设的校验和是否相同,如果相同,启动运行任务;如果不同,判定存储器中的初始应用程序错误,发送停止所述嵌入式系统运行的信号停止所述嵌入式系统运行。
计算得到存储器中初始应用程序的校验和后,和管理信息中预设的校验和进行比较:当两个校验和相同时,则表示存储器中的初始应用程序和预设的应用程序一致,后续的对内存中的目标应用程序进行校验就可实现内存中的目标应用程序与加载到存储器中的初始应用程序一致;当两个校验和不同时,则表示存储器中的初始应用程序和预设的应用程序不一致,即存储器中的初始应用程序已出现错误,不能再以存储器中的初始应用程序为依据校验内存中的目标应用程序,而此时内存中的目标应用程序可靠性不能确认,所以需要停止所述嵌入式系统的运行。
当对软件系统进行在线更新时计算初始应用程序的校验和可能会与管理信息中的校验和不一致,但是,软件系统在线更新完成后,初始应用程序的校验和与管理信息中的校验和一致,不会变化。
实际实施中,计算初始应用程序的校验和的时间可能会与软件系统的在线更新的时间相冲突,所以可以设置当某次计算校验和与管理信息中的不一致时,可多次计算校验和,次数可根据实际情况进行设定,若达到设定的次数仍不相同时,就判定存储器中的初始应用程序错误;若最后几次计算都相同,就能说明此时系统正在更新,更新完成后,计算初始应用程序的检验和与管理信息中的相同,则说明初始应用程序正确,可以进行后续的对内存中的目标应用程序的校验步骤。
由上述可知,本发明实施例3提供的一种校验内存中应用程序的方法,还包括:当所述嵌入式系统开始运行,未启动运行任务时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取存储器中存储的初始应用程序;计算获取的存储器中所述初始应用程序的校验和;判断存储器中初始应用程序的校验和与管理信息中预设的校验和是否相同,如果相同,启动运行任务;如果不同,判定存储器中的初始应用程序错误,发送停止所述嵌入式系统运行的信号停止所述嵌入式系统运行。采用本实施例的方法在嵌入式系统开始运行,未启动运行任务时,对存储器中的初始应用程序进行校验,保证了存储器中初始应用程序的正确性和完整性,在后续的应用程序运行过程中,进而保证了内存中目标应用程序的正确性和完整性。
与上述的一种校验内存中应用程序的方法实施例相对应的,本发明还提供了一种校验内存中应用程序的装置实施例。
参见图6示出了本发明提供的一种校验内存中应用程序的装置实施例1的结构示意图,包括:第一判断器101、比较器102和第二判断器103。
其中,所述第一判断器101用于判断所述嵌入式软件是否空闲;
为了不影响嵌入式软件的运行,不阻碍应用程序的正常运行,本发明提供的校验内存中应用程序的方法是在嵌入式软件中没有应用程序任务运行时,即利用系统中的空闲时间段进行的。
因此需要首先第一判断器101判断嵌入式系统中是不是有应用程序任务正在运行,如果有,继续进行应用程序任务的运行,如果没有,比较器102进行后续的校验步骤。
其中,所述比较器102用于当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对;
比较器102获取存储器中存储的初始应用程序代码,对内存中的应用程序代码进行校验。
所述存储器中存储的与所述目标应用程序相对应的初始应用程序中预设有管理信息,所述管理信息包括:所述初始应用程序在存储器中的起始地址、所述初始应用程序的大小、所述初始应用程序的校验和。
在将该应用程序写入存储器中时,将该应用程序在存储器中的起始地址、大小及其校验和存储到管理信息中,即管理信息中有存储到存储器中的所述初始应用程序最初的属性信息。
比较器102依据管理信息的内容获取存储器中存储的初始应用程序代码,对内存中的应用程序代码进行校验。
参见图7所示的一具体结构示意图,所述比较器102包括:获取模块1021、划分模块1022和比较模块1023。
所述获取模块1021用于依据所述管理信息中预设的所述存储器中的初始应用程序的起始地址和所述初始应用程序的大小,在所述存储器中获取所述初始应用程序;再依据该应用程序的大小就能准确在存储器得到该应用程序。
获取模块1021首先依据所述管理信息中预设的应用程序的起始地址在所述存储器中定位所述应用程序的起始位置;
在管理信息中预设存储有应用程序的起始地址,该起始地址表示了应用程序在存储器中的起始位置,通过该预设的起始地址,获取模块1021首先能在存储器中准确定位该应用程序的起始位置;管理信息中还预设有该应用程序的大小,在存储器中定位了该应用程序的起始位置后,获取模块1021进而依据该应用程序的大小就能准确在存储器得到该应用程序。
其中,所述划分模块1022用于依据预设的比较长度,将所述存储器中的初始应用程序划分为至少一个原代码段,将所述内存中对应的目标应用程序划分为与所述原代码段对应的比较代码段;
所述划分模块1022用于依据预设的比较长度,将所述存储器中的初始应用程序代码划分为至少一个原代码段;
当初始应用程序较短时,可直接进行比较,将所述存储器中的初始应用程序代码视为一个原代码段;当初始应用程序较长时,需要划分模块1022将存储器中的初始应用程序代码划分为多个原代码段。
同理,依据预设的比较长度,划分模块1022将内存中的目标应用程序划分为与所述原代码段对应的比较代码段。
所述比较模块1023用于依次对所述原代码段和所述比较代码段进行比较。
所述比较模块1023依次对所述原代码段和比较代码段进行比较,当任一原代码段和与所述原代码段对应的比较代码段不相同时,判定所述内存中的目标应用程序代码错误。
比较模块1023分别对获取的存储器中的第一个原代码段和内存中对应的比较代码段进行比较,当二者完全相同时,比较模块1023依次分别获取下一个原代码段和比较代码段进行比较,当二者完全相同时,比较模块1023继续获取下一个原代码段和比较代码段进行比较,以此类推,直至所有的原代码段和比较代码段比较完成。
其中,所述第二判断器103用于当所述内存中缓存的目标应用程序与所述存储器中的初始应用程序不满足预设比对条件时,判定所述内存中的目标应用程序错误。
预设的比对条件是目标应用程序和初始应用程序相同。
理论上,内存中存储的目标应用程序代码应该与存储器中的初始应用程序代码完全相同,这样,系统中每次运行的该应用程序是存储器中的目标应用程序,而当内存中存储的目标应用程序代码和存储器中的初始应用程序代码不相同时,系统在运行该目标应用程序时,可能会导致各种问题,不能达到设置该应用程序时想要达到的运行目的。
当比较过程中出现原代码段和与之相对应的比较代码段不同的时候,说明与存储器中存储的初始应用程序相比,比较代码段代表的内存中存储的目标应用程序代码被更改过,出现了错误。
所以当目标应用程序和初始应用程序不同时,所述第二判断器103判定所述内存中的目标应用程序错误。
由于嵌入式系统中可能存在多个应用程序,需要对每个存储在内存中目标应用程序分别进行校验,所以可对各个目标应用程序进行排序,使用频率较高的排在前面,优先进行校验,比如当系统中存在应用程序1、应用程序2和应用程序3,使用频率由高到低为应用程序3、应用程序1和应用程序2,当系统中出现空闲时间段时,首先对应用程序3对应的存储内存中的目标应用程序3进行校验,然后是校验应用程序1对应的存储内存中的目标应用程序1,最后校验应用程序2对应的存储内存中的目标应用程序2;
也可优先对即将运行的应用程序排在前面,优先进行校验,比如当系统中存在应用程序4、应用程序5和应用程序6,当系统运行完应用程序4之后,一段空闲时间段后再运行应用程序5,在这段空闲时间段中可对应用程序进行校验,此时即将运行的应用程序为应用程序5,首先对应用程序5对应的存储内存中的目标应用程序5进行校验,时间充裕的话,继续对应用程序6对应的存储内存中的目标应用程序6进行校验,以此类推;
对多个应用程序校验的先后顺序的设置条件可视具体情况设定。
参见图8示出了本发明提供的一种校验内存中应用程序的装置实施例1的另一种结构示意图,本结构是在图5的结构中还包括:刷新器104。
其中,所述刷新器104用于当判定所述内存中的目标应用程序错误时,依据所述存储器中的初始应用程序对所述内存中缓存的目标应用程序进行刷新。
当内存中存储的目标应用程序代码和存储器中的初始应用程序代码不相同时,即内存中存储的目标应用程序错误时,系统在运行该目标应用程序时,可能会导致各种问题,不能达到设置该应用程序时想要达到的运行目的。因此,需要刷新器104依据所述存储器中存储的初始应用程序代码将内存中的目标应用程序代码刷新,使内存中的目标应用程序代码再次与存储器中存储的初始应用程序代码相同,系统运行该目标应用程序时,就能达到设置该应用程序时想要达到的运行目的。
由上述可知,本发明实施例1提供的一种校验内存中应用程序的装置,包括:第一判断器,用于判断所述嵌入式软件是否空闲;比较器,用于当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对;第二判断器,用于当所述内存中缓存的目标应用程序与所述存储器中的初始应用程序不满足预设比对条件时,判定所述内存中的目标应用程序错误。刷新器,用于当判定所述内存中的目标应用程序错误时,依据所述存储器中的初始应用程序对所述内存中缓存的目标应用程序进行刷新。采用本实施例的装置,能够在软件系统空闲的时候,对内存中存储的应用程序进行检验刷新,保证了内存中存储的应用程序与存储器中的应用程序一致,系统运行该应用程序时,就能达到设置该应用程序时想要达到的运行目的,提高应用程序运行的正确性和完整性。
参见图9示出了本发明提供的一种校验内存中应用程序的装置实施例2的结构示意图,本装置在图1的基础上还包括:校验器105和发送器106。
其中,所述校验器105用于当所述嵌入式系统空闲时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取存储器中存储的初始应用程序,计算获取的存储器中所述初始应用程序的校验和,并判断所述存储器中初始应用程序的校验和与管理信息中预设的校验和是否相同;
当软件系统运行过程中有空闲时,此时校验器105开始对存储器中的初始应用程序进行校验,为保证存储器中存储的初始应用程序与设定的应用程序一致,进而保证内存中的目标应用程序校验的准确性,需要先对存储器中的初始应用程序进行检验。
同理,当软件系统开始运行,但还未启动运行任务时,此时系统中有一段空闲时间段,校验器105也可以利用这段空闲的时间段对存储器中的初始应用程序进行校验。
在管理信息中预设存储有初始应用程序的起始地址,该起始地址表示了初始应用程序在存储器中的起始位置,通过该预设的起始地址,校验器105就能在存储器中准确定位该初始应用程序的起始位置。
管理信息中还预设有该初始应用程序的大小,在存储器中定位了该初始应用程序的起始位置后,再依据该初始应用程序的大小,校验器105在存储器得到该初始应用程序。
校验和在数据处理和数据通信领域中,用于校验目的的一组数据项的和。这些数据项可以是数值或在计算检验的过程中看作数字的其它字符串。
校验器105得到存储器中的初始应用程序之后,依据组成初始应用程序的数据项进行校验和的计算,计算得到存储器中初始应用程序的校验和。
在管理信息中还预设有该应用程序的校验和,该预设的校验和是在该初始应用程序编辑过程中就计算得出的,而且将该初始应用程序加载入软件系统中后,对软件系统进行更新过程中校验和可能会有变化,但是,软件系统在线更新完成后,校验和与最初的校验和即管理信息中的校验和一致,不会变化。
校验器105计算得到存储器中初始应用程序的校验和后,和管理信息中预设的校验和进行比较:当两个校验和相同时,则表示存储器中的初始应用程序和预设的应用程序一致,后续的对内存中的目标应用程序进行校验就可实现内存中的目标应用程序与加载到存储器中的初始应用程序一致;当两个校验和不同时,则表示存储器中的初始应用程序和预设的应用程序不一致,即存储器中的初始应用程序已出现错误,不能再以存储器中的初始应用程序为依据校验内存中的目标应用程序,而此时内存中的目标应用程序可靠性不能确认,所以需要停止所述嵌入式系统的运行。
实际实施中,校验器105计算初始应用程序的校验和的时间可能会与软件系统的在线更新的时间相冲突,所以可以在校验器105设置当某次计算校验和与管理信息中的不一致时,可多次计算校验和,次数可根据实际情况进行设定,若达到设定的次数仍不相同时,就判定存储器中的初始应用程序错误;若最后几次计算都相同,就能说明此时系统正在更新,更新完成后,计算初始应用程序的检验和与管理信息中的相同,则说明初始应用程序正确,可以进行后续比较器102的对内存中的目标应用程序的校验步骤。
其中,所述发送器106用于当校验器判定存储器中初始应用程序的校验和与管理信息中预设的校验和不同时,发送停止所述嵌入式系统运行的信号。
校验器105计算得到存储器中初始应用程序的校验和后,和管理信息中预设的校验和进行比较,当两个校验和不同时,则表示存储器中的初始应用程序和预设的应用程序不一致,即存储器中的初始应用程序已出现错误,不能再以存储器中的初始应用程序为依据校验内存中的目标应用程序,而此时内存中的目标应用程序可靠性不能确认,所以需要停止所述嵌入式系统的运行,发送器106发送停止所述嵌入式系统运行的信号,使得该嵌入式软件停止运行。
由上述可知,本发明实施例2提供的一种校验内存中应用程序的装置,还包括:校验器,用于当所述嵌入式系统空闲时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取存储器中存储的初始应用程序,计算获取的存储器中所述初始应用程序的校验和,并判断所述存储器中初始应用程序的校验和与管理信息中预设的校验和是否相同;发送器,用于当校验器判定存储器中初始应用程序的校验和与管理信息中预设的校验和不同时,发送停止所述嵌入式系统运行的信号。采用本实施例的装置在对内存中的应用程序进行检验之前和/或当软件系统开始运行,但还未启动运行任务时,对存储器中的应用程序进行校验,保证了存储器中应用程序的正确,进而保证了内存中应用程序的正确。
实际实施中,本发明提供的方法也可视为一个运行任务,在应用到的嵌入式软件中使用优先级最低的任务。一般情况下,在初始任务完成常规处理后,本方法也可视为一个运行任务,该运行任务就处于最低优先级,只有当系统空闲时,才会运行该运行任务。本发明追加一个死循环,在循环中执行该运行任务。一旦有运行任务,跳出该死循环,进行任务运行。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种校验内存中应用程序的方法,其特征在于,所述方法应用于嵌入式系统中,包括:
当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对;
当所述内存中缓存的目标应用程序与所述存储器中的初始应用程序不满足预设比对条件时,判定所述内存中的目标应用程序错误。
2.根据权利要求1所述的方法,其特征在于,还包括:
当判定所述内存中的目标应用程序错误时,依据所述存储器中的初始应用程序对所述内存中缓存的目标应用程序进行刷新。
3.根据权利要求1所述的方法,其特征在于,所述存储器中存储的与所述目标应用程序相对应的初始应用程序中预设有管理信息,所述管理信息包括:所述初始应用程序在存储器中的起始地址、所述初始应用程序的大小、和所述初始应用程序的校验和。
4.根据权利要求3所述的方法,其特征在于,所述当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对包括:
依据所述管理信息中预设的所述存储器中的初始应用程序的起始地址和所述初始应用程序的大小,在所述存储器中获取所述初始应用程序;
依据预设的比较长度,将所述存储器中的初始应用程序划分为至少一个原代码段,将所述内存中对应的目标应用程序划分为与所述原代码段对应的比较代码段;
依次对所述原代码段和所述比较代码段进行比较。
5.根据权利要求3所述的方法,其特征在于,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对之前还包括:
当所述嵌入式系统空闲时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取所述存储器中存储的初始应用程序;
计算获取的存储器中所述初始应用程序的校验和;
判断所述存储器中初始应用程序的校验和与管理信息中预设的校验和是否相同,如果相同,获取存储器中存储的初始应用程序,并且和在内存中缓存的目标应用程序进行比较;如果不同,判定存储器中的初始应用程序错误,发送停止所述嵌入式系统运行的信号停止所述嵌入式系统运行。
6.根据权利要求3所述的方法,其特征在于,还包括:
当所述嵌入式系统开始运行,未启动运行任务时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取存储器中存储的初始应用程序;
计算获取的存储器中所述初始应用程序的校验和;
判断存储器中初始应用程序的校验和与管理信息中预设的校验和是否相同,如果相同,启动运行任务;如果不同,判定存储器中的初始应用程序错误,发送停止所述嵌入式系统运行的信号停止所述嵌入式系统运行。
7.一种校验内存中应用程序的装置,其特征在于,所述装置应用于嵌入式系统中,包括:
第一判断器,用于判断所述嵌入式软件是否空闲;
比较器,用于当所述嵌入式系统空闲时,将内存中缓存的目标应用程序与存储器中存储的与所述目标应用程序相对应的初始应用程序进行比对;
第二判断器,用于当所述内存中缓存的目标应用程序与所述存储器中的初始应用程序不满足预设比对条件时,判定所述内存中的目标应用程序错误。
8.根据权利要求7所述的装置,其特征在于,还包括:
刷新器,用于当判定所述内存中的目标应用程序错误时,依据所述存储器中的初始应用程序对所述内存中缓存的目标应用程序进行刷新。
9.根据权利要求7所述的装置,其特征在于,所述比较器包括:
获取模块,用于依据所述管理信息中预设的所述存储器中的初始应用程序的起始地址和所述初始应用程序的大小,在所述存储器中获取所述初始应用程序;
划分模块,用于依据预设的比较长度,将所述存储器中的初始应用程序划分为至少一个原代码段,将所述内存中对应的目标应用程序划分为与所述原代码段对应的比较代码段;
比较模块,用于依次对所述原代码段和所述比较代码段进行比较。
10.根据权利要求7所述的装置,其特征在于,还包括:
校验器,用于当所述嵌入式系统空闲时,依据管理信息中预设的所述存储器中的初始应用程序的起始地址和大小获取存储器中存储的初始应用程序,计算获取的存储器中所述初始应用程序的校验和,并判断所述存储器中初始应用程序的校验和与管理信息中预设的校验和是否相同;
发送器,用于当检验器判定存储器中初始应用程序的校验和与管理信息中预设的校验和不同时,发送停止所述嵌入式系统运行的信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210313176.3A CN102799494B (zh) | 2012-08-29 | 2012-08-29 | 一种校验内存中应用程序的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210313176.3A CN102799494B (zh) | 2012-08-29 | 2012-08-29 | 一种校验内存中应用程序的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102799494A true CN102799494A (zh) | 2012-11-28 |
CN102799494B CN102799494B (zh) | 2015-11-11 |
Family
ID=47198608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210313176.3A Active CN102799494B (zh) | 2012-08-29 | 2012-08-29 | 一种校验内存中应用程序的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102799494B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885852A (zh) * | 2013-03-01 | 2014-06-25 | 上海富欣智能交通控制有限公司 | 通过校核字来检查ram的方法 |
CN104035833A (zh) * | 2013-03-07 | 2014-09-10 | 联发科技股份有限公司 | 校验机器可读代码完整性的方法及系统 |
CN104281071A (zh) * | 2013-07-05 | 2015-01-14 | 广州汽车集团股份有限公司 | 一种ecu的启动方法和ecu启动系统 |
CN104898637A (zh) * | 2015-03-27 | 2015-09-09 | 北京经纬恒润科技有限公司 | 一种汽车控制器的自刷新方法及系统 |
CN110222501A (zh) * | 2019-05-31 | 2019-09-10 | 河南思维轨道交通技术研究院有限公司 | 一种运行时代码的检查方法、存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851826A (zh) * | 2006-01-25 | 2006-10-25 | 华为技术有限公司 | 随机存储器失效的检测处理方法及其系统 |
CN101295278A (zh) * | 2007-04-23 | 2008-10-29 | 大唐移动通信设备有限公司 | 定位被改写代码段所在进程的方法及装置 |
CN101901174A (zh) * | 2010-07-28 | 2010-12-01 | 西安交通大学 | 基于代码段多副本对比机制提高程序可靠性方法 |
US20120030543A1 (en) * | 2010-07-30 | 2012-02-02 | International Business Machines Corporation | Protection of application in memory |
-
2012
- 2012-08-29 CN CN201210313176.3A patent/CN102799494B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851826A (zh) * | 2006-01-25 | 2006-10-25 | 华为技术有限公司 | 随机存储器失效的检测处理方法及其系统 |
CN101295278A (zh) * | 2007-04-23 | 2008-10-29 | 大唐移动通信设备有限公司 | 定位被改写代码段所在进程的方法及装置 |
CN101901174A (zh) * | 2010-07-28 | 2010-12-01 | 西安交通大学 | 基于代码段多副本对比机制提高程序可靠性方法 |
US20120030543A1 (en) * | 2010-07-30 | 2012-02-02 | International Business Machines Corporation | Protection of application in memory |
CN102346715A (zh) * | 2010-07-30 | 2012-02-08 | 国际商业机器公司 | 保护内存中应用程序的方法、内存控制器和处理器 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885852A (zh) * | 2013-03-01 | 2014-06-25 | 上海富欣智能交通控制有限公司 | 通过校核字来检查ram的方法 |
CN103885852B (zh) * | 2013-03-01 | 2017-03-15 | 上海富欣智能交通控制有限公司 | 通过校核字来检查ram的方法 |
CN104035833A (zh) * | 2013-03-07 | 2014-09-10 | 联发科技股份有限公司 | 校验机器可读代码完整性的方法及系统 |
CN104281071A (zh) * | 2013-07-05 | 2015-01-14 | 广州汽车集团股份有限公司 | 一种ecu的启动方法和ecu启动系统 |
CN104281071B (zh) * | 2013-07-05 | 2017-07-11 | 广州汽车集团股份有限公司 | 一种ecu的启动方法和ecu启动系统 |
CN104898637A (zh) * | 2015-03-27 | 2015-09-09 | 北京经纬恒润科技有限公司 | 一种汽车控制器的自刷新方法及系统 |
CN104898637B (zh) * | 2015-03-27 | 2017-11-10 | 北京经纬恒润科技有限公司 | 一种汽车控制器的自刷新方法及系统 |
CN110222501A (zh) * | 2019-05-31 | 2019-09-10 | 河南思维轨道交通技术研究院有限公司 | 一种运行时代码的检查方法、存储介质 |
CN110222501B (zh) * | 2019-05-31 | 2023-05-12 | 河南思维轨道交通技术研究院有限公司 | 一种运行时代码的检查方法、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102799494B (zh) | 2015-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106020865B (zh) | 一种系统升级方法和装置 | |
CN102799494A (zh) | 一种校验内存中应用程序的方法和装置 | |
CN109117168A (zh) | 无人机固件更新方法、装置、无人机及存储介质 | |
CN111124517B (zh) | 嵌入式芯片引导启动方法、装置、计算机设备和存储介质 | |
CN102760090B (zh) | 除错方法及计算机系统 | |
CN102662715B (zh) | 一种嵌入式操作系统启动方法 | |
CN101510161A (zh) | 一种引导程序的实现方法、装置和便携式电子设备 | |
CN102270144A (zh) | 嵌入式网络设备及其更新固件的方法 | |
CN1971536A (zh) | 基本输入输出系统的纠错系统及方法 | |
CN108874582A (zh) | 一种系统恢复方法、装置及终端 | |
CN111552491A (zh) | 移动载体的中转设备的固件升级的方法、装置与存储介质 | |
CN105677409B (zh) | 一种系统升级方法及装置 | |
CN103019722A (zh) | 一种抽取Java网络应用升级包的方法及装置 | |
CN109766140A (zh) | 一种机顶盒启动异常的定位方法及装置 | |
CN104461880A (zh) | 一种嵌入式系统中自动检测内存越界的方法及系统 | |
CN108196975B (zh) | 基于多校验和的数据验证方法、装置及存储介质 | |
CN109766207A (zh) | 固件远程升级的恢复方法、装置、监控设备和存储介质 | |
CN102968319A (zh) | VxWorks映像的加载方法 | |
CN108647119A (zh) | Linux系统的启动方法、装置及设备 | |
CN113360161A (zh) | 资源升级方法及相关产品 | |
CN106444730B (zh) | 一种防软件僵死的电子控制单元的诊断方法 | |
CN113672260B (zh) | 一种处理器cpu初始化方法 | |
CN103294606A (zh) | 一种分配内存及检测内存溢出的方法和装置 | |
CN109683980B (zh) | 实现轨旁安全平台u盘配置文件可靠装载的方法 | |
CN112181444A (zh) | 一种基于1553b总线的dsp多核数据烧写方法 |
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 |