Embedded Development Board Learning


Visual Studio Code for ARM with CMake #6 IntelliSence

Fecha: febrero 20, 2023

Autor: Guillermo Garcia

Categorías: Visual Studio Code Etiquetas:

Visual Studio Code como entorno de desarrollo para proyecto Embedded Systems

En el articulo pasado Visual Studio Code for ARM with CMake #5 VSC Tasks agregamos los archivos para crear tareas para automatizar los procesos de compilación.

En este artículo vamos a configurar la extensión IntelliSense, es una herramienta necesaria cuando se utiliza Visual Sudio Code para realizar compilación cruzada cross-compiling.

Cross-compiling

La compilación cruzada es una característica de los compiladores capaces de generar código ejecutable para otra plataforma. Que es distinta a aquella en la que el compilador se ejecuta.

Con el entorno de desarrollo en Visual Studio Code estamos generando cross-compiling gracias al compilador ARM GCC.

Ejemplo de cross-compiling

Visual Studio Code no conoce las características del lenguaje, para ampliar esa característica en el editor de código empleamos la extensión IntelliSence.

IntelliSence

La extensión proporciona características como el resaltado de sintaxis, resalto de tipos de datos, las definiciones de funciones y bibliotecas de inclusión.

Es necesario proporcionar ajustes de configuración. Los ajustes de configuración se establecen mediante un archivo llamado c_cpp_properties.json.

c_cpp_properties.json

Vamos a crear este archivo en el directorio .vscode en este archivo colocaremos las rutas de los directorios que contienen archivos de inclusión entre otras configuraciones.

Archivo de configuración c_cpp_properties.json para IntelliSence

Veamos el contenido del archivo c_cpp_properties.json.

{
    "configurations": [
        {
            "name": "ARM none eabi GCC",
            "includePath": [
                "${workspaceFolder}/main",
                "${workspaceFolder}/CMSIS/Include",
                "${workspaceFolder}/CMSIS/Device/ST/STM32G0xx",
                "${workspaceFolder}/Device",
                "${workspaceFolder}/Drivers/Inc",
                "${workspaceFolder}/Drivers/Inc/Legacy"
            ],
            "defines": [
                "STM32G071xx",
                "USE_HAL_DRIVER"
            ],
            "compilerPath": "${config:SetPathToolchainARM}/arm-none-eabi-gcc.exe",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-arm"
        }
    ],
    "version": 4
}

En la sección de includePath vamos a colocar las rutas a todos los directorios que contiene archivos inclusión.

Para resaltar secciones de código con sentencias de preprocesador colocamos las definiciones en la sección defines.

compilerPath colocamos la ruta donde está el ejecutable del compilador, aquí usamos una variable ${config:SetPathToolchainARM} que definimos en el archivo setting.json.

Resultado

Veamos cómo se comporta Visual Studio Code cuando no tenemos el archivo de configuración para IntelliSence.

Vemos como no reconoce ciertas definiciones en archivos de código fuente.

IntelliSence sin configuración

Cuando se agrega el archivo de configuración c_cpp_properties.json vemos como la extensión comienza a realizar su función explorando todo el contendido de nuestro proyecto.

IntelliSence con la configuración

Ahora podemos navegar entre las definiciones dando Ctrl + click.



Card image cap
Guillermo Garcia I am an embedded systems software engineer. I like constant learning, IoT systems and sharing knowledge


Comentarios... no existen comentarios.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subscribe


Subscribe to receive the latest content.
Loading