Uso de CMake con FreeRTOS - FreeRTOS

Uso de CMake con FreeRTOS

importante

Esta página hace referencia al repositorio de Amazon-FreeRTOS, que está en desuso. Recomendamos empezar por aquí al crear un nuevo proyecto. Si ya tiene un proyecto FreeRTOS existente basado en el repositorio Amazon FreeRTOS, ahora obsoleto, consulte Guía de migración del repositorio Github de Amazon-FreeRTOS.

Puede utilizar CMake para generar archivos de creación de proyectos a partir del código fuente de la aplicación de FreeRTOS y para crear y ejecutar el código fuente.

Puede utilizar un IDE para editar, depurar compilar, instalar y ejecutar código en dispositivos calificados de FreeRTOS. Cada guía de introducción específica de la placa incluye instrucciones para configurar el IDE para una determinada plataforma. Si prefiere trabajar sin un IDE, puede utilizar otras herramientas de edición y depuración de código de terceros para desarrollar y depurar su código y, a continuación, utilizar CMake para compilar y ejecutar las aplicaciones.

Las siguientes placas son compatibles con CMake:

  • Espressif ESP32-DevKitC

  • Espressif ESP-WROVER-KIT

  • Kit de conectividad de IoT de Infineon XMC4800

  • Kit de inicio de AWS IoT de Marvell MW320

  • Kit de inicio de AWS IoT de Marvell MW322

  • Microchip Curiosity PIC32MZEF Bundle

  • Kit de desarrollo DK de Nordic nRF52840

  • STMicroelectronicsSTM32L4 Discovery Kit IoT Node

  • CC3220SF-LAUNCHXL de Texas Instruments

  • Simulador de Microsoft Windows

Consulte los temas a continuación para obtener más información sobre cómo utilizar CMake con FreeRTOS.

Requisitos previos

Asegúrese de que el equipo host cumple los siguientes requisitos previos antes de continuar:

  • La cadena de herramientas de compilación del dispositivo debe ser compatible con el sistema operativo del equipo. CMake es compatible con todas las versiones de Windows, macOS y Linux

    No es posible usar el subsistema Windows para Linux (WSL). Utilice CMake nativo en los equipos Windows.

  • Debe tener instalada la versión 3.13 o posterior de CMake.

    Puede descargar la distribución binaria de CMake de CMake.org.

    nota

    Si descarga la distribución binaria de CMake, asegúrese de añadir el ejecutable de CMake a la variable de entorno PATH antes de utilizar CMake desde la línea de comandos.

    También puede descargar e instalar CMake mediante un administrador de paquetes, como homebrew, en macOS, o scoop o chocolatey en Windows.

    nota

    Las versiones de CMake proporcionadas en los administradores de paquetes de numerosas distribuciones de Linux son obsoletas. Si el administrador de paquetes de su distribución no incluye la versión más reciente de CMake, puede probar administradores de paquetes diferentes, como linuxbrew o nix.

  • Debe tener un sistema de compilación nativo compatible.

    CMake puede emplearse con numerosos sistemas de compilación nativos, como GNU Make o Ninja. Tanto Make como Ninja se pueden instalar con administradores de paquetes en Linux, macOS y Windows. Si utiliza Make en Windows, puede instalar una versión independiente de Equation o bien puede instalar MinGW, que incluye a Make.

    nota

    El ejecutable de Make en MinGW se llama mingw32-make.exe, en lugar de make.exe.

    Le recomendamos que utilice Ninja, ya que es más rápido que Make y además proporciona soporte nativo a todos los sistemas operativos de escritorio.

Desarrollo de aplicaciones de FreeRTOS con herramientas de edición y depuración de código de terceros

Puede utilizar un editor de código y una extensión de depuración o una herramienta de depuración de terceros para desarrollar aplicaciones para FreeRTOS.

Si, por ejemplo, utiliza Visual Studio Code como su editor de código, puede instalar la extensión de VS Code Cortex-Debug como depurador. Cuando termine de desarrollar la aplicación, puede invocar la herramienta de línea de comandos de CMake para compilar su proyecto a partir de VS Code. Para obtener más información sobre cómo utilizar CMake para crear aplicaciones de FreeRTOS, consulte Creación de FreeRTOS con CMake.

Para la depuración, puede proporcionar un VS Code con una configuración de depuración similar a la siguiente:

"configurations": [ { "name": "Cortex Debug", "cwd": "${workspaceRoot}", "executable": "./build/st/stm32l475_discovery/aws_demos.elf", "request": "launch", "type": "cortex-debug", "servertype": "stutil" } ]

Creación de FreeRTOS con CMake

De forma predeterminada, la salida de CMake se refiere al sistema operativo donde se ejecuta. Para utilizarlo con compilación cruzada, CMake requiere un archivo de cadena de herramientas, que especifica el compilador que desea utilizar. En FreeRTOS, hay archivos de cadena de herramientas predeterminados disponibles en freertos/tools/cmake/toolchains. El método para enviar este archivo a CMake varía en función de si utiliza la interfaz de línea de comandos de CMake o la GUI. Para obtener más información, siga las instrucciones de Generación de archivos de compilación (herramienta de línea de comandos de CMake) que aparecen a continuación. Para obtener más información acerca de la compilación cruzada en CMake, consulte Compilación cruzada en la wiki oficial de CMake.

Creación de un proyecto basado en CMake
  1. Ejecute CMake para generar los archivos de compilación para un sistema de compilación nativo, como Make o Ninja.

    Puede usar la herramienta de línea de comandos de CMake o la GUI de CMake para generar los archivos de compilación para el sistema de compilación nativo.

    Para obtener información sobre cómo generar archivos de creación de FreeRTOS, consulte Generación de archivos de compilación (herramienta de línea de comandos de CMake) y Generación de archivos de compilación (interfaz gráfica de usuario de CMake).

  2. Invoque el sistema de compilación nativo para convertir el proyecto en un archivo ejecutable.

    Para obtener información sobre cómo generar archivos de creación de FreeRTOS, consulte Creación de FreeRTOS a partir de los archivos de creación generados.

Generación de archivos de compilación (herramienta de línea de comandos de CMake)

Puede utilizar la herramienta de línea de comandos de CMake (cmake) para generar archivos de creación para FreeRTOS. Para generar los archivos de compilación, tiene que especificar una placa de destino, un compilación y la ubicación de del código fuente y el directorio de compilación.

Puede usar las siguientes opciones para cmake:

  • -DVENDOR: especifica la placa de destino.

  • -DCOMPILER: especifica el compilador.

  • -S: especifica la ubicación del código fuente.

  • -B: especifica la ubicación de los archivos de creación generados.

nota

El compilador debe encontrarse en la variable PATH del sistema, o bien debe especificar su ubicación.

Por ejemplo, si el proveedor es Texas Instruments, la tarjeta es la CC3220 Launchpad y el compilador es GCC para ARM, puede ejecutar el siguiente comando para compilar los archivos de origen del directorio actual a un directorio denominado build-directory:

cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B build-directory
nota

Si utiliza Windows, debe especificar el sistema de compilación nativo, porque CMake utiliza Visual Studio de forma predeterminada. Por ejemplo:

cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B build-directory -G Ninja

O bien:

cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B build-directory -G "MinGW Makefiles"

Las expresiones regulares ${VENDOR}.* y ${BOARD}.* se utilizan para buscar una tarjeta que coincida, por lo que no es necesario indicar el nombre completo del proveedor y la tarjeta en las opciones VENDOR y BOARD. Basta con un nombre parcial, siempre que solo haya una única coincidencia. Por ejemplo, los comandos siguientes generan los mismos archivos de compilación a partir de la misma fuente:

cmake -DVENDOR=ti -DCOMPILER=arm-ti -S . -B build-directory
cmake -DBOARD=cc3220 -DCOMPILER=arm-ti -S . -B build-directory
cmake -DVENDOR=t -DBOARD=cc -DCOMPILER=arm-ti -S . -B build-directory

Puede utilizar la opción CMAKE_TOOLCHAIN_FILE si desea utilizar un archivo de cadena de herramientas que no se encuentra en el directorio predeterminado cmake/toolchains. Por ejemplo:

cmake -DBOARD=cc3220 -DCMAKE_TOOLCHAIN_FILE='/path/to/toolchain_file.cmake' -S . -B build-directory

Si el archivo de cadena de herramientas no usa rutas absolutas para el compilador y no ha añadido el compilador a la variable de entorno PATH, puede que CMake no lo encuentre. Para asegurarse de que CMake encuentre el archivo de cadena de herramientas, use la opción AFR_TOOLCHAIN_PATH. Esta opción busca en la ruta especificada para el directorio de la cadena de herramientas y en la subcarpeta de la cadena bajo bin. Por ejemplo:

cmake -DBOARD=cc3220 -DCMAKE_TOOLCHAIN_FILE='/path/to/toolchain_file.cmake' -DAFR_TOOLCHAIN_PATH='/path/to/toolchain/' -S . -B build-directory

Para habilitar la depuración, establezca en CMAKE_BUILD_TYPE el valor debug. Con esta opción habilitada, CMake añade marcadores de depuración a las opciones de compilación y crea FreeRTOS con símbolos de depuración.

# Build with debug symbols cmake -DBOARD=cc3220 -DCOMPILER=arm-ti -DCMAKE_BUILD_TYPE=debug -S . -B build-directory

También puede establecer en CMAKE_BUILD_TYPE el valor release para añadir marcadores de optimización a las opciones de compilación.

Generación de archivos de compilación (interfaz gráfica de usuario de CMake)

Puede utilizar la GUI de CMake para generar archivos de creación de FreeRTOS.

Generación de los archivos de compilación con la interfaz gráfica de usuario de CMake
  1. Desde la línea de comandos, ejecute cmake-gui para iniciar la interfaz gráfica de usuario.

  2. Elija Browse Source (Explorar origen), especifique la entrada de origen y, a continuación, elija Browse Build (Explorar compilación) y especifique la salida de la compilación.

    Ventana CMake con campos de entrada para la ubicación del código fuente y la ubicación de los binarios de compilación, junto con opciones para buscar fuentes, navegar por el directorio de compilación, buscar, agregar o eliminar entradas y ver opciones agrupadas o avanzadas.
  3. Elija Configure (Configurar) y busque y elija en Specify the build generator for this project (Especifique el generador de compilación para este proyecto) el sistema de compilación que desee utilizar para compilar los archivos de compilación generados. Si no ve la ventana emergente, es posible que esté reutilizando un directorio de compilación existente. En este caso, elimine la caché de CMake eligiendo Delete Cache (Eliminar caché) en el menú File (Archivo).

    Cuadro de diálogo de CMakeSetup con opciones para especificar el generador del proyecto como Makefiles de Unix y especificar un archivo de cadena de herramientas para la compilación cruzada.
  4. Elija Specify toolchain file for cross-compiling (Especificar el archivo de cadena de herramientas para la compilación cruzada) y, a continuación, elija Next (Siguiente).

  5. Elija el archivo de cadena de herramientas (por ejemplo, freertos/tools/cmake/toolchains/arm-ti.cmake) y haga clic en Finalizar.

    La configuración predeterminada para FreeRTOS es la placa de plantilla, que no incluye ningún destino de capa portable. En consecuencia, aparece una ventana con el mensaje .

    nota

    Si ve el siguiente error:

    CMake Error at tools/cmake/toolchains/find_compiler.cmake:23 (message): Compiler not found, you can specify search path with AFR_TOOLCHAIN_PATH.

    Significa que el compilador no se encuentra en la variable de entorno PATH. Puede configurar la variable AFR_TOOLCHAIN_PATH en la GUI para que indique a CMake dónde ha instalado el compilador. Si no ve la variable AFR_TOOLCHAIN_PATH, elija Add Entry (Añadir entrada). En la ventana emergente, en Name (Nombre), escriba AFR_TOOLCHAIN_PATH. En Compiler Path (Ruta del compilador), escriba la ruta hasta su compilador. Por ejemplo, C:/toolchains/arm-none-eabi-gcc.

  6. La interfaz gráfica debe tener ahora el aspecto siguiente:

    Ventana de configuración de CMake para crear FreeRTOS con la tabla de proveedores seleccionada, los módulos habilitados y las rutas de compilación especificadas.

    Elija AFR_BOARD, elija la tarjeta y, a continuación, elija de nuevo Configure (Configurar).

  7. Seleccione Generar. CMake genera los archivos del sistema de compilación (por ejemplo, archivos makefiles o ninja) y estos archivos aparecen en el directorio de compilación que haya especificado en el primer paso. Siga las instrucciones de la siguiente sección para generar la imagen binaria.

Creación de FreeRTOS a partir de los archivos de creación generados

Compilación con un sistema de compilación nativo

Puede crea FreeRTOS con un sistema de creación nativo llamando al comando del sistema de creación desde el directorio de los archivos binarios de salida.

Por ejemplo, si el directorio de salida de los archivos de compilación es <build_dir> y utiliza Make como sistema de compilación nativo, ejecute los siguientes comandos:

cd <build_dir> make -j4

Compilación con CMake

También puede utilizar la herramienta de línea de comandos de CMake para crear FreeRTOS. CMake proporciona una capa de abstracción para llamar a sistemas de compilación nativos. Por ejemplo:

cmake --build build_dir

A continuación se muestran otros usos comunes del modo de compilación de la herramienta de línea de comandos de CMake:

# Take advantage of CPU cores. cmake --build build_dir --parallel 8
# Build specific targets. cmake --build build_dir --target afr_kernel
# Clean first, then build. cmake --build build_dir --clean-first

Para obtener más información acerca del modo de compilación de CMake, consulte la documentación de CMake.