乐鑫-WROOM-32SE ESP32 入门 - FreeRTOS

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

乐鑫-WROOM-32SE ESP32 入门

重要

这是《FreeRTOS 用户指南》的存档版本,可用于 FreeRTOS 版本 202012.00。有关本文档的最新版本,请参阅《FreeRTOS 用户指南》

按照本教程开始使用 Espressif-WROOM-32SE ESP32。要在合作伙伴设备目录中向我们的合作伙伴购买一台,请参阅 ESP32-WROOM-32SE。 AWS

注意

目前,-WROOM-32SE 的 FreeRTOS 端口不支持 ESP32对称多处理 (SMP) 功能。

概览

该教程将指导您完成以下步骤:

  1. 将主板连接到主机。

  2. 在您的主机上安装软件,以开发和调试微控制器主板的嵌入式应用程序。

  3. 将 FreeRTOS 演示应用程序交叉编译为二进制映像

  4. 将应用程序二进制映像加载到您的主板中,然后运行该应用程序

  5. 使用串行连接监控和调试正在运行的应用程序

先决条件

在开始在乐鑫看板上使用 FreeRTOS 之前,您必须设置账户和权限。 AWS

注册获取 AWS 账户

如果您没有 AWS 账户,请完成以下步骤来创建一个。

要注册 AWS 账户
  1. 打开https://portal.aws.amazon.com/billing/注册。

  2. 按照屏幕上的说明操作。

    注册过程的一部分涉及接听电话或短信,并在电话键盘上输入验证码。

    当您注册时 AWS 账户,就会创建AWS 账户根用户一个。根用户有权访问该账户中的所有 AWS 服务 和资源。作为最佳安全实践,请为用户分配管理访问权限,并且只使用根用户来执行需要根用户访问权限的任务

AWS 注册过程完成后会向您发送一封确认电子邮件。您可以随时前往 https://aws.amazon.com/并选择 “我的账户”,查看您当前的账户活动并管理您的账户

创建具有管理访问权限的用户

注册后,请保护您的安全 AWS 账户 AWS 账户根用户 AWS IAM Identity Center,启用并创建管理用户,这样您就不会使用 root 用户执行日常任务。

保护你的 AWS 账户根用户
  1. 选择 Root 用户并输入您的 AWS 账户 电子邮件地址,以账户所有者的身份登录。AWS Management Console在下一页上,输入您的密码。

    要获取使用根用户登录方面的帮助,请参阅《AWS 登录 用户指南》中的 Signing in as the root user

  2. 为您的根用户启用多重身份验证(MFA)。

    有关说明,请参阅 I A M 用户指南中的为 AWS 账户 根用户启用虚拟 MFA 设备(控制台)

创建具有管理访问权限的用户
  1. 启用 IAM Identity Center。

    有关说明,请参阅《AWS IAM Identity Center 用户指南》中的 Enabling AWS IAM Identity Center

  2. 在 IAM Identity Center 中,为用户授予管理访问权限。

    有关使用 IAM Identity Center 目录 作为身份源的教程,请参阅《用户指南》 IAM Identity Center 目录中的使用默认设置配置AWS IAM Identity Center 用户访问权限

以具有管理访问权限的用户身份登录
将访问权限分配给其他用户
  1. 在 IAM Identity Center 中,创建一个权限集,该权限集遵循应用最低权限的最佳做法。

    有关说明,请参阅《AWS IAM Identity Center 用户指南》中的 Create a permission set

  2. 将用户分配到一个组,然后为该组分配单点登录访问权限。

    有关说明,请参阅《AWS IAM Identity Center 用户指南》中的 Add groups

要提供访问权限,请为您的用户、组或角色添加权限:

注意

FreeRTOS 202012.00 版本支持 ESP-IDF v3.3。如果您使用的是更高版本的 FreeRTOS,请按照 .2 中的特定 IDFv4说明进行操作。ESP-IDF v4.2 入门

ESP-IDF v3.3 入门

本节介绍如何在 Espressif 硬件上使用 ESP-IDF v3.3。要使用 ESP-IDF v4.2,请参阅ESP-IDF v4.2 入门

设置 Espressif 硬件

有关设置 ESP32-WROOM- ESP32 32SE 开发板硬件的信息,请参阅-DevKit C 入门指南

重要

在 Espressif 指南的入门部分,暂停并按照以下步骤操作。

设置开发环境

要与您的主板进行通信,您必须下载并安装工具链。

设置工具链

注意

ESP-IDF v3.3(FreeRTOS 使用的版本)不支持最新版本的编译器。 ESP32 您必须使用与 3.3 版的 ESP-IDF 兼容的编译器。请参阅前面的链接。要检查编译器版本,请运行以下命令。

xtensa-esp32-elf-gcc --version

要设置工具链,请按照适用于您的主机操作系统的说明操作:

重要

当您到达 Next Steps (后续步骤) 下的“Get ESP-IDF”说明时,停止并返回到此页面上的说明。

如果您按照后续步骤下的“获取 ESP-IDF”说明进行操作,则在继续操作之前,您应该先从系统中清除 IDF_PATH 环境变量。如果您已按照“获取 ESP-IDF”说明执行操作,则会自动设置此环境变量。

安装 CMake

CMake 编译系统是为该设备构建 FreeRTOS 演示和测试应用程序所必需的。FreeRTOS 支持 3.13 版本及更高版本。

您可以 CMake 从 CMake.org 下载最新版本的。提供源代码和二进制分发。

有关 CMake 与 FreeRTOS 一起使用的更多详细信息,请参阅。 CMake 与 FreeRTOS 一起使用

建立串行连接

  1. 要在主机和 ESP32-WROOM-32SE 之间建立串行连接,请安装 CP21 0x USB 到 UART Bridge VCP 驱动程序。您可以从 Silicon Labs 下载这些驱动程序。

  2. 按照步骤与建立串行连接 ESP32

  3. 建立串行连接后,记下主板连接的串行端口。在构建演示时需要用到它。

下载并配置 FreeRTOS

设置好环境后,您可以从中下载 FreeRTOS。GitHub有关说明,请参阅网站上的 README.md 文件。 GitHub

重要

ATECC608A 设备具有一次性初始化,该初始化会在首次运行项目时(在调用期间C_InitToken)锁定在设备上。但是,FreeRTOS 演示项目和测试项目的配置不同。如果设备在演示项目配置期间被锁定,则并非测试项目中的所有测试都会成功。

  1. 按照配置 FreeRTOS 演示中的步骤配置 FreeRTOS 演示项目。跳过最后一步格式化您的 AWS IoT 凭证,然后改为执行以下步骤。

  2. Microchip 提供了多种脚本工具来帮助设置 ATECC6 08A 部件。导航到 freertos/vendors/microchip/secure_elements/app/example_trust_chain_tool 目录,然后打开 README.md 文件。

  3. 请按照 README.md 文件中的说明预置您的设备。相应步骤包括:

    1. 创建并注册证书颁发机构 AWS

    2. 在 ATECC6 08A 上生成密钥并导出公钥和设备序列号

    3. 为设备生成证书并向注册该证书 AWS

  4. 按照 开发人员模式密钥预置 的说明,将 CA 证书和设备证书加载到设备上。

构建、刷写并运行 FreeRTOS 演示项目

您可以使用生成构建文件,使用 CMake Make 来生成应用程序二进制文件,使用乐鑫的 IDF 实用程序来刷新开发板。

在 Linux 或 macOS 上构建 FreeRTOS (ESP-IDF v3.3)

如果您使用的是 Windows,则可以跳至 在 Windows 上构建 FreeRTOS (ESP-IDF v3.3)

CMake 用于生成生成文件,然后使用 Make 生成应用程序。

使用生成演示应用程序的编译文件 CMake
  1. 转到 FreeRTOS 下载目录的根目录。

  2. 在命令行窗口中,输入以下命令以生成构建文件。

    cmake -DVENDOR=espressif -DBOARD=esp32_plus_ecc608a_devkitc -DCOMPILER=xtensa-esp32 -S . -B your-build-directory
    备注

    要构建用于调试的应用程序,请添加 -DCMAKE_BUILD_TYPE=Debug 标志。

    要生成测试应用程序构建文件,请添加 -DAFR_ENABLE_TESTS=1 标志。

    Espressif 提供的代码使用轻型 IP (lwIP) 堆栈作为默认网络堆栈。要改用 freerTOS+TCP 网络堆栈,请在命令中添加标–DAFR_ESP_FREERTOS_TCP志。 CMake

    要为非供应商提供的代码添加 LwIP 依赖关系,请在自定义 Wi-Fi 组件的依赖文件 CMake CMakeLists.txt中添加以下几行。

    # Add a dependency on the bluetooth espressif component to the common component set(COMPONENT_REQUIRES lwip)
使用 Make 构建应用程序
  1. 导航到 build 目录。

  2. 在命令行窗口中,输入以下命令以通过 Make 构建应用程序。

    make all -j4
    注意

    每当您在 aws_demos 项目和 aws_tests 项目之间切换时,都必须使用 cmake 命令构建生成文件。

在 Windows 上构建 FreeRTOS (ESP-IDF v3.3)

在 Windows 上,必须为指定生成生成器 CMake。否则, CMake 默认为 Visual Studio。Espressif 正式推荐使用 Ninja 构建系统,因为它适用于 Windows、Linux 和 MacOS。你必须在 Windows 原生环境中运行 CMake 命令,比如 cmd 或 PowerShell。不支持在虚拟 Linux 环境(例如 MSYS2 或 WSL)中运行 CMake 命令。

CMake 用于生成生成文件,然后使用 Make 生成应用程序。

使用生成演示应用程序的编译文件 CMake
  1. 转到 FreeRTOS 下载目录的根目录。

  2. 在命令行窗口中,输入以下命令以生成构建文件。

    cmake -DVENDOR=espressif -DBOARD=esp32_plus_ecc608a_devkitc -DCOMPILER=xtensa-esp32 -GNinja -S . -B your-build-directory
    注意

    要构建用于调试的应用程序,请添加 -DCMAKE_BUILD_TYPE=Debug 标志。

    要生成测试应用程序构建文件,请添加 -DAFR_ENABLE_TESTS=1 标志。

    Espressif 提供的代码使用轻型 IP (lwIP) 堆栈作为默认网络堆栈。要改用 freerTOS+TCP 网络堆栈,请在命令中添加标–DAFR_ESP_FREERTOS_TCP志。 CMake

    要为非供应商提供的代码添加 LwIP 依赖关系,请在自定义 Wi-Fi 组件的依赖文件 CMake CMakeLists.txt中添加以下几行。

    # Add a dependency on the bluetooth espressif component to the common component set(COMPONENT_REQUIRES lwip)
构建应用程序
  1. 导航到 build 目录。

  2. 在命令行窗口中,输入以下命令以调用 Ninja 来构建应用程序。

    ninja

    或者,使用通用 CMake 接口来构建应用程序。

    cmake --build your-build-directory
    注意

    每当您在 aws_demos 项目和 aws_tests 项目之间切换时,都必须使用 cmake 命令构建生成文件。

刷写和运行 FreeRTOS (ESP-IDF v3.3)

使用 Espressif 的 IDF 实用程序 (freertos/vendors/espressif/esp-idf/tools/idf.py) 刷写您的主板、运行应用程序并查看日志。

要擦除主板的闪存,请导航到 freertos 目录并输入以下命令。

./vendors/espressif/esp-idf/tools/idf.py erase_flash -B build-directory

要将应用程序二进制文件刷写到您的主板,请使用 make

make flash

您也可以使用 IDF 脚本以刷写主板。

./vendors/espressif/esp-idf/tools/idf.py flash -B build-directory

使用以下命令查看日志:

./vendors/espressif/esp-idf/tools/idf.py monitor -p /dev/ttyUSB1 -B build-directory
提示

您也可以组合使用这些命令。

./vendors/espressif/esp-idf/tools/idf.py erase_flash flash monitor -p /dev/ttyUSB1 -B build-directory

ESP-IDF v4.2 入门

本节介绍如何在 Espressif 硬件上使用 ESP-IDF v4.32。要使用 ESP-IDF v3.3,请参阅ESP-IDF v3.3 入门

注意

本教程中的 Linux 命令要求您使用 Bash Shell。

设置 Espressif 硬件

有关设置 ESP32-WROOM-32SE 开发板硬件的信息,请参阅 ESP32-DevKit C V4 入门指南。

重要

在 Espressif 指南的入门部分,请暂停并按照以下步骤操作。

设置开发环境

要与您的主板进行通信,您需要下载并安装工具链。

设置工具链

要设置工具链,请按照适用于您的主机操作系统的说明操作:

重要

后续步骤下的“获取 ESP-IDF”说明部分,请暂停并返回到此页面上的说明。

完成安装 (Linux / Mac)

ESP-IDF Windows 安装程序会安装所有必需的工具。Linux 和 MAC OSX 平台需要执行额外的步骤才能完成安装。

打开命令行窗口,转到 FreeRTOS 下载目录,然后运行以下脚本来下载并安装适用于您平台的 espressif 工具链。

vendors/espressif/esp-idf/install.sh

接下来,使用以下命令以将 ESP-IDF 工具链工具添加到终端路径中。

source vendors/espressif/esp-idf/export.sh

建立串行连接

  1. 要在主机和 ESP32-WROOM-32SE 之间建立串行连接,请安装 CP21 0x USB 到 UART Bridge VCP 驱动程序。您可以从 Silicon Labs 下载这些驱动程序。

  2. 按照步骤与建立串行连接 ESP32

  3. 建立串行连接后,记下主板连接的串行端口。在构建演示时需要用到它。

下载并配置 FreeRTOS

设置好环境后,您可以从中下载 FreeRTOS。GitHub有关说明,请参阅网站上的 README.md 文件。 GitHub

重要

ATECC608A 设备具有一次性初始化,该初始化会在首次运行项目时(在调用期间C_InitToken)锁定在设备上。但是,FreeRTOS 演示项目和测试项目的配置不同。如果设备在演示项目配置期间被锁定,则并非测试项目中的所有测试都会成功。

  1. 按照配置 FreeRTOS 演示中的步骤配置 FreeRTOS 演示项目。在对 AWS IoT 凭证进行格式化的最后一步,请暂停并执行以下步骤。

  2. Microchip 提供了多种脚本工具来帮助设置 ATECC6 08A 部件。导航到 freertos/vendors/microchip/secure_elements/app/example_trust_chain_tool 目录并打开 README.md 文件。

  3. 请按照 README.md 文件中的说明预置您的设备。相应步骤包括:

    1. 创建并注册证书颁发机构 AWS

    2. 在 ATECC6 08A 上生成密钥并导出公钥和设备序列号

    3. 为设备生成证书并将该证书注册到 AWS

  4. 按照 开发人员模式密钥预置 的说明,将 CA 证书和设备证书加载到设备上。

使用 idf.py 脚本构建、刷写和运行 FreeRTOS 演示项目

您可以使用 Espressif 的 IDF 实用工具生成构建文件,构建应用程序二进制文件和刷写主板。

在 Windows、Linux 和 MacOS 上构建和刷写 FreeRTOS (ESP-IDF v4.2)

使用 idf.py 脚本构建项目并将二进制文件刷写到设备上。

注意

某些设置可能需要您使用在 idf.py 中使用端口选项 "-p port-name" 来指定正确的端口,如以下示例所示。

idf.py -p /dev/cu.usbserial-00101301B flash
构建和刷写项目
  1. 转到 FreeRTOS 下载目录的根目录。

  2. 在命令行窗口中输入以下命令以将 ESP-IDF 工具添加到终端 PATH 中:

    Windows

    vendors\espressif\esp-idf\export.bat

    Linux / macOS

    source vendors/espressif/esp-idf/export.sh
  3. build 目录中配置 cmake 并使用以下命令构建固件映像。

    idf.py -DVENDOR=espressif -DBOARD=esp32_ecc608a_devkitc -DCOMPILER=xtensa-esp32 build

    您应该会看到以下示例的输出。

    Running cmake in directory /path/to/hello_world/build Executing "cmake -G Ninja --warn-uninitialized /path/to/hello_world"... Warn about uninitialized values. -- Found Git: /usr/bin/git (found version "2.17.0") -- Building empty aws_iot component due to configuration -- Component names: ... -- Component paths: ... ... (more lines of build system output) [527/527] Generating hello-world.bin esptool.py v2.3.1 Project build complete. To flash, run this command: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x10000 build/hello-world.bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin or run 'idf.py -p PORT flash'

    如果没有错误,构建会生成固件二进制 .bin 文件。

  4. 使用以下命令擦除开发主板的闪存。

    idf.py erase_flash
  5. 使用 idf.py 脚本将应用程序二进制文件刷写到主板。

    idf.py flash
  6. 使用以下命令监控主板串行端口的输出。

    idf.py monitor
注意

您可以合并这些命令,如以下示例所示。

idf.py erase_flash flash monitor
注意

对于某些主机设置,您必须在刷写主板时指定端口,如以下示例所示。

idf.py erase_flash flash monitor -p /dev/ttyUSB1

使用 FreeRTOS 构建和刷新 FreeRTOS CMake

除了使用 IDF 软件开发工具包提供的 idf.py 脚本来构建和运行您的代码外,您还可以使用构建项目 CMake。目前,它支持 Unix Makefile 和 Ninja 构建系统。

构建和刷写项目
  1. 在命令行窗口中,转到 FreeRTOS 下载目录的根目录。

  2. 运行以下脚本,将 ESP-IDF 工具添加到 Shell 的 PATH 中。

    Windows

    vendors\espressif\esp-idf\export.bat

    Linux / macOS

    source vendors/espressif/esp-idf/export.sh
  3. 使用以下命令来生成构建文件。

    对于 Unix Makefiles

    cmake -DVENDOR=espressif -DBOARD=esp32_plus_ecc608a_devkitc -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0

    对于 Ninja

    cmake -DVENDOR=espressif -DBOARD=esp32_plus_ecc608a_devkitc -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0 -GNinja
  4. 擦除闪存,然后刷写主板。

    对于 Unix Makefiles

    make -C ./YOUR_BUILD_DIRECTORY erase_flash
    make -C ./YOUR_BUILD_DIRECTORY flash

    对于 Ninja

    ninja -C ./YOUR_BUILD_DIRECTORY erase_flash
    ninja -C ./YOUR_BUILD_DIRECTORY flash

监控云端上的 MQTT 消息 AWS

您可以在 AWS IoT 控制台中使用 MQTT 客户端来监控您的设备发送到 AWS 云端的消息。

使用 MQTT 客户端订阅 M AWS IoT QTT 主题
  1. 登录 AWS IoT 控制台

  2. 在导航窗格中,选择测试以打开 MQTT 客户端。

  3. Subscription topic (订阅主题)中,输入 your-thing-name/example/topic,然后选择 Subscribe to topic (订阅主题)

其他信息

有关使用 Espressif ESP32 主板和对其进行故障排除的更多信息,请参阅以下主题: