|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于RTOS的应用中,每个任务都拥有自己的堆栈空间。堆栈设置过大,会造成内存资源浪费;设置过小,可能导致运行过程中的任务栈溢出,从而导致一些奇怪的系统行为。事实上,当应用程序行为“奇怪”时,我们首先想到的就是堆栈大小不足。 ?( Y1 m- g1 w. {! @% n
但任务所需的堆栈大小与具体应用相关,如何确定任务堆栈的大小?* Z$ a) X! D8 }; u2 c
● ● ● ● ● ● ● + n( R* z L4 p+ X
通过分析任务实现,我们可以通过手动计算的方法获取任务所需的堆栈空间: - G [- ]1 r/ ?7 t/ Z4 I
1. 所有函数嵌套调用所需的内存- J( H7 ~+ R( ]: g7 Q& a+ ~; V
对于每个层级的函数调用:
7 y7 K+ ]- N4 ?; O
, h2 ~& b4 ^- y9 u7 P5 g; q, d
, M, E% J/ W8 A2 S$ J( o( N# D6 @; X
. m( Y8 |0 R# i/ K3 H
6 [6 v& p5 ] c! _* h. d* V- y3 q7 i1 m5 [1 a; K. X* ~! }
- e1 g2 Y. I5 H; ?# `' ]2 c
: z& c* N- W# a% M7 Z1 O" m
: f, }% [& u; w" {9 G$ j& `+ o
9 {$ F3 Y9 p& S6 e" _
u9 |( ~3 Q* I) V9 V
. L) `1 b" Q, k+ F
8 T. [) |4 {1 |
4 _0 r! s \- s G! v. V' ^9 E
t0 O( k. M: D
. j# f* J) G6 g2 D% w! y0 W( G; c2 h+ }0 F6 M
|
|