feedforward 发表于 2021-12-26 22:13:51

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

近日准备用Code::Blocks + OpenOCD调试STM32,众所周知,想通过IDE单步调试必须关掉优化,否则在程序中打的断点和程序实际停留的位置不一致,以为优化后的二进制代码和打断点的源代码不再是一一对应的了.
在menuconfig中Suppress Optimization 后编译运行nuttx发现执行任何nsh都会死,将nuttx烧写进flash问题依旧.

为了排查问题,将debug选项打开,以便输出调试信息:

编译后再次运行nuttx,执行nsh命令,输出的调试信息如下:


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


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




页: [1]
查看完整版本: STM32禁止优化后nsh命令执行异常问题