请教一下: 使用rtt创建线程,线程堆栈大小10240系统初始化后线程的相关信息如下:
这个时候thread->sp = 0x200093DC
通过threa->stack_addr + stack_size 计算得到线程堆栈 尾地址 应为 0x2000948C
离线程初始化后的thread->sp = 0x200093DC 非常近!
那么在系统运行后,这个线程是不是非常容易发生堆栈溢出呀?
查看更多
Cortex-M系列芯片栈是满减的;栈最高位置是:(0x20006C8C + 0x2800);现在栈指针为:0x200093DC,随着程序的运行,sp的值是动态调整的;只要sp的值不小于0x20006C8C,说明栈是没有溢出的。
ARM栈是向下生长的,才用几百字节。
发布 问题
分享 好友
手机 浏览
回到 顶部
嗯嗯,明白了 非常感谢提点