Breakpoints auf Variablen setzt man im MDK per Command Window (Debug
Session):
1 | BS READ myVar;
|
2 | BS WRITE myVar;
|
3 | BS READWRITE myVar;
|
Dafür wird auf dem Cortex-M eine von 4 Watchpoint Units verwendet
(Variablen im Logic Analyzer z.B. brauchen auch je eine).
Beim entsprechenden Zugriff auf "myVar" hält das Programm an.
Die Watchpoint Unit kann auch auf Vergleiche mit festen Werten einen
Breakpoint setzen:
1 | BS READ myVar == 0;
|
2 | BS WRITE myVar == 42;
|
3 | BS READWRITE myVar == 1;
|
Dafür werden 2 Watchpoint Units benötigt (Adress- und Daten-compare).
Mit dem JLink sollte das eig. auch funktionieren.
Für den ULINK / ULINK pro gibt es noch einen STOP/RUN Betrieb, welcher
grösser / kleiner Vergleiche erlaubt. Dafür wird ein
READ/WRITE/READWRITE Breakpoint gesetzt, und bei erreichen des BPs der
Wert der Variablen ausgelesen und mit der Condition / dem Value
verglichen. Wenn erfüllt -> STOP, wenn nicht erfüllt: RUN.
Wie bei allen Variablen, welche die Watchpoint Unit betreffen, müssen
auch diese global sein (ggf. local static), also eine feste
Speicheradresse haben.
VG,
/th.