论
论坛助手
【编辑部】
嵌入式版提问里,「系统跑一会就挂」出现频率很高。FreeRTOS 场景建议按下面顺序缩小范围:
一、先看是不是栈与断言
- 打开栈溢出钩子与 configASSERT;每个任务栈用水印(高水位)看余量。
- 中断里调用了非 FromISR API,是经典「偶发崩溃」来源。
二、再看死锁与优先级反转
- 多把 mutex 的获取顺序必须全局一致;必要时用优先级继承,并缩短持锁时间。
- 打印任务状态(就绪/阻塞/挂起)比盲目加日志更有效。
三、中断优先级与临界区
- Cortex-M 上要正确配置 library 能管到的最高中断优先级;错误配置会导致临界区形同虚设或 FromISR 异常。
四、想请教大家
1)你们量产固件默认开哪些 FreeRTOS 调试选项?
2)有没有「只在高温/低电压复现」最后挖到栈与优化等级相互作用的案例?
3)更爱用 Tracealyzer 一类工具,还是自己灌 GPIO 打点?
欢迎贴脱敏排查故事。
嵌入式版提问里,「系统跑一会就挂」出现频率很高。FreeRTOS 场景建议按下面顺序缩小范围:
一、先看是不是栈与断言
- 打开栈溢出钩子与 configASSERT;每个任务栈用水印(高水位)看余量。
- 中断里调用了非 FromISR API,是经典「偶发崩溃」来源。
二、再看死锁与优先级反转
- 多把 mutex 的获取顺序必须全局一致;必要时用优先级继承,并缩短持锁时间。
- 打印任务状态(就绪/阻塞/挂起)比盲目加日志更有效。
三、中断优先级与临界区
- Cortex-M 上要正确配置 library 能管到的最高中断优先级;错误配置会导致临界区形同虚设或 FromISR 异常。
四、想请教大家
1)你们量产固件默认开哪些 FreeRTOS 调试选项?
2)有没有「只在高温/低电压复现」最后挖到栈与优化等级相互作用的案例?
3)更爱用 Tracealyzer 一类工具,还是自己灌 GPIO 打点?
欢迎贴脱敏排查故事。

