Selaa lähdekoodia

[add] 打印index

rtthread_MCoreDump
huangyulong 5 kuukautta sitten
vanhempi
commit
3caed2009a
1 muutettua tiedostoa jossa 4 lisäystä ja 1 poistoa
  1. 4
    1
      Middlewares/MCoreDump/rtthread_port.c

+ 4
- 1
Middlewares/MCoreDump/rtthread_port.c Näytä tiedosto

222
             /* If this is the current thread, use current stack pointer */
222
             /* If this is the current thread, use current stack pointer */
223
             if (idx_l == current_idx)
223
             if (idx_l == current_idx)
224
             {
224
             {
225
+                uint32_t fpu_flag = 0;
225
                 addr = (rt_uint32_t)get_cur_core_regset_address()->sp;      // 异常中填充
226
                 addr = (rt_uint32_t)get_cur_core_regset_address()->sp;      // 异常中填充
226
                 memlen = (rt_uint32_t)thread->stack_addr + thread->stack_size - (rt_uint32_t)thread->sp;
227
                 memlen = (rt_uint32_t)thread->stack_addr + thread->stack_size - (rt_uint32_t)thread->sp;
227
                 addr -= STACK_CORE_REG_SIZE; // 异常中断里面已经压栈了但还没更新tcb里面的sp指针
228
                 addr -= STACK_CORE_REG_SIZE; // 异常中断里面已经压栈了但还没更新tcb里面的sp指针
228
                 memlen += STACK_CORE_REG_SIZE * 2; // 前后括大两倍:实际可能更多局部变量在死机前还没来得及向下增长sp
229
                 memlen += STACK_CORE_REG_SIZE * 2; // 前后括大两倍:实际可能更多局部变量在死机前还没来得及向下增长sp
229
 #if MCD_FPU_SUPPORT
230
 #if MCD_FPU_SUPPORT
230
                 /* Read FPU flag first - indicates if FPU context was saved */
231
                 /* Read FPU flag first - indicates if FPU context was saved */
231
-                uint32_t fpu_flag = *(uint32_t *)thread->sp;
232
+                fpu_flag = *(uint32_t *)thread->sp;
232
                 addr -= 1;
233
                 addr -= 1;
233
                 memlen += 1;
234
                 memlen += 1;
234
 
235
 
244
                     memlen = thread->stack_size;
245
                     memlen = thread->stack_size;
245
                 }
246
                 }
246
 
247
 
248
+                mcd_print("Thread index:%d (fpu:%d)\n", idx_l + 1, fpu_flag);
247
                 print_registers((void *)get_cur_core_regset_address(), get_cur_fp_regset_address(), thread->name);
249
                 print_registers((void *)get_cur_core_regset_address(), get_cur_fp_regset_address(), thread->name);
248
                 addr2line_cmd_with_pc_print((rt_uint32_t *)get_cur_core_regset_address()->pc, (uint32_t *)addr, memlen);
250
                 addr2line_cmd_with_pc_print((rt_uint32_t *)get_cur_core_regset_address()->pc, (uint32_t *)addr, memlen);
249
             }
251
             }
250
             else
252
             else
251
             {
253
             {
254
+                mcd_print("Thread index:%d\n", idx_l + 1);
252
                 addr = (rt_uint32_t)thread->sp;
255
                 addr = (rt_uint32_t)thread->sp;
253
                 memlen = (rt_uint32_t)thread->stack_addr + thread->stack_size - (rt_uint32_t)thread->sp;
256
                 memlen = (rt_uint32_t)thread->stack_addr + thread->stack_size - (rt_uint32_t)thread->sp;
254
                 core_regset_type core_regset;
257
                 core_regset_type core_regset;

Loading…
Peruuta
Tallenna