STM32
直播中

李芳

7年用户 1441经验值
私信 关注
[问答]

求助,关于STM32上开发函数调用堆栈回溯的问题求解

1、STM32f1系列
2、上了FreeRTOS
3、想开发函数调用回溯功能
在编译选项中增加了--use_frame_pointer,编程一个正常的程序(之前一直run的),测试发现,程序启动即crash,请问有没有高手之前遇到过?

回帖(1)

李艳

2024-5-10 17:12:01
首先,我们来分析一下问题。您在STM32F1系列上使用了FreeRTOS,并在编译选项中增加了`--use_frame_pointer`以实现函数调用堆栈回溯功能。然而,在尝试运行程序时,程序启动即崩溃。

要解决这个问题,我们可以按照以下步骤进行:

1. 确保您的FreeRTOS配置正确。检查您的FreeRTOS配置文件(通常是`FreeRTOSConfig.h`),确保所有设置都是正确的,特别是与堆栈相关的设置。

2. 检查您的启动文件。确保您的启动文件(通常是`startup_stm32f10x_md.s`或类似文件)正确地设置了堆栈指针。如果堆栈指针设置不正确,程序可能会在启动时崩溃。

3. 检查您的中断向量表。确保中断向量表正确地指向了您的中断处理函数。如果中断向量表设置不正确,程序可能会在启动时崩溃。

4. 检查您的堆栈大小。确保您为每个任务分配了足够的堆栈空间。如果堆栈空间不足,程序可能会在启动时崩溃。

5. 检查您的代码中是否有内存泄漏或其他问题。这些问题可能导致程序在启动时崩溃。

6. 如果以上步骤都无法解决问题,您可以尝试暂时移除`--use_frame_pointer`选项,看看程序是否能够正常运行。如果移除该选项后程序能够正常运行,那么可能是您的编译器或工具链与该选项不兼容。在这种情况下,您可能需要寻找其他方法来实现函数调用堆栈回溯功能。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分