| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- # Macros to help debugging on RP2040 and other mbed-os / RTX targets using Black Magic Probe
- # Loosely based upon https://github.com/pyocd/pyOCD/pull/392/files
- # Get a thread backtrace from hardfault context
- define hardfault_backtrace
- set $sp = $psp
- bt
- end
- # List current threads
- define threads
- set $t = &osRtxInfo.thread
- thread_print_chain $t->run.curr "RUN "
- thread_print_chain $t->ready.thread_list "READY"
- thread_print_chain $t->delay_list "DELAY"
- thread_print_chain $t->wait_list "WAIT "
- printf "Use thread_bt 0x... to show thread backtrace\n"
- end
- define thread_print_chain
- set $p = $arg0
- while ($p != 0)
- printf "%-16s ", $p->name
- printf $arg1
- printf " 0x%08x\n", $p->sp
- set $p = $p->thread_next
- end
- end
- # Switch to different thread
- define thread_switch
- set $tsp=(uint32_t*)$arg0
- set $n_r0 =$r0
- set $n_r1 =$r1
- set $n_r2 =$r2
- set $n_r3 =$r3
- set $n_r4 =$r4
- set $n_r5 =$r5
- set $n_r6 =$r6
- set $n_r7 =$r7
- set $n_r8 =$r8
- set $n_r9 =$r9
- set $n_r10 =$r10
- set $n_r11 =$r11
- set $n_r12 =$r12
- set $n_sp =$sp
- set $n_lr =$lr
- set $n_pc =$pc
- set $n_xPSR=$xPSR
- set $r4 = $tsp[0]
- set $r5 = $tsp[1]
- set $r6 = $tsp[2]
- set $r7 = $tsp[3]
- set $r8 = $tsp[4]
- set $r9 = $tsp[5]
- set $r10 = $tsp[6]
- set $r11 = $tsp[7]
- set $r0 = $tsp[8]
- set $r1 = $tsp[9]
- set $r2 = $tsp[10]
- set $r3 = $tsp[11]
- set $r12 = $tsp[12]
- set $lr = $tsp[13]
- set $pc = $tsp[14]
- set $xPSR = $tsp[15]
- set $sp = &$tsp[16]
- echo Switched task, use thread_restore to return before continuing execution.\n
- end
- define thread_restore
- set $r0 =$n_r0
- set $r1 =$n_r1
- set $r2 =$n_r2
- set $r3 =$n_r3
- set $r4 =$n_r4
- set $r5 =$n_r5
- set $r6 =$n_r6
- set $r7 =$n_r7
- set $r8 =$n_r8
- set $r9 =$n_r9
- set $r10 =$n_r10
- set $r11 =$n_r11
- set $r12 =$n_r12
- set $sp =$n_sp
- set $lr =$n_lr
- set $pc =$n_pc
- set $xPSR=$n_xPSR
- end
- define thread_bt
- thread_switch $arg0
- bt
- thread_restore
- end
|