用于保护应用程序堆栈的方法技术

技术编号:37874495 阅读:6 留言:0更新日期:2023-06-15 21:03
本文公开了一种用于保护应用程序堆栈的方法,方法包括:由操作系统(OS)模块向与微控制单元(MCU)连接的应用程序堆栈指定附加堆栈虚拟;由MCU通过经由堆栈虚拟识别应用程序堆栈是否溢出来生成中断;以及由OS模块根据是否生成中断来执行对溢出的应用程序堆栈的保护措施。措施。措施。

【技术实现步骤摘要】
用于保护应用程序堆栈的方法


[0001]本公开的示例性实施例涉及一种用于保护应用程序堆栈的方法,更具体地,涉及一种用于通过为每个应用程序堆栈指定堆栈虚拟(Stack Dummy)并基于堆栈虚拟检查每个应用程序堆栈是否溢出以根据检查的结果关闭微控制单元(MCU)或恢复该应用程序堆栈来保护应用程序堆栈的方法。

技术介绍

[0002]通常,车载电子控制设备执行分配和释放RAM存储空间以执行各种类型的软件的操作。在这种操作期间,可能需要通过某个信号或命令将预定数据临时存储在存储器中。为此,在存储器上指定堆栈区域用于临时存储。
[0003]同时,术语“堆栈溢出”指的是特定任务使用分配给它的所有堆栈并侵入未分配给它存储自己信息的存储区域的现象。
[0004]即使应用程序堆栈溢出,取决于之前和之后的存储映射,也可能不会导致问题。因为编译器确定如何堆叠堆栈,用户也可能很难识别由堆栈导致的问题。
[0005]换句话说,即使堆栈溢出导致问题,因为对应区域的RAM部分没有被使用,也可能出现不知道问题的原因或者是否已经发生问题的情况。
[0006]然而,这可能会有问题,并且可能以后对系统产生重大影响。
[0007]本公开的相关技术公开于韩国专利申请公开No.10

2013

0060984(2013年6月10日),其标题为“METHOD OF MANAGING STACK IN MEMORY”。

技术实现思路

[0008]各种实施例涉及一种通过为每个应用程序堆栈指定堆栈虚拟并基于堆栈虚拟检查每个应用程序堆栈是否溢出以根据检查的结果关闭MCU或恢复该应用程序堆栈来保护应用程序堆栈的方法。
[0009]在一个实施例中,提供了一种用于保护应用程序堆栈的方法,包括:由操作系统(OS)模块向与微控制单元(MCU)连接的应用程序堆栈指定附加堆栈虚拟;由MCU通过经由堆栈虚拟识别应用程序堆栈是否溢出来生成中断;以及由OS模块根据是否生成中断来执行对溢出的应用程序堆栈的保护措施。
[0010]由操作系统(OS)模块指定附加堆栈虚拟可以包括由OS模块通过编译器指定应用程序堆栈,由OS模块基于应用程序堆栈的符号指定应用程序堆栈中的堆栈虚拟区域,以及由OS模块为堆栈虚拟区域指定堆栈虚拟符号。
[0011]由MCU生成中断可以包括由OS模块激活用于每个堆栈虚拟的存储器保护单元(MPU)功能,由MCU根据应用程序堆栈是否溢出来生成存储器保护告警,以及当生成存储器保护告警时,由OS模块调用的中断处理器检查溢出的应用程序堆栈。
[0012]在由OS模块激活存储器保护单元(MPU)功能时,OS模块可以将堆栈虚拟放置在MPU区域中并启用MPU区域。
[0013]由中断处理器检查溢出的应用程序堆栈可以包括通过检查生成存储器保护告警的堆栈虚拟符号的区域来检测溢出的应用程序堆栈。
[0014]由中断处理器检查溢出的应用程序堆栈可以包括检查应用程序堆栈是否溢出,或者多个应用程序堆栈中的哪一个是否溢出。
[0015]由OS模块执行对溢出的应用程序堆栈的保护措施可以包括根据用户请求选择性地执行保护措施。
[0016]选择性地执行保护措施可以包括关闭MCU。
[0017]选择性地执行保护措施可以包括恢复应用程序堆栈。
[0018]选择性地执行保护措施可以包括强制终止使用应用程序堆栈的上下文,然后重新启动应用程序。
[0019]从上面的描述中可以明显看出,根据本公开的用于保护应用程序堆栈的方法为每个应用程序堆栈指定堆栈虚拟,并基于堆栈虚拟检查每个应用程序堆栈是否溢出,以根据检查的结果关闭MCU或恢复该应用程序堆栈。
[0020]用于保护应用程序堆栈的方法使得用户能够识别堆栈溢出以采取堆栈保护动作,即使该堆栈溢出不会引起问题,从而防止由于将来可能发生的堆栈溢出而导致的系统故障。
附图说明
[0021]图1是示出根据本公开的实施例的用于保护应用程序堆栈的装置的框图。
[0022]图2是示出根据本公开的实施例的为每个应用程序堆栈指定虚拟区域的示例的示图。
[0023]图3是示出根据本公开的实施例的在MPU区域中放置虚拟区域并且激活MPU的示例的示图。
[0024]图4是示出根据本公开的实施例的堆栈溢出检测的示例的示图。
[0025]图5是示出根据本公开的实施例的应用程序堆栈恢复的示例的示图。
[0026]图6是示出根据本公开的实施例的用于恢复应用程序堆栈的方法的流程图。
具体实施方式
[0027]以下,将参考附图详细描述根据本公开的实施例的用于保护应用程序堆栈的方法。应认识到,为了清楚和方便描述,附图中每条线的粗细或每个组件的尺寸可能会被夸大。此外,本文中使用的术语是考虑本公开的功能来限定的,并且这些术语可以根据用户或操作者的意图或实践来改变。因此,这些术语应基于本文所阐述的全部公开内容来限定。
[0028]图1是示出根据本公开的实施例的用于保护应用程序堆栈的装置的框图。图2是示出根据本公开的实施例的为每个应用程序堆栈指定虚拟区域的示例的示图。图3是示出根据本公开的实施例的在MPU区域中放置虚拟区域并且激活MPU的示例的示图。图4是示出根据本公开的实施例的堆栈溢出检测的示例的示图。
[0029]参考图1,根据本公开的实施例的用于保护应用程序堆栈的装置包括微控制单元(MCU)10和操作系统(OS)模块20。
[0030]OS模块20通过编译器指定应用程序堆栈。
[0031]编译器向OS模块提供用于指定MCU 10内部的存储区域中的应用程序堆栈区域的信息。在这种情况下,编译器在应用程序堆栈区域中指定诸如Stack_Top和Stack_Bottom的符号。
[0032]当编译器指定诸如Stack_Top和Stack_Bottom的符号时,OS模块20向诸如Stack_Top和Stack_Bottom的符号中的至少一个指定堆栈虚拟区域。
[0033]尽管可以以用户直接指定存储器的方式来设置堆栈虚拟区域,但也可以如上所述通过应用程序堆栈的符号来指定。
[0034]参考图2,OS模块20可以通过向应用程序堆栈的Stack_Top和Stack_Bottom添加设置字节来指定堆栈虚拟区域。
[0035]例如,OS模块20可以以应用程序堆栈的Stack_Top+8字节或Stack_Bottom+8字节的形式来指定堆栈虚拟区域。
[0036]当堆栈虚拟区域被指定给应用程序堆栈时,OS模块20将堆栈虚拟区域的存储器地址值限定为堆栈虚拟符号。
[0037]在这种情况下,OS模块20收集关于每个应用程序堆栈的堆栈信息,并将对应的堆栈虚拟区域的存储器地址值限定为堆栈虚拟符号。
[0038]图2示出了Stack_Dummy_1被限定为应用程序堆栈1的堆栈虚拟符号并且Stack_Dummy_2被限定为应用程序堆栈2本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于保护应用程序堆栈的方法,所述方法包括:由操作系统模块向与微控制单元连接的应用程序堆栈指定附加堆栈虚拟;由所述微控制单元通过经由所述堆栈虚拟识别所述应用程序堆栈是否溢出来生成中断;以及由所述操作系统模块根据是否生成所述中断来执行对溢出的应用程序堆栈的保护措施。2.根据权利要求1所述的方法,其中,由操作系统模块指定附加堆栈虚拟包括:由所述操作系统模块通过编译器指定所述应用程序堆栈;由所述操作系统模块基于所述应用程序堆栈的符号指定所述应用程序堆栈中的堆栈虚拟区域;以及由所述操作系统模块为所述堆栈虚拟区域指定堆栈虚拟符号。3.根据权利要求1所述的方法,其中,由所述微控制单元生成中断包括:由所述操作系统模块激活用于每个堆栈虚拟的存储器保护单元功能;由所述微控制单元根据所述应用程序堆栈是否溢出来生成存储器保护告警;以及当生成所述存储器保护告警时,由所述操作系统模块调用的中断处理器检查所述溢出的应用程序堆栈。4.根据权利要求3所述的方法,其中,在由所述操作系统模...

【专利技术属性】
技术研发人员:赵俊镐
申请(专利权)人:现代奥特奥博株式会社
类型:发明
国别省市:

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

1