公开/公告号CN112597503A
专利类型发明专利
公开/公告日2021-04-02
原文格式PDF
申请/专利权人 浙江中控技术股份有限公司;浙江中控自动化仪表有限公司;
申请/专利号CN202011519057.4
申请日2020-12-21
分类号G06F21/57(20130101);G06F21/51(20130101);
代理机构31236 上海汉声知识产权代理有限公司;
代理人胡晶
地址 310053 浙江省杭州市滨江区六和路309号中控科技园(高新区)
入库时间 2023-06-19 10:27:30
技术领域
本发明属于嵌入式系统技术领域,尤其涉及一种基于中断向量的固件检测方法与装置。
背景技术
在嵌入式系统中,保证可执行代码的正确性是十分重要的,它在系统可靠性中是不可或缺的。现有技术下,通常会先执行boot程序,通过boot程序获取固件的长度和校验码,经过计算后对固件进行校验,如果校验通过,则跳转到固件代码处执行;如果校验不通过,则不执行。
通常,boot程序是严重地依赖于硬件而实现的,特别是在嵌入式平台。boot是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。对于嵌入式系统,boot是基于特定硬件平台来实现的,因此,几乎不可能为所有的嵌入式系统建立一个通用的boot,不同的处理器架构都有不同的boot。boot不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的boot程序也能运行在另一块板子上,一般也都需要相应修改boot的源程序。因此,设计boot程序对一个嵌入式系统需要付出大量的研发成本、测试成本、生产成本(需要二次烧录)和维护成本,不利于产品的快速推出。
此外,在嵌入式系统中,由于部分CPU设计方面原因,无法支持boot程序,固件校验实现困难。
发明内容
本发明的技术目的是提供一种基于中断向量的固件检测方法与装置,以解决固件校验实现困难的技术问题。
为解决上述问题,本发明的技术方案为:
一种基于中断向量的固件检测方法,应用烧录于嵌入式系统的优化bin固件进行固件检测,优化bin固件包括用于实现固件自检的检测单元,包括如下步骤:
S1:启动嵌入式系统,进而运行校验单元对优化bin固件进行校验,获取优化bin固件的总字节数量记为N;
S2:将优化bin固件的N字节按每4字节组成一个无符号整形数据,将若干无符号整形数据进行累加得到累加和校验值记为V;
S3:判断累加和校验值V是否为0,若V等于0,则校验通过,若V不等于0,则判定ARM芯片存在异常。
进一步优选地,在步骤S1之前还包括构建优化bin固件,具体包括以下步骤:
A1:构建优化bin固件的校验单元和功能单元,校验单元用于实现固件检测,功能单元用于实现嵌入式系统正常运行;
A2:将检验单元和功能单元通过交叉编译得到bin固件;
A3:修改bin固件的中断向量,得到优化bin固件;
A4:将优化bin固件烧录至嵌入式系统中ARM芯片的ROM。
其中,在步骤A3中,修改bin固件的中断向量得到优化bin固件具体包括如下步骤:
B1:获取bin固件的总字节数量记为M,若M能被4整除,则令I=M,若M不能被4整除,则基于M通过计算公式得到I,其中,I为能被4整除的整数值;
计算公式为I=(M/4+1)×4,其中,/为相除取整符号;
B2:将bin固件基于补0方式将总字节数量M增加到I;
B3:获取ARM芯片中断向量地址m和n,将整数值I写入bin固件m字节处;
B4:将bin固件每4字节组成一个无符号整形数据,并将若干无符号整形数据累加得到数值O,将数值O按位取反并加上数值1获得数值P,将数值P写入bin固件n字节处,得到优化bin固件。
一种基于中断向量的固件检测的固件检测装置,包括:
数据获取模块,用于获取优化bin固件的总字节数量及数据;
数据处理模块,用于对获取的所述总字节数量进行数据处理,得到累加和校验值;
校验判断模块,用于判断累加和校验值是否为0,若为0,则校验通过,若不为0,则校验不通过。
一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行如权利要求1至3中任一项的基于中断向量的固件检测方法。
一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至3中任一项的基于中断向量的固件检测方法。
本发明由于采用以上技术方案,使其与现有技术相比具有以下的优点和积极效果:
本发明在固件中增加校验单元,代替常规的使用boot程序进行固件校验的方法,将bin固件中未使用到的中断向量地址用于储存待校验信息,不改变固件代码的结构,不通过外部存储器件获取固件的长度,因此本发明有设计简单,稳定可靠,无需运行boot程序,不改变固件文件结构,快速实现固件的校验,保证了代码的可靠执行的技术效果。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。
图1为本发明一个实施例中基于中断向量的固件检测方法流程示意图;
图2为本发明一个实施例中构建优化bin固件流程示意图;
图3为本发明一个实施例中修改bin固件的中断向量得到优化bin固件流程示意图;
图4为本发明一个实施例中基于中断向量的固件检测的固件检测装置示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
以下结合附图和具体实施例对本发明提出的一种基于中断向量的固件检测方法作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。
实施例1
参看图1,本实施例提供一种具体适用于STM32F10x系芯片的基于中断向量的固件检测方法。
首先参看图2,在步骤S1之前,构建含校验单元的bin固件,修改bin固件的中断向量,得到优化bin固件。具体地,构建校验单元和功能单元,校验单元用于实现对bin固件地校验,功能单元用于对STM32F10x系芯片的嵌入式系统提供软件支持,因此本实施例中bin固件包括校验单元和功能单元,将检验单元和功能单元通过交叉编译得到bin固件。
后续修改bin固件中保留的中断向量。参看图3,在本实施例中,获取bin固件的总字节数量记为M,若总字节数量M能被4整除,则令I=M,若M不能被4整除,则计算得到,即将M除以4取整数加上1后乘以4,I作为bin固件所需的总字节数,通过文件工具将bin固件基于补0方式将总字节数量M增加到I。
获取STM32F10x系芯片两个中断向量地址28至35,中断向量地址28至35是保留的中断向量,将总字节数I通过文件工具写入bin固件28-31字节处;将bin固件的总字节数I的每4字节组成一个无符号整形数据,并将若干无符号整形数据累加得到数值O,将数值O按位取反并加上数值1获得数值P,通过文件工具将数值P写入bin固件32至35字节处,最终得到优化bin固件。
接着,将得到的优化bin固件烧录至STM32F10x系芯片的ROM中。
参看图1,为STM32F10x系芯片上电启动,运行bin固件,此时,检测单元最先启动,对优化bin固件进行校验,开始固件检测流程。检测单元分别从STM32F10x系芯片ROM地址的第28-31字节处获取优化bin固件的总字节数量记为N。将优化bin固件的N字节按每4字节组成一个无符号整形数据,将若干无符号整形数据进行累加得到累加和校验值记为V。判断累加和校验值V是否为0,若V等于0,则校验通过,功能单元继续执行相应任务,若V不等于0,则校验未通过,可重新烧录进行判断,若仍未通过则判断该STM32F10x系芯片存在异常。
实施例2
参看图1,本实施例提供一种具体适用于LPC178x_7x系芯片基于中断向量的固件检测方法。
首先参看图2,在步骤S1之前,构建含校验单元的bin固件,修改bin固件的中断向量,得到优化bin固件。具体地,构建校验单元和功能单元,校验单元用于实现对bin固件地校验,功能单元用于对LPC178x_7x系芯片的嵌入式系统提供软件支持,因此本实施例中bin固件包括校验单元和功能单元,将检验单元和功能单元通过交叉编译得到bin固件。
后续修改bin固件中保留的中断向量。参看图3,在本实施例中,获取bin固件的总字节数量记为M,若总字节数量M能被4整除,则令I=M,若M不能被4整除,则计算得到,即将M除以4取整数加上1后乘以4,I作为bin固件所需的总字节数,通过文件工具将bin固件基于补0方式将总字节数量M增加到I。
获取LPC178x_7x系芯片两个中断向量地址28-35,中断向量地址28-32是保留的中断向量,将总字节数I通过文件工具写入bin固件28-31字节处;将bin固件的总字节数I的每4字节组成一个无符号整形数据,并将若干无符号整形数据累加得到数值O,将数值O按位取反并加上数值1获得数值P,通过文件工具将数值P写入bin固件32-35字节处,最终得到优化bin固件。
接着,将得到的优化bin固件烧录至LPC178x_7x系芯片的ROM中。
参看图1,为LPC178x_7x系芯片上电启动,运行bin固件,此时,检测单元最先启动,对优化bin固件进行校验,开始固件检测流程。检测单元分别从LPC178x_7x系芯片ROM地址的第28-31字节处获取优化bin固件的总字节数量记为N。将优化bin固件的N字节按每4字节组成一个无符号整形数据,将若干无符号整形数据进行累加得到累加和校验值记为V。判断累加和校验值V是否为0,若V等于0,则校验通过,功能单元继续执行相应任务,若V不等于0,则校验未通过,可重新烧录进行判断,若仍未通过则判断该LPC178x_7x系芯片存在异常。
实施例3
参看图1,本实施例提供一种具体适用于LPC111x、LPC11Cxx系芯片基于中断向量的固件检测方法。
首先参看图2,在步骤S1之间,构建含校验单元的bin固件,修改bin固件的中断向量,得到优化bin固件。具体地,构建校验单元和功能单元,校验单元用于实现对bin固件地校验,功能单元用于对本实施例芯片的嵌入式系统提供软件支持,因此本实施例中bin固件包括校验单元和功能单元,将检验单元和功能单元通过交叉编译得到bin固件。
后续修改bin固件中保留的中断向量。参看图3,在本实施例中,获取bin固件的总字节数量记为M,若总字节数量M能被4整除,则令I=M,若M不能被4整除,则计算得到,即将M除以4取整数加上1后乘以4,I作为bin固件所需的总字节数,通过文件工具将bin固件基于补0方式将总字节数量M增加到I。
获取本实施例芯片两个中断向量地址为字节数88-95处,中断向量地址88-95是保留的中断向量,将总字节数I通过文件工具写入bin固件88-91字节处;将bin固件的总字节数I的每4字节组成一个无符号整形数据,并将若干无符号整形数据累加得到数值O,将数值O按位取反并加上数值1获得数值P,通过文件工具将数值P写入bin固件92-95字节处,最终得到优化bin固件。
接着,将得到的优化bin固件烧录至本实施例芯片的ROM中。
最后,在步骤S3中,为LPC178x_7x系芯片上电启动,运行bin固件,此时,检测单元最先启动,对优化bin固件进行校验。检测单元分别从本实施例芯片ROM地址的第88-91字节处获取优化bin固件的总字节数量记为N。将优化bin固件的N字节按每4字节组成一个无符号整形数据,将若干无符号整形数据进行累加得到累加和校验值记为V。判断累加和校验值V是否为0,若V等于0,则校验通过,功能单元继续执行相应任务,若V不等于0,则校验未通过,可重新烧录进行判断,若仍未通过则判断该LPC178x_7x系芯片存在异常。
实施例4
参看图4,本实施例提供一种能够实现实施例1至3的一种基于中断向量的固件检测的固件检测装置,包括:
数据获取模块,用于获取优化bin固件的总字节数量及数据;
数据处理模块,用于对获取的所述总字节数量进行数据处理,得到累加和校验值;
校验判断模块,用于判断累加和校验值是否为0,若为0,则校验通过,若不为0,则校验不通过
实施例5
本实施例还提供一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行如权利要求1至3中任一项的基于中断向量的固件检测方法。
实施例6
本实施例还提供一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至3中任一项的基于中断向量的固件检测方法。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式。即使对本发明作出各种变化,倘若这些变化属于本发明权利要求及其等同技术的范围之内,则仍落入在本发明的保护范围之中。
机译: 一种基于新的基于盐酸的化合物,使用相同的试剂选择锌离子或乙酸根离子的方法,检测方法和检测装置
机译: 一种基于雷达的液位测量装置功能能力的检测方法
机译: 一种基于交流电压测量的悬架成员在远端均短路的电梯悬架布置中的劣化状态检测方法和装置