Fecha: febrero 27, 2023
Autor: Guillermo Garcia
Categorías: Visual Studio Code Etiquetas: Development tools
En el artículo pasado Visual Studio Code for ARM with CMake #6 IntelliSence creamos el archivo de configuración para la extensión IntelliSence. En este artículo vamos a realizar la configuración necesaria para depurar nuestra placa NUCLEO-G071RB.
Table of Contents
Comencemos definiendo porque es necesario utilizar Cortex Debug.
Visual Studio Code es un editor de código no un IDE, sin embargo cuenta con una interfaz de depuración para depurar código en diferentes lenguajes.
Esta extensión agrega capacidades para depurar dispositivos ARM Cortex-M. El adaptador de depuración integrado en Visual Studio Code proporciona una serie de funciones graficas como los botones para controlar la depuración. Pero el adaptador no es capaz de gestiona el proceso de compilación completamente.
Es necesario una interfaz extra entre el adaptador de Visual Studio Code y nuestro hardware de depuración J-Link. Aquí es donde necesitamos esta extensión.
GDB es el depurador estándar para el compilador GNU, un depurador es una herramienta de programación que nos permite la detección y corrección de errores de ejecución y errores lógicos.
GDBServer es un programa que gestiona el proceso de depuración este es desarrollado por los proveedores de dispositivos nuestro caso emplearemos JLinkGDBServer.
La siguiente imagen extraída de la documentación de la extensión muestra el flujo de procesos que realízala extensión para hacer compatible la depuración de dispositivos ARM.
La extensión necesita saber algunos parámetros antes de lanzar el GDBServer como el tipo de hardware que se pretende depurar el nombre del archivo ELF que se utiliza para la depuración.
Estos parámetros se definen en un archivo de configuración llamado launch.json, estoy seguro que sabes la ubicación de este archivo así es en el directorio .vscode.
En este archivo estableceremos los parámetros necesarios para que la extensión pueda comunicarse con nuestra placa y comenzar el proceso de depuración.
Creamos el archivo launch.json
La estructura y el contendió del archivo de configuración se detalla en la documentación de la extensión, veamos los parámetros más importantes.
{ "version": "0.2.0", "configurations": [ { "name": "Cortex Debug", "cwd": "${workspaceRoot}", "executable": "./build/${config:SetNameExecuteBuildFile}.elf", "request": "launch", "type": "cortex-debug", "servertype": "jlink", "device": "${config:SetDeviceARM}", "interface": "swd", "serverpath": "${config:SetPathJlinkGDB}", "armToolchainPath": "${config:SetPathToolchainARM}", "svdFile": "${workspaceRoot}/Device/svd/STM32G071.svd", "debuggerArgs": [ "-iex","set auto-load safe-path /", ], "runToEntryPoint": "main", "rttConfig": { "enabled": true, "address": "auto", "decoders": [ { "port": 0, "type": "console" } ] } } ] }
Observemos que utilizamos variables que definimos en el archivo de configuración settings.json que creamos en el artículo Visual Studio Code for ARM with CMake #5 VSC Tasks.
Es el momento esperado probemos la depuración vamos a la sección de depuración podemos iniciar la depuración en el botón verde.
En la parte superior podemos ver la barra para manipular la depuración o detener el proceso.
La terminal vemos la repuesta de gdbserver.
Deja una respuesta