Wie visualisiere ich die Variablen in OpenSTM32? Ist es wie in Open STM Studio?

Ich programmiere ein Standard-STM32F407-Board unter Linux. Und ich suche nach einer Möglichkeit, die Variablen in einem Diagramm in einer OpenSTM32-Umgebung zu visualisieren.

Wie visualisiere ich die Variablen in OpenSTM32. Ist es wie in Open STM Studio?

Geben Sie hier die Bildbeschreibung ein

stackoverflow.com könnte ein besserer Ort sein, um diese Frage zu stellen, da Sie fragen, wie man etwas programmiert, was etwas mit Hardware zu tun hat .
Dieser openstm32.org/forumthread269 besagt, dass das Live-Variablen-Update noch nicht implementiert wurde. Eine Problemumgehung (oder ein Hack) besteht darin, eine App zu schreiben, die ein Telnet in OpenOcd ausführt, um eine Datenstruktur an einem festen Speicherort zu lesen (oder zu schreiben).

Antworten (1)

Ich arbeitete an der gleichen Sache. Hier, wie ich es gemacht habe (nicht der GUI-Teil).

Sie können OpenOCD und gdb zum Debuggen/Anzeigen von Variablen verwenden.

Starten Sie einen OpenOCD-Server:

sudo openocd -f /usr/local/share/openocd/scripts/board/st_nucleo_f4.cfg -c "init"

Ich nehme an, Sie arbeiten mit einem STM32F4DISCOVERY (STM32F407VG), also sollten Sie die stm32f4discovery.cfgKonfigurationsdatei verwenden.

Starten Sie nun gdb in einem anderen Terminal:

sudo gdb

Stellen Sie gdb Ihre Objektdatei (.elf/.axf) zur Verfügung, die Debug-Informationen, Symbole usw. enthält. Wenn Sie Keil uVision (MDK-ARM) verwenden, finden Sie die .axf-Datei im Ordner myProject/MDK-ARM/myProject/. Wenn Sie GNU Arm Embedded Toolchain verwenden, sollten Sie Ihr Programm als Debug-Programm kompilieren, damit der Compiler eine .elf-Datei im ../Build/Ordner generiert.

In der gdb-Konsole:

file ~/myProject/Build/myProgram.axf

Jetzt können Sie Ihre Variablen mit gdb nach Namen überwachen, da Sie die Objektdatei bereitgestellt haben.

Verbinden Sie sich von gdb mit dem OpenOCD-Server:

target remote localhost:3333

Sie können nun Ihre Variablen aus gdb mit sehen p myVar1, den Typ der Variablen mit ptype myVar1und die Adresse der Variablen mit info address myVar1Befehlen:

p myVar1

Hier ist ein einfaches Skript, das alle 1 Sekunde die gewünschten Variablen ausgibt. Sie können das Skript ausführen mit gdb --batch --command=script.gdb:

shell sudo openocd -f /usr/local/share/openocd/scripts/board/st_nucleo_f4.cfg -c "init" &> /dev/null &

file b/BUILD/NUCLEO_F446RE/GCC_ARM/b.elf

target remote localhost:3333

#monitor reset run

display myVar1
display myVar2

while(1)
    display
    shell sleep 1s

Code auf STM32:

uint32_t myVar1 = 0;
uint32_t myVar2 = 0;

int main(void){
    while(1){
        myVar1 +=1;
        myVar2 +=2;
    }
}
Führen Sie openocd oder gdb nicht als root aus. Verwenden Sie eine udev-Regel oder was auch immer, um Ihrem normalen Benutzer Zugriff auf den Debug-Adapter zu gewähren. Außerdem möchten Sie wahrscheinlich eine Zielversion von gdb, nicht die Hostversion.