重庆网站的建设现在哪个公司家庭网络好用
重庆网站的建设,现在哪个公司家庭网络好用,网页设计培训钱,网站 成品下载参考
stackflow相关讨论
原理
通过参考链接#xff0c;可知探测Stack的最大深度是先在stack中填充不常用的特定值#xff0c;然后实时检测这些值哪些发生了变化#xff0c;变化的表示使用到了这个空间#xff0c;如果程序完全遍历后#xff0c;有些值还是没变#xff…参考
stackflow相关讨论
原理
通过参考链接可知探测Stack的最大深度是先在stack中填充不常用的特定值然后实时检测这些值哪些发生了变化变化的表示使用到了这个空间如果程序完全遍历后有些值还是没变则表示这些空间是没有使用到的。本文是针对没有使用RTOS的情况下使用的即查看的是系统stack空间的使用情况。不过使用RTOS的任务栈也可以通过这种方式确认任务栈的使用情况但是一般RTOS都已经集成了这个功能不需要自己实现。
实现
先实现如下代码
// 在ARM-MDK中测试了其他IDE应该也是可以直接用的
// ARM-MDK 平台需要开启 MicroLib 选项
void stack_fill(void)
{#define STACK_SIZE (0x600)extern uint32_t __initial_sp;uint8_t buf[STACK_SIZE];memset(buf, 0x57, STACK_SIZE);LOG_DBG(stackTop[%p] bufAddr[%p] stack_area[last] [%d]\n, __initial_sp, buf, buf[STACK_SIZE-1]);
}在初始化完成后调用以上函数编译成功后烧录并进入仿真通过watch memory实时查看内存数据 然后全速运行程序查看还有哪些数据没有被改变就可以相应调整stack大小了比如
注意
在stack_fill()函数中需要根据实际需求更改STACK_SIZE的值要尽可能得填充所有当前剩余的栈空间但是不能超出剩余的栈空间。可以把这个函数先放在LOG使能后的地方查看一下__initial_sp栈顶地址是多少然后根据在startup.s文件中定义的stack size定义一个合理的STACK_SIZE值如果想要获得最大的栈使用空间就需要保证所有的代码都被遍历。这种方式只能看到已经运行代码的最大栈使用空间
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88340.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!