Estoy programando una placa STM32F407 estándar en Linux. Y estoy buscando una manera de visualizar las variables en un gráfico en un entorno OpenSTM32.
¿Cómo visualizo las variables en OpenSTM32? ¿Es como en Open STM Studio?
Estaba trabajando en lo mismo. Aquí cómo lo hice (no la parte GUI).
Puedes usar OpenOCD y gdb para depurar / ver variables.
Iniciar un servidor OpenOCD:
sudo openocd -f /usr/local/share/openocd/scripts/board/st_nucleo_f4.cfg -c "init"
Supongo que está trabajando con un STM32F4DISCOVERY (STM32F407VG), por lo que debe usar el archivo de configuración stm32f4discovery.cfg
.
Ahora inicie gdb en otra terminal:
sudo gdb
Proporcione su archivo de objeto (.elf / .axf) a gdb que contiene información de depuración, símbolos, etc. Si está utilizando Keil uVision (MDK-ARM), puede encontrar el archivo .axf en la carpeta myProject/MDK-ARM/myProject/
. Si está utilizando GNU Arm Embedded Toolchain, debe compilar su programa como un programa de depuración, de modo que el compilador genere un archivo .elf en la carpeta ../Build/
.
En la consola gdb:
file ~/myProject/Build/myProgram.axf
Ahora puede controlar sus variables por nombre con gdb ya que proporcionó el archivo de objeto.
Conéctate al servidor OpenOCD desde gdb:
target remote localhost:3333
Ahora puede ver sus variables desde gdb con p myVar1
, el tipo de la variable con ptype myVar1
y la dirección de la variable con los comandos info address myVar1
:
p myVar1
Aquí hay un script simple que imprime las variables deseadas cada 1 segundo.
Puede ejecutar el script con 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
Código en STM32:
uint32_t myVar1 = 0;
uint32_t myVar2 = 0;
int main(void){
while(1){
myVar1 +=1;
myVar2 +=2;
}
}