0

我正在 STM32 上使用 FreeRTOS 开发多线程应用程序。当我尝试使用 OpenOCD 和 gdb 对其进行调试时,我可以使用除主循环之外的所有线程进行调试。

>>> info threads
  Id   Target Id         Frame 
  6    Thread 536892936 (cli) vTaskSuspend (xTaskToSuspend=<optimized out>) at /home/user1273684/dev/firmware/module/FreeRTOS/Source/tasks.c:1620
  5    Thread 536888728 (wifi_loop) vTaskSuspend (xTaskToSuspend=<optimized out>) at /home/user1273684/dev/firmware/module/FreeRTOS/Source/tasks.c:1620
  4    Thread 536884824 (Tmr Svc) xTaskResumeAll () at /home/user1273684/dev/firmware/module/FreeRTOS/Source/tasks.c:2126
  3    Thread 536905240 (main_loop) 0x00000000 in ?? ()
  2    Thread 536879832 (wifi_watchdog) xTaskResumeAll () at /home/user1273684/dev/firmware/module/FreeRTOS/Source/tasks.c:2126
* 1    Thread 536882960 (IDLE :  : Running) prvIdleTask (pvParameters=<optimized out>) at /home/user1273684/dev/firmware/module/FreeRTOS/Source/tasks.c:3145
>>> thread 3
[Switching to thread 3 (Thread 536905240)]
#0  0x00000000 in ?? ()
>>> bt
#0  0x00000000 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

我尝试增加堆栈大小(vTaskList()说有足够的空间,configCHECK_FOR_STACK_OVERFLOW设置为 2 并且vApplicationStackOverflowHook()从不触发)但没有任何更改。

2017-06-20 10:34:34,217 - INFO # cli                R   1   922     5
2017-06-20 10:34:34,217 - INFO # IDLE               R   0   235     2
2017-06-20 10:34:34,218 - INFO # wifi_watchdog      B   1   231     8
2017-06-20 10:34:34,218 - INFO # main_loop          B   2   2879    6
2017-06-20 10:34:34,218 - INFO # Tmr Svc            S   4   320     3
2017-06-20 10:34:34,218 - INFO # wifi_loop          S   3   627     4

这里发生了什么?

4

0 回答 0