Fecha: febrero 13, 2023
Autor: Guillermo Garcia
Categorías: Visual Studio Code Etiquetas: Development tools
En el artículo pasado Visual Studio Code for ARM with CMake #4 J-Link se realizó la conversión del firmware J-Link en nuestra placa NUCLEO-G071RB.
Además se crearon archivos J-Link commander con los comandos necesarios para realizar la programación de la placa mediante el depurador J-Link.
En este artículo vamos a crear tareas de Visual Studio Code (VSC Tasks) para ejecutar los comandos. Para realizar la compilación, programación del archivo ejecutable y el borrado de memoria flash en nuestra placa.
Table of Contents
Aún son necesarias algunas configuraciones en Visual Studio Code antes de crear las tareas vamos a crear un archivo de configuración.
Para que necesitamos este archivo ?. Visual Studio Code cuenta con dos formas de configuración.
Es importante saber que la configuración Workspace Settings en un proyecto específico anula la configuración User setting.
Para que Visual Studio Code pueda aplicar la configuración deseada en un proyecto específico es necesario definir un archivo con esas características llamado settings.json en el directorio .vscode dentro de nuestro proyecto.
Creamos el archivo repasemos el contenido del directorio .vscode :
Vamos a declarar algunas variables para almacenar los datos de nuestro hardware y herramientas de compilación en el archivo settings.json con el objetivo de no tener que cambiar en diversos archivos si deseamos cambiar a otro hardware.
{ "cmake.configureOnOpen": false, "SetNameExecuteBuildFile": "VSC_G071RB", "SetDeviceARM": "STM32G071RB", "SetPathToolchainARM": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin", "SetPathJlinkGDB": "C:/Program Files/SEGGER/JLink/JLinkGDBServerCL.exe", "files.associations": { "stm32g0xx_it.h": "c", "main.h": "c", "stm32g0xx_hal.h": "c", "stm32g071xx.h": "c" } }
SetNameExecuteBuildFile : Contiene el nombre de nuestro archivo ejecutable sin la extensión.
SetDeviceARM : Contiene el hardware que utilizamos para que J-Link pueda identificarlo.
SetPathToolchainARM : La ruta donde se instaló el compilador GCC
SetPathJlinkGDB : La ruta donde se instaló el software SEGGER y el especifico el ejecutable JLinkGDBServerCL.exe.
Visual Studio Code proporciona la funcionalidad de tareas para extender la integración de herramientas externas que automatizan procesos mediante la línea de comandos.
Las tareas en Visual Studio Code se pueden configurar para ejecutar scripts e iniciar procesos de modo, que muchas herramientas externas existentes se puedan usar desde Visual Studio Code.
Vamos a crear una serie de tareas para iniciar procesos mediante línea de comandos, repacemos los comandos que hemos utilizado a lo largo de la serie.
CMake Init Buid
Inicializa el proceso de configuración.
CMake Build
Inicializa el proceso de compilación.
CMake Clear and Build
Este comando Limpia el directorio build y inicia el proceso de compilación.
J-Link Flash
Descarga el archivo ejecutable en el MCU.
J-Link Erase Flash
Borra toda la memoria flash en el MCU.
Las VSC tasks especificas en un proyecto se configurar desde un archivo llamado tasks.json en el directorio .vscode.
Creamos el archivo tasks.json en el directorio .vscode, crearemos cinco tareas que ejecuten desde la línea de comandos los procesos mostrados anteriormente.
Agregamos las instrucciones para indicar que inicie una consola cmd.exe y en seguida colocamos las tareas.
{ "version": "2.0.0", "windows": { "options": { "shell": { "executable": "cmd.exe", "args": [ "/d", "/c" ] } } }, "tasks": [ { "type": "shell", "label": "Run Build", "command": "cmake --build .", "options": { "cwd": "${workspaceFolder}/build" }, "group": { "kind": "build", "isDefault": true }, "problemMatcher": { "base": "$gcc", "fileLocation": ["relative", "${workspaceFolder}/build"] } }, { "type": "shell", "label": "Run Clean & Build", "command": "cmake --build . --clean-first", "options": { "cwd": "${workspaceFolder}/build" }, "group": "build", "problemMatcher": { "base": "$gcc", "fileLocation": ["relative", "${workspaceFolder}/build"] } }, { "type": "shell", "label": "Run Init make", "command": "cmake -DCMAKE_MAKE_PROGRAM=make.exe -G \"Unix Makefiles\" ..", "options": { "cwd": "${workspaceFolder}/build" }, "group": "build", "problemMatcher": { "base": "$gcc", "fileLocation": ["relative", "${workspaceFolder}/build"] } }, { "type": "shell", "label": "Run Flash", "command": "JLink.exe -device ${config:SetDeviceARM} -CommandFile ${workspaceFolder}/.vscode/Run_Flash.jlink", "group": "build", "problemMatcher": { "base": "$gcc", "fileLocation": ["relative", "${workspaceFolder}/.vscode"] } }, { "type": "shell", "label": "Run Erase Flash", "command": "JLink.exe -device ${config:SetDeviceARM} -CommandFile ${workspaceFolder}/.vscode/Run_Erase_Flash.jlink", "group": "build", "problemMatcher": { "base": "$gcc", "fileLocation": ["relative", "${workspaceFolder}/.vscode"] } } ] }
Los argumentos más importantes en la creación de una tarea son :
label : Es el nombre con el que se identifica dicha tarea.
command : Las instrucciones que se ejecutan en la línea de comandos.
Recordemos las variables que se definieron en el archivo settings.json, vamos a acceder a su valor con la declaración ${config:SetDeviceARM}.
Ahora con esta configuración solo es cuestión de ejecutar la tarea deseada para que el proceso se realice.
Para acceder al control de comandos mediante Show All commands Ctrl + Shift + P
Seleccionamos Tasks: Run Task
Se muestran todas las tareas creadas en este Workspace.
Para probar todos los procesos borramos el contenido del directorio build.
Comprobamos el funcionamiento de las tareas a hora podemos compilar, borrar la memoria flash y descargar nuestro archivo ejecutable en la placa NUCLEO-G071RB de manera más automatizada gracias a las tareas de Visual Studio Code.
Deja una respuesta