前馈科技

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3303|回复: 0

STM32禁止优化后nsh命令执行异常问题

[复制链接]

97

主题

97

帖子

539

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
539
发表于 2021-12-26 22:13:51 | 显示全部楼层 |阅读模式
近日准备用Code::Blocks + OpenOCD调试STM32,众所周知,想通过IDE单步调试必须关掉优化,否则在程序中打的断点和程序实际停留的位置不一致,以为优化后的二进制代码和打断点的源代码不再是一一对应的了.
在menuconfig中Suppress Optimization 后编译运行nuttx发现执行任何nsh都会死,将nuttx烧写进flash问题依旧.
noopt1.png
为了排查问题,将debug选项打开,以便输出调试信息:
noopt2.png
编译后再次运行nuttx,执行nsh命令,输出的调试信息如下:
noopt4.png

根据提示,查了一圈也没找到所以然.但根据多年的经验判断是摸个堆栈分配小了导致堆栈溢出!
将menuconfig中的几个常用可配置堆栈选项依次试着调大,找了一圈后发现问题出在
RTOS Feature-->Tasks and Scheduling-->Main thread stack size
noopt5.png

将原来的1024改为2048,重新编译烧录后问题解决

noopt6.png


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|计算机控制

GMT+8, 2024-4-24 03:42 , Processed in 0.189760 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表