使用 CMake 配 FreeRTOS - FreeRTOS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 CMake 配 FreeRTOS

您可以使用 CMake 生成项目构建文件 FreeRTOS 应用程序源代码,以及用于构建和运行源代码。

您还可以使用IDE编辑、调试、编译、闪存和运行代码 FreeRTOS-合格的设备。每个主板特定的入门指南提供了针对特定平台设置 IDE 的指南。如果您更喜欢在没有IDE的情况下工作,可以使用其他第三方代码编辑和调试工具来开发和调试您的代码,然后使用 CMake 以构建和运行应用程序。

以下主板支持 CMake:

  • Espressif ESP32-DevKitC

  • Espressif ESP-WROVER-KIT

  • 英飞龙XMC4800 IoT 连接套件

  • Marvell MW320 AWS IoT 初学者工具包

  • Marvell MW322 AWS IoT 初学者工具包

  • Microchip Curiosity PIC32MZEF Bundle

  • Nordic nRF52840 DK 开发工具包

  • STMicroelectronicsSTM32L4发现套件 IoT 节点

  • Texas Instruments CC3220SF-LAUNCHXL

  • Microsoft Windows Simulator

有关使用的更多信息,请参阅以下主题 CMake 配 FreeRTOS.

Prerequisites

请先确保主机符合以下先决条件,然后再继续:

  • 您的设备的编译工具链必须支持机器的操作系统。 CMake 支持所有版本的Windows, macOS、和Linux

    不支持 Windows Subsystem for Linux (WSL)。使用本机 CMake 在Windows计算机上。

  • 您必须有 CMake 版本3.13或更高版本已安装。

    您可以下载 CMake 从 CMake.org公司.

    注意

    如果您下载了的二进制分发 CMake,请确保添加 CMake 可执行到PATH环境变量中,然后使用 CMake 从命令行。

    您还可以下载和安装 CMake 使用包管理器,例如 内花 于 macOS,和 勺子巧克力色 在Windows上。

    注意

    的 CMake 许多Linux发行版的包管理器中提供的包版本已过时。如果您分发的软件包管理器不提供最新版本的 CMake,您可以尝试备用包管理器,例如 linuxbrewnix.

  • 必须具有兼容的本机构建系统。

    CMake 可以针对许多本机构建系统,包括 GNU MakeNinja。Make和Ninja均可在Linux上安装包管理器, macOS 和Windows。如果在 Windows 上使用 Make,则可从 Equation 安装独立版本,或安装捆绑了 Make 的 MinGW

    注意

    使可执行 MinGW 被称为 mingw32-make.exe,而不是 make.exe.

    我们建议使用 Ninja,因为它不仅速度快于 Make,还可提供对所有桌面操作系统的本机支持。

使用第三方代码编辑器和调试工具开发 FreeRTOS 应用程序

您可以使用代码编辑器和调试扩展或者第三方调试工具来为 FreeRTOS 开发应用程序。

例如,如果您使用 Visual Studio Code 作为代码编辑器,则可以安装 Cortex-Debug VS Code 扩展作为调试程序。完成应用程序开发后,您可以调用 CMake 命令行工具,用于从VS代码内构建项目。有关使用的更多信息 CMake 构建 FreeRTOS 应用程序,请参阅 建筑 FreeRTOS 配 CMake.

对于调试,您可以向 VS Code 提供类似于下文的调试配置:

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

建筑 FreeRTOS 配 CMake

默认情况下,CMake 将主机操作系统作为目标系统。要将其用于交叉编译, CMake 需要一个工具链文件,该文件用于指定要使用的编译器。英寸 FreeRTOS,我们提供默认工具链文件 freertos/tools/cmake/toolchains。将此文件提供给 CMake 取决于您是否使用 CMake 命令行界面或GUI。有关更多详细信息,请按照以下生成构建文件(CMake 命令行工具)说明进行操作。有关交叉编译的更多信息 CMake,请参阅 交叉编译 在官员 CMake 维基。

要构建 CMake-基于项目

  1. 运行 CMake 为原生构建系统生成构建文件,如Make或Ninja。

    可以使用 CMake 命令行工具CMake GUI 为本机构建系统生成构建文件。

    有关生成 FreeRTOS 构建文件的信息,请参阅生成构建文件(CMake 命令行工具)生成构建文件 (CMake GUI)

  2. 调用本机构建系统,将项目制作为可执行文件。

    有关如何制作 FreeRTOS 构建文件的信息,请参阅从生成的构建文件构建 FreeRTOS

生成构建文件(CMake 命令行工具)

您可以使用 CMake 命令行工具(命令)生成构建文件 FreeRTOS. 要生成构建文件,您需要指定目标主板、编译器以及源代码和构建目录的位置。

您可以对 cmake 使用以下选项:

  • -DVENDOR – 指定目标板。

  • -DCOMPILER – 指定编译器。

  • -S – 指定源代码的位置。

  • -B – 指定生成的构建文件的位置。

注意

编译器必须包含在系统的 PATH 变量中,或者必须指定编译器的位置。

例如,如果供应商是 Texas Instruments,主板是 CC3220 Launchpad,编译器是 GCC for ARM,那么可以发出以下命令,将源文件从当前目录构建到名为 build-directory 的目录:

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

如果您正在使用Windows,则必须指定本地构建系统,因为 CMake 默认情况下使用VisualStudio。例如:

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

或者:

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

正则表达式 ${VENDOR}.*${BOARD}.* 用于搜索匹配的主板,因此对于 VENDORBOARD 选项,不必使用完整的供应商和主板名称。在只有单个名称匹配的情况下,部分名称也是可行的。例如,以下命令可从同一源文件生成相同的构建文件:

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

您可以使用 CMAKE_TOOLCHAIN_FILE 选项,如果您希望使用不在默认目录中的工具链文件 cmake/toolchains。例如:

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

如果工具链文件没有为您的编译器使用绝对路径,并且您没有将编译器添加到 PATH 环境变量, CMake 可能无法找到它。确保 CMake 查找您的工具链文件,您可以使用 AFR_TOOLCHAIN_PATH 选项。此选项搜索指定的工具链目录路径和工具链的子文件夹,路径位于 bin。例如:

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

要启用调试,请设置 CMAKE_BUILD_TYPEdebug。启用这个选项后, CMake 将调试标记添加到编译选项,并构建 FreeRTOS 带调试符号。

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

也可以将 CMAKE_BUILD_TYPE 设置为 release,将优化标志添加到编译选项。

生成构建文件 (CMake GUI)

您可以使用 CMake 要生成的GUI FreeRTOS 构建文件。

要使用生成构建文件 CMake 图形用户界面

  1. 从命令行中发出 cmake-gui 以启动 GUI。

  2. 选择 Browse Source (浏览源) 并指定源输入,然后选择 Browse Build (浏览构建) 并指定构建输出。

  3. 选择 Configure (配置),然后在 Specify the build generator for this project (指定此项目的构建生成器) 下,查找并选择要用于构建所生成的构建文件的构建系统。如果您未看到弹出窗口,则可能正在重用现有的构建目录。在这种情况下,删除 CMake 通过选择 删除缓存文件 菜单。

  4. 选择 Specify toolchain file for cross-compiling (指定用于交叉编译的工具链文件),然后选择 Next (下一步)

  5. 选择工具链文件(例如,freertos/tools/cmake/toolchains/arm-ti.cmake),然后选择 Finish (完成)

    FreeRTOS 的默认配置为模板主板,该主板不提供任何可移植层目标。结果,将出现一个窗口,其中包含消息 .

    注意

    如果您看到以下错误:

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

    这意味着编译器不在您的 PATH 环境变量中。您可以设置 AFR_TOOLCHAIN_PATH 的变量,以告知 CMake 其中安装了编译器。如果您未看到 AFR_TOOLCHAIN_PATH 变量,请选择 Add Entry (添加条目)。在弹出窗口中, 名称,类型 AFR_TOOLCHAIN_PATH。低于 编译器路径 键入编译器的路径。例如, C:/toolchains/arm-none-eabi-gcc.

  6. GUI 现在应如下所示:

    选择 AFR_BOARD,选择主板,然后选择 Configure (配置)

  7. 选择 生成. CMake 生成构建系统文件(例如,makefiles或ninja文件),这些文件将显示在您在第一步中指定的构建目录中。按照下一节中的说明生成二进制映像。

从生成的构建文件构建 FreeRTOS

使用本机构建系统构建

可以使用本机构建系统构建 FreeRTOS,方法是从输出二进制目录调用构建系统命令。

例如,如果构建文件输出目录为 <build_dir>,并且您使用 Make 作为本机构建系统,则可运行以下命令:

cd <build_dir> make -j4

建筑使用 CMake

您还可以使用 CMake 用于构建的命令行工具 FreeRTOS. CMake 提供用于调用本地构建系统的抽象层。例如:

cmake --build build_dir

以下是一些其他常见的 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

有关 CMake 构建模式,请参阅 C制作文档.