如何查找嵌入式软件设计中缺陷分析[3]

终端与业务 责任编辑:ainichp 2011-01-12

摘要:2.确定调用树中每个函数的堆栈用量。3.检查每棵调用树,确定从树根到外部“树叶”的哪条调用路径需要使用的堆栈最多。4.将每个独立线程调用树的最大堆栈用量相加。5.确定每个中断优先级内各中断服务程序(ISR)的最大堆栈用量并计算其总和。但是,如果ISR本身没有堆栈而使用被中断线程的堆栈,则应将ISR使用的最大堆栈数

  2. 确定调用树中每个函数的堆栈用量。

  3. 检查每棵调用树,确定从树根到外部“树叶”的哪条调用路径需要使用的堆栈最多。

  4. 将每个独立线程调用树的最大堆栈用量相加。

  5. 确定每个中断优先级内各中断服务程序(ISR)的最大堆栈用量并计算其总和。但是,如果ISR本身没有堆栈而使用被中断线程的堆栈,则应将ISR使用的最大堆栈数加到各线程堆栈之上。

  6. 对于每个优先级,加上中断发生时用来保存处理器状态的堆栈数。

  7.如果使用RTOS,则加上RTOS自身内部用途需要的最大堆栈数(与应用代码引发的系统调用不同,后者已包含在步骤2中)。

  除此之外,还有两个重要事项需要考虑。首先,仅仅从高级语言源代码建立的调用树很可能并不完善。大部分编译器采用运行时库(run-time library)来优化常用计算任务,如大值整数的乘除、浮点运算等,这些调用只在编译器产生的汇编语言中才可见。运行时库函数本身可能使用大量的堆栈空间,在分析时必须将它们包括进去。如果使用的是C++语言,则以下所有类型的函数(方法)也都必须包含到调用树内:结构器、析构器、重载运算符、复制结构器和转换函数。所有的函数指针也都必须进行解析,并且将它们调用的函数包含进分析之中。

[1]  [2]  [3]  

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

通信工程师备考资料免费领取

去领取

距离2025 通信工程师考试

还有
  • 1
  • 2
  • 0
专注在线职业教育24年

项目管理

信息系统项目管理师

厂商认证

信息系统项目管理师

信息系统项目管理师

!
咨询在线老师!