栈用于保存变量, 随着函数调用深度和变量的数量而变化. 设置小了会出现栈溢出, 设置大了会浪费.
利用率获取
RT-THREAD的统计方法是将线程栈都填充为’#’, 当需要的时候, 检查是否被修改为其他值.
利用率 = 已使用 / 栈大小.
#if defined(ARCH_CPU_STACK_GROWS_UPWARD)
ptr = (rt_uint8_t *)thread->stack_addr + thread->stack_size - 1;
while (*ptr == '#')ptr --;
rt_kprintf(" 0x%08x 0x%08x %02d%% 0x%08x %03d\n",
((rt_ubase_t)thread->sp - (rt_ubase_t)thread->stack_addr),
thread->stack_size,
((rt_ubase_t)ptr - (rt_ubase_t)thread->stack_addr) * 100 / thread->stack_size,
thread->remaining_tick,
thread->error);