CN106354635A - 一种嵌入式设备的程序代码段自检方法及装置 - Google Patents
一种嵌入式设备的程序代码段自检方法及装置 Download PDFInfo
- Publication number
- CN106354635A CN106354635A CN201610727513.1A CN201610727513A CN106354635A CN 106354635 A CN106354635 A CN 106354635A CN 201610727513 A CN201610727513 A CN 201610727513A CN 106354635 A CN106354635 A CN 106354635A
- Authority
- CN
- China
- Prior art keywords
- self
- program code
- data
- inspection
- threshold value
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种嵌入式设备的程序代码段自检方法及装置,属于嵌入式***应用技术领域,方法包括如下步骤:解析目标文件,获取记录程序代码区的内存定位信息、代码区长度,并将整个程序代码在内存中的备份区进行备份;程序运行时,实时比较检测程序运行区和备份区数据;处理比较结果,若一致,则数据正常;若不一致,则数据异常,并告警。加入程序代码段自检功能之后,使设备能够在运行过程中实时检测程序代码段,并及时发现异常情况,一旦有异常情况发生,设备会将异常情况记录并报警,帮助现场工作人员能尽快的定位并解决问题,避免问题的扩大而造成不可挽回的损失。
Description
技术领域
本发明属于嵌入式***应用技术领域,具体涉及一种嵌入式设备的程序代码段自检方法及装置。
背景技术
嵌入式设备的可靠性和实时性一般要求都很高,任何情况下都要保证设备的可靠动作,提高设备的可靠性和实时性是嵌入式产品设计的重点工作。由于一些不可预测的因素或者是没有发现的潜在危险导致程序代码段异常,可能导致设备产生不可预知的危险,在这种情况下很难保证设备动作的可靠性,甚至会对***造成严重的后果。
发明内容
本发明的目的是提供一种嵌入式设备的程序代码段自检方法,用以解决嵌入式设备程序代码段运行时出错的问题。
为解决上述技术问题,本发明提供一种嵌入式设备的程序代码段自检方法,步骤包括:
1)解析目标文件,获取记录程序代码区的内存定位信息、代码区长度,并将整个程序代码在内存中的备份区进行备份;
2)程序运行时,实时比较检测程序运行区和备份区数据;
3)处理比较结果,若一致,则数据正常;若不一致,则数据异常,并告警。
进一步地,还包括实时检测并判定CPU负荷情况,用于设定程序代码段自检任务门槛值的步骤,所述门槛值包括监测时间间隔和数据自检粒度;CPU负荷增大时,减小数据自检粒度和/或增大监测时间间隔;CPU负荷减小时,增大数据自检粒度和/或减小监测时间间隔。
进一步地,设定门槛值时,将CPU负荷的变化分为若干个范围,每个范围对应一个门槛值。
进一步地,还包括数据异常时,将异常情况写入报告的步骤。
本发明还提供一种嵌入式设备的程序代码段自检装置,包括如下模块:用于解析目标文件,获取记录程序代码区的内存定位信息、代码区长度,并将整个程序代码在内存中的备份区进行备份的模块;用于程序运行时,实时比较检测程序运行区和备份区数据的模块;用于处理比较结果,若一致,则数据正常;若不一致,则数据异常,并告警的模块。
进一步地,还包括用于实时检测并判定CPU负荷情况,用于设定程序代码段自检任务门槛值的模块,所述门槛值包括监测时间间隔和数据自检粒度;CPU负荷增大时,减小数据自检粒度和/或增大检测时间间隔;CPU负荷减小时,增大数据自检粒度和/或减小监测时间间隔。
进一步地,设定门槛值时,将CPU负荷变化分为若干个范围,每个范围对应一个门槛值。
进一步地,还包括用于数据异常时,将异常情况写入报告的模块。
本发明的有益效果是:在解析目标文件时将程序代码区在制定的内存做备份,在设备运行时实时比较检测程序运行区和备份数据。加入的程序代码段自检功能,使设备能够在运行过程中实时检测程序代码段,并及时发现异常情况,一旦发现异常,设备会将异常情况记录并告警;帮助现场工作人员尽快的定位并解决问题,保证了设备运行的安全性和可靠性,避免问题的扩大而造成不可挽回的损失。
附图说明
图1是程序代码段自检任务流程图;
图2是CPU占用率检测任务流程图。
具体实施方式
下面结合附图说明,对本发明进行进一步详细说明。
本发明提供一种嵌入式设备的程序代码段自检方法,具体实施步骤如图1所示。
首先,初始化需要解析的目标文件和自检任务门槛的默认值。解析目标文件得到程序代码段的地址和大小,并将程序代码段的数据复制到一个指定的内存位置,作为备份代码区。自定义自检任务门槛的默认值,包括监测时间间隔和数据自检粒度。在此实施例中,监测时间间隔默认值设置为10ms,数据自检粒度默认值设置为128字节。
然后,进行程序代码段检测任务。设备运行时,实时比较程序运行区代码段和备份区代码段的128字节的二进制数据,实现对代码段的检测。没有异常就检测下一128字节的数据,如果发现异常则告警并将异常情况写入报告,使现场人员及时发现异常,并方便技术人员准确定位异常并改正错误。
其中,在设备运行时,代码段自检任务会根据CPU的负荷情况来设定代码段自检的门槛值,门槛值包括监测时间间隔和数据自检粒度,做到在不影响设备性能的情况下保证设备运行的安全性和可靠性。具体CPU占用率检测任务方法如图2所示。
在初始化阶段,记录一段固定延时的时间间隔,此时其他任务都没有开始运行,可获取一个比较精确的标准参照时间间隔。该任务运行期间,记录一段固定延时的时间间隔(和该任务初始化时的间隔一样),设备运行期间,该任务的优先级最低,只要有其他任务运行,该任务就会被打断去执行其他任务,直到其他任务都执行完毕并处于挂起状态,该任务才会被继续执行。CPU任务越多,执行越频繁,实际统计的时间间隔就越长。将标准参照时间间隔和该时间间隔比较就能够得到CPU的占有率,知道CPU的负荷大小。
当CPU负荷比较大时,当前CPU任务比较繁重,调用更改程序代码段自检任务门槛的接口,将程序代码段自检任务的数据自检粒度减小或者监测时间间隔增大,或者同时减小数据自检粒度和增大监测时间间隔,通过此方法来降低自检速度,使得程序代码段任务尽量小的减少对CPU的消耗。
当CPU负荷比较小时,当前CPU任务比较轻松,调用更改程序代码段自检任务门槛的接口,将程序代码段自检任务的数据自检粒度增大或者监测时间间隔减小,或者同时增大数据自检粒度和减小监测时间间隔,通过此方法来提高自检速度。
可具体设置为:当CPU占有率小于30%时候,CPU自检任务调用更改程序代码段自检任务门槛的接口,将程序代码段自检任务的监测时间间隔改为2ms、数据自检粒度改为256字节;当CPU占有率在30%~60%之间的时候,将门槛都恢复默认值;当CPU占有率大于60%时候,CPU自检任务调用更改程序代码段自检任务门槛的接口,将程序代码段自检任务监测时间间隔改为20ms、数据自检粒度改为64字节。
在上述实施例中,将CPU负荷情况分为三个范围,即30%以下、30%~60%之间、60%以上,每一个范围对应一个门槛值,即30%以下门槛值为监测时间间隔2ms、数据自检粒度256字节;30%~60%之间门槛值为监测时间间隔10ms、数据自检粒度128字节;60%以上为监测时间间隔20ms、数据自检粒度64字节。作为其他实施方式,可根据实际情况,将CPU负荷情况进一步细分成更多的范围,对应更多的门槛值,甚至是每个CPU负荷值对应一个门槛值,此时可以通过直接计算或者查表来确定门槛值。
本发明还提供一种嵌入式设备的程序代码段自检装置,包括如下模块:用于解析目标文件,获取记录程序代码区的内存定位信息、代码区长度,并将整个程序代码在内存中的备份区进行备份的模块;用于程序运行时,实时比较检测程序运行区和备份区数据的模块;用于处理比较结果,若一致,则数据正常;若不一致,则数据异常,并告警的模块。
上述嵌入式设备的程序代码段自检装置,实际上是基于本发明方法流程的一种计算机解决方案,即一种软件构架,上述各种模块即为与方法流程相对应的各处理进程或程序。由于对上述方法的介绍已经足够清楚完整,故对该装置不再进行详细描述。
Claims (8)
1.一种嵌入式设备的程序代码段自检方法,其特征在于,包括如下步骤:
1)解析目标文件,获取记录程序代码区的内存定位信息、代码区长度,并将整个程序代码在内存中的备份区进行备份;
2)程序运行时,实时比较检测程序运行区和备份区数据;
3)处理比较结果,若一致,则数据正常;若不一致,则数据异常,并告警。
2.根据权利要求1所述的嵌入式设备的程序代码段自检方法,其特征在于,还包括实时检测并判定CPU负荷情况,用于设定程序代码段自检任务门槛值的步骤,所述门槛值包括监测时间间隔和数据自检粒度;CPU负荷增大时,减小数据自检粒度和/或增大监测时间间隔;CPU负荷减小时,增大数据自检粒度和/或减小监测时间间隔。
3.根据权利要求2所述的嵌入式设备的程序代码段自检方法,其特征在于,设定门槛值时,将CPU负荷的变化分为若干个范围,每个范围对应一个门槛值。
4.根据权利要求1所述的嵌入式设备的程序代码段自检方法,其特征在于,还包括数据异常时,将异常情况写入报告的步骤。
5.一种嵌入式设备的程序代码段自检装置,其特征在于,包括如下模块:
1)用于解析目标文件,获取记录程序代码区的内存定位信息、代码区长度,并将整个程序代码在内存中的备份区进行备份的模块;
2)用于程序运行时,实时比较检测程序运行区和备份区数据的模块;
3)用于处理比较结果,若一致,则数据正常;若不一致,则数据异常,并告警的模块。
6.根据权利要求5所述的嵌入式设备的程序代码段自检装置,其特征在于,还包括用于实时检测并判定CPU负荷情况,用于设定程序代码段自检任务门槛值的模块,所述门槛值包括监测时间间隔和数据自检粒度;CPU负荷增大时,减小数据自检粒度和/或增大检测时间间隔;CPU负荷减小时,增大数据自检粒度和/或减小监测时间间隔。
7.根据权利要求6所述的嵌入式设备的程序代码段自检装置,其特征在于,设定门槛值时,将CPU负荷变化分为若干个范围,每个范围对应一个门槛值。
8.根据权利要求5所述的嵌入式设备的程序代码段自检装置,其特征在于,还包括用于数据异常时,将异常情况写入报告的模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610727513.1A CN106354635B (zh) | 2016-08-25 | 2016-08-25 | 一种嵌入式设备的程序代码段自检方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610727513.1A CN106354635B (zh) | 2016-08-25 | 2016-08-25 | 一种嵌入式设备的程序代码段自检方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106354635A true CN106354635A (zh) | 2017-01-25 |
CN106354635B CN106354635B (zh) | 2018-11-09 |
Family
ID=57854227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610727513.1A Active CN106354635B (zh) | 2016-08-25 | 2016-08-25 | 一种嵌入式设备的程序代码段自检方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106354635B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766267A (zh) * | 2018-12-15 | 2019-05-17 | 中国平安人寿保险股份有限公司 | Cpu高耗代码定位方法、装置、电子设备及存储介质 |
CN111027072A (zh) * | 2019-12-20 | 2020-04-17 | 北京安天网络安全技术有限公司 | Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1908909A (zh) * | 2006-08-24 | 2007-02-07 | 无敌科技(西安)有限公司 | 一种开机程序备援***及其方法 |
US7191445B2 (en) * | 2001-08-31 | 2007-03-13 | Texas Instruments Incorporated | Method using embedded real-time analysis components with corresponding real-time operating system software objects |
CN102520974A (zh) * | 2011-10-26 | 2012-06-27 | 京信通信***(中国)有限公司 | 自动恢复直放站射频数据表的方法及装置 |
CN104298599A (zh) * | 2014-10-21 | 2015-01-21 | 卡斯柯信号有限公司 | 嵌入式软件运行时故障的在线自检与切片恢复方法及装置 |
CN104572414A (zh) * | 2014-12-23 | 2015-04-29 | 深圳市邦彦信息技术有限公司 | 一种用于vxWorks的CPU占用率检测方法和*** |
-
2016
- 2016-08-25 CN CN201610727513.1A patent/CN106354635B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7191445B2 (en) * | 2001-08-31 | 2007-03-13 | Texas Instruments Incorporated | Method using embedded real-time analysis components with corresponding real-time operating system software objects |
CN1908909A (zh) * | 2006-08-24 | 2007-02-07 | 无敌科技(西安)有限公司 | 一种开机程序备援***及其方法 |
CN102520974A (zh) * | 2011-10-26 | 2012-06-27 | 京信通信***(中国)有限公司 | 自动恢复直放站射频数据表的方法及装置 |
CN104298599A (zh) * | 2014-10-21 | 2015-01-21 | 卡斯柯信号有限公司 | 嵌入式软件运行时故障的在线自检与切片恢复方法及装置 |
CN104572414A (zh) * | 2014-12-23 | 2015-04-29 | 深圳市邦彦信息技术有限公司 | 一种用于vxWorks的CPU占用率检测方法和*** |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766267A (zh) * | 2018-12-15 | 2019-05-17 | 中国平安人寿保险股份有限公司 | Cpu高耗代码定位方法、装置、电子设备及存储介质 |
CN111027072A (zh) * | 2019-12-20 | 2020-04-17 | 北京安天网络安全技术有限公司 | Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置 |
CN111027072B (zh) * | 2019-12-20 | 2024-02-27 | 北京安天网络安全技术有限公司 | Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106354635B (zh) | 2018-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11138056B2 (en) | System and method for unsupervised prediction of machine failures | |
US10579453B2 (en) | Stream-processing data | |
WO2020052147A1 (zh) | 监测设备故障检测方法及装置 | |
US11403551B2 (en) | System and method for validating unsupervised machine learning models | |
CN113658414B (zh) | 矿场设备故障预警方法、装置、终端设备及存储介质 | |
EP3355197B1 (en) | Fault processing method, related apparatus, and computer | |
CN110708204A (zh) | 一种基于运维知识库的异常处理方法、***、终端及介质 | |
US11933695B2 (en) | System and method for detecting anomalies in sensory data of industrial machines located within a predetermined proximity | |
US20210240178A1 (en) | System and method for recognizing and forecasting anomalous sensory behavioral patterns of a machine | |
CN108170581A (zh) | 一种故障预警方法、装置及电子设备 | |
CN104044969A (zh) | 电梯故障预警方法和*** | |
WO2019019429A1 (zh) | 一种虚拟机异常检测方法、装置、设备及存储介质 | |
CN104331310A (zh) | 一种后台应用一键化安装方法及*** | |
CN114676019B (zh) | 一种中央处理器状态监测方法、装置、设备、存储介质 | |
CN106354635A (zh) | 一种嵌入式设备的程序代码段自检方法及装置 | |
KR20150007913A (ko) | 고장 예측 장치 | |
CN111310778A (zh) | 检测装置、检测方法以及记录检测程序的记录介质 | |
CN117313019B (zh) | 一种基于深度强化学习的数据异常检测方法 | |
CN112534371A (zh) | 优化用于监视工业机器操作的机器学习算法的准确度 | |
CN116415851A (zh) | 一种基于深度学习的设施运维性态指标智能识别评价方法 | |
CN111193617B (zh) | 网页篡改识别方法、装置、电子设备及存储介质 | |
JP2012088887A (ja) | トレースデータ取得装置、トレースデータ取得装置のトレースデータ取得方法およびデバッグシステム | |
CN114755036A (zh) | 磁浮列车悬浮***的故障检测方法、装置、设备及介质 | |
CN103678095A (zh) | 一种告警检测方法 | |
CN100369009C (zh) | 使用***管理中断信号的监控***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |