【技术实现步骤摘要】
本专利技术涉及一种用于分析嵌入式系统中堆栈使用的方法,具体说,本专利技术涉及一 种用于精确估计嵌入式系统中堆栈需求量的方法。
技术介绍
堆栈内存由程序开发人员静态进行分配。如果低估了堆栈的使用量,将会导致程 序运行出错;而过高的估计了堆栈的使用又将造成系统内存资源的浪费。堆栈分析器不仅 可以降低程序员开发程序的难度,还可以减少很多隐晦的错误。本专利技术全面分析了本领域内相关研究的进展情况,例如专利申请号 200810061578. 2设计了堆栈使用分析的一种方法。在该专利中,以可执行文件作为输入,进 行反汇编,基本块的堆栈分析,函数内的堆栈分析后,以程序的调用关系图为基础计算多线 程中的堆栈使用情况,专利申请号200810061578. 2还考虑了中断处理函数对堆栈大小的 影响,是一种实用的堆栈分析方法。然而在该专利中,并未考虑实时操作系统RT0S对堆栈 大小的影响,未考虑程序中可能调用的动态库和标准库对堆栈的影响。
技术实现思路
本专利技术的目的在于,为克服在嵌入式系统中对所用堆栈需求估计不准导致的系统 不稳定问题,从而提出。为了达到本专利技术提供一种用于精确估算最大堆栈使用量的堆栈方法,该专利技术详细 分析了程序运行时每个函数的堆栈使用量,统计了程序所调用的运行时库和标准库的堆栈 使用信息,同时还考虑了操作系统本身的运行对堆栈的影响,从而使得对程序最大堆栈使 用量的计算更为精确。一种用于估计嵌入式系统中堆栈需求量的方法,该方法用于精确估计嵌入式系统 程序运行过程中对堆栈空间的最大需求量,所述的方法包含如下步骤1)对目标二进制文件进行反汇编得到源汇编文件; ...
【技术保护点】
一种用于精确估计嵌入式系统中堆栈需求量的方法,该方法用于精确估计嵌入式系统程序运行过程中对堆栈空间的最大需求量,所述的方法包含如下步骤:1)对目标二进制文件进行反汇编得到源汇编文件;2)对汇编文件进行分析得到完整的函数调用关系图;3)根据步骤2得到的完整的函数调用关系图进行本地函数的堆栈需求量分析,并求和;4)根据步骤2得到的完整的函数调用关系图,统计每棵调用树所调用的运行时库的堆栈需求和标准库的堆栈需求量并求和;5)按照优先级进行中断函数的堆栈需求进行分析,确定每个优先级内各个中断程序的最大堆栈需求量并求和,再加上中断发生时,保存处理器状态而增加的额外堆栈需求量;6)对3、4和5步骤中的堆栈需求求和,统计出单线程程序的嵌入式系统的最大堆栈需求量;其中,步骤2)所述的完整的函数关系图步骤,具体包含:首先用控制流分析得到初步的函数关系图,然后针对间接调用函数和递归调用函数采取抽象解释算法的值分析方法进一步分析,对于无法分析的函数调用需要用户进行注释,得到完整的函数调用关系图。
【技术特征摘要】
一种用于精确估计嵌入式系统中堆栈需求量的方法,该方法用于精确估计嵌入式系统程序运行过程中对堆栈空间的最大需求量,所述的方法包含如下步骤1)对目标二进制文件进行反汇编得到源汇编文件;2)对汇编文件进行分析得到完整的函数调用关系图;3)根据步骤2得到的完整的函数调用关系图进行本地函数的堆栈需求量分析,并求和;4)根据步骤2得到的完整的函数调用关系图,统计每棵调用树所调用的运行时库的堆栈需求和标准库的堆栈需求量并求和;5)按照优先级进行中断函数的堆栈需求进行分析,确定每个优先级内各个中断程序的最大堆栈需求量并求和,再加上中断发生时,保存处理器状态而增加的额外堆栈需求量;6)对3、4和5步骤中的堆栈需求求和,统计出单线程程序的嵌入式系统的最大堆栈需求量;其中,步骤2)所述的完整的函数关系图步骤,具体包含首先用控制流分析得到初步的函数关系图,然后针对间接调用函数和递归调用函数采取抽象解释算法的值分析方法进一步分析,对于无法分析的函数调用需要用户进行注释,...
【专利技术属性】
技术研发人员:王东辉,王红梅,时磊,张铁军,
申请(专利权)人:中国科学院声学研究所,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。