System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 堆栈的最大使用率的监控方法、装置和车辆制造方法及图纸_技高网

堆栈的最大使用率的监控方法、装置和车辆制造方法及图纸

技术编号:42886683 阅读:2 留言:0更新日期:2024-09-30 15:08
本申请提供了一种堆栈的最大使用率的监控方法、装置和车辆,该方法包括:将多个动态密码依次交替填充至堆栈,得到填充后堆栈,任意两个动态密码不相同;获取使用后堆栈,使用后堆栈为被使用后的填充后堆栈;按照栈顶地址向栈底地址的顺序,将使用后堆栈的数据与填充后堆栈的数据一一进行比对,得到待检查地址,待检查地址为第一个数据相同的堆栈地址;根据待检查地址计算最大使用率,最大使用率为堆栈的最大占用空间与堆栈的空间的比值;在最大使用率大于预定阈值的情况下,进行报警或者异常中断,解决了现有技术中堆栈溢出导致单片机运行异常的问题。

【技术实现步骤摘要】

本专利技术涉及堆栈,具体而言,涉及一种堆栈的最大使用率的监控方法、装置、计算机程序产品和车辆。


技术介绍

1、在单片机运行系统中,函数运行时的内部逻辑运算通常需要局部变量参与计算,根据单片机设计原理,局部变量不会生成固定的地址,占有指定的ram区,而是在函数运行过程中存储在堆栈中,在函数运行结束时,将本函数所用的堆栈空间再释放出来。但实际单片机的运行并不是单纯的某一个函数运行,会存在一个函数调用另一个函数这种多层嵌套的情况,在此情况下就会使用更多的堆栈空间,但堆栈空间的大小是一定的,当调用情况比较恶劣的情况下,会发生堆栈空间用尽或者是用超的极端情况,单片机运行逻辑可能会发生异常,导致单片机运行异常,甚至单片机复位,这是十分危险的事件。为解决此类问题,周期检测当前堆栈的最大使用率,用户可以实时的监控堆栈使用率,基于此可以查看开启不同任务后堆栈使用率的增长情况,分析待优化的策略,当堆栈使用率超过设定的阈值时,由用户设计程序让其进入异常中断,在进入异常中断中查看函数的调用关系,分析优化策略。


技术实现思路

1、本申请的主要目的在于提供一种堆栈的最大使用率的监控方法、装置、计算机程序产品和车辆,以至少解决了现有技术中堆栈溢出导致单片机运行异常的问题。

2、为了实现上述目的,根据本申请的一个方面,提供了一种堆栈的最大使用率的监控方法,包括:将多个动态密码依次交替填充至堆栈,得到填充后堆栈,任意两个所述动态密码不相同;获取使用后堆栈,所述使用后堆栈为被使用后的所述填充后堆栈;按照栈顶地址向栈底地址的顺序,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到待检查地址,所述待检查地址为第一个数据相同的堆栈地址;根据所述待检查地址计算最大使用率,所述最大使用率为所述堆栈的最大占用空间与所述堆栈的空间的比值;在所述最大使用率大于预定阈值的情况下,进行报警或者异常中断。

3、可选地,所述动态密码包括多个动态密码固定码和一个动态密码动态码,多个所述动态密码固定码的值均不同,将多个动态密码依次交替填充至堆栈,得到填充后堆栈,包括:将所述动态密码动态码的值依次增加预定值,得到多个动态密码动态码;将多个所述动态密码固定码和多个所述动态密码动态码组成动态密码序列,所述动态密码序列中任意两个相邻的所述动态密码分别为所述动态密码固定码和所述动态密码动态码;按照所述栈底地址向所述栈顶地址的顺序,将所述动态密码序列的所述动态密码填充至所述堆栈,得到所述填充后堆栈。

4、可选地,按照栈顶地址向栈底地址的顺序,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到待检查地址,包括:在当前比对是第一次比对的情况下,按照所述栈顶地址向所述栈底地址的顺序,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到所述待检查地址。

5、可选地,按照栈顶地址向栈底地址的顺序,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到待检查地址,包括:在当前比对不是第一次比对的情况下,按照上一次的所述待检查地址向所述栈底地址的顺序,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到所述待检查地址。

6、可选地,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到所述待检查地址,包括:将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到第一预备堆栈地址和第二预备堆栈地址,所述第一预备堆栈地址为第一个所述动态密码相同的所述堆栈地址,所述第二预备堆栈地址为第二个所述动态密码相同的所述堆栈地址;在所述第一预备堆栈地址和所述第二预备堆栈地址相邻的情况下,确定所述第一预备堆栈地址为所述待检查地址。

7、可选地,根据所述待检查地址计算最大使用率,包括:将所述待检查地址代入计算得到所述最大使用率。

8、可选地,在根据所述待检查地址计算最大使用率之后,所述方法还包括:在所述最大使用率小于或者等于所述预定阈值的情况下,每间隔预定时长获取一次所述使用后堆栈,直至当前的所述使用后堆栈对应的所述最大使用率大于所述预定阈值,进行报警或者异常中断。

9、根据本申请的另一方面,提供了一种堆栈的最大使用率的监控装置,包括:第一处理单元,用于将多个动态密码依次交替填充至堆栈,得到填充后堆栈,任意两个所述动态密码不相同;获取单元,用于获取使用后堆栈,所述使用后堆栈为所述填充后堆栈被使用后的所述堆栈;第二处理单元,用于按照栈顶地址向栈底地址的顺序,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到待检查地址,所述待检查地址为第一个数据相同的堆栈地址;计算单元,用于根据所述待检查地址计算最大使用率,所述最大使用率为所述堆栈的最大占用空间与所述堆栈的空间的比值;预警单元,用于在所述最大使用率大于预定阈值的情况下,进行报警或者异常中断。

10、根据本申请的再一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现任意一种所述的方法。

11、根据本申请的又一方面,提供了一种车辆,包括:单片机,一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行任意一种所述的方法。

12、应用本申请的技术方案,上述堆栈的最大使用率的监控方法中,利用动态密码,从栈顶地址开始检索,查找当前时刻在堆栈中第一个未使用的堆栈地址,计算得到当前的堆栈使用率,最大使用率大于预定阈值的情况下,进行报警或者异常中断,防止单片机运行异常,解决了现有技术中堆栈溢出导致单片机运行异常的问题。

本文档来自技高网...

【技术保护点】

1.一种堆栈的最大使用率的监控方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述动态密码包括多个动态密码固定码和一个动态密码动态码,多个所述动态密码固定码的值均不同,将多个动态密码依次交替填充至堆栈,得到填充后堆栈,包括:

3.根据权利要求2所述的方法,其特征在于,按照栈顶地址向栈底地址的顺序,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到待检查地址,包括:

4.根据权利要求2所述的方法,其特征在于,按照栈顶地址向栈底地址的顺序,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到待检查地址,包括:

5.根据权利要求3或4所述的方法,其特征在于,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到所述待检查地址,包括:

6.根据权利要求1所述的方法,其特征在于,根据所述待检查地址计算最大使用率,包括:

7.根据权利要求1所述的方法,其特征在于,在根据所述待检查地址计算最大使用率之后,所述方法还包括:

8.一种堆栈的最大使用率的监控装置,其特征在于,包括:

9.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任意一项所述的方法。

10.一种车辆,其特征在于,包括:单片机,一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行权利要求1至7中任意一项所述的方法。

...

【技术特征摘要】

1.一种堆栈的最大使用率的监控方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述动态密码包括多个动态密码固定码和一个动态密码动态码,多个所述动态密码固定码的值均不同,将多个动态密码依次交替填充至堆栈,得到填充后堆栈,包括:

3.根据权利要求2所述的方法,其特征在于,按照栈顶地址向栈底地址的顺序,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到待检查地址,包括:

4.根据权利要求2所述的方法,其特征在于,按照栈顶地址向栈底地址的顺序,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进行比对,得到待检查地址,包括:

5.根据权利要求3或4所述的方法,其特征在于,将所述使用后堆栈的数据与所述填充后堆栈的数据一一进...

【专利技术属性】
技术研发人员:黄瑞霞刘硕田志彬商建伟郭琦陈洋
申请(专利权)人:潍柴动力股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1