forked from BlueSCSI/BlueSCSI-v2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rp2040_gdb_macros
96 lines (88 loc) · 2.17 KB
/
rp2040_gdb_macros
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# 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