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.
Temas
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
linuxbrewonix. -
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 demake.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
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 . 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 cruzadafreertos/tools/cmake/toolchains
Creación de un proyecto basado en CMake
-
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).
-
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 . -Bbuild-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 . -Bbuild-directory-G Ninja
O bien:
cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -Bbuild-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 . -Bbuild-directory
cmake -DBOARD=cc3220 -DCOMPILER=arm-ti -S . -Bbuild-directory
cmake -DVENDOR=t -DBOARD=cc -DCOMPILER=arm-ti -S . -Bbuild-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 . -Bbuild-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 . -Bbuild-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 . -Bbuild-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
-
Desde la línea de comandos, ejecute
cmake-guipara iniciar la interfaz gráfica de usuario. -
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.
-
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).
-
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).
-
Elija el archivo de cadena de herramientas (por ejemplo,
) y haga clic en Finalizar.freertos/tools/cmake/toolchains/arm-ti.cmakeLa 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 attools/cmake/toolchains/find_compiler.cmake:23(message): Compiler not found, you can specify search path withAFR_TOOLCHAIN_PATH.Significa que el compilador no se encuentra en la variable de entorno
PATH. Puede configurar la variableAFR_TOOLCHAIN_PATHen la GUI para que indique a CMake dónde ha instalado el compilador. Si no ve la variableAFR_TOOLCHAIN_PATH, elija Add Entry (Añadir entrada). En la ventana emergente, en Name (Nombre), escribaAFR_TOOLCHAIN_PATH. En Compiler Path (Ruta del compilador), escriba la ruta hasta su compilador. Por ejemplo,C:/toolchains/arm-none-eabi-gcc. -
La interfaz gráfica debe tener ahora el aspecto siguiente:
Elija AFR_BOARD, elija la tarjeta y, a continuación, elija de nuevo Configure (Configurar).
-
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 --buildbuild_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 --buildbuild_dir--parallel 8
# Build specific targets. cmake --buildbuild_dir--target afr_kernel
# Clean first, then build. cmake --buildbuild_dir--clean-first
Para obtener más información acerca del modo de compilación de CMake, consulte la documentación de CMake