本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
乐鑫-WROOM-32SE ESP32 入门
重要
这是《FreeRTOS 用户指南》的存档版本,可用于 FreeRTOS 版本 202012.00。有关本文档的最新版本,请参阅《FreeRTOS 用户指南》。
按照本教程开始使用 Espressif-WROOM-32SE ESP32。要在合作伙伴设备目录中向我们的合作伙伴购买一台,请参阅 ESP32-WROOM-32SE。 AWS
注意
目前,-WROOM-32SE 的 FreeRTOS 端口不支持 ESP32对称多处理 (SMP) 功能。
概览
该教程将指导您完成以下步骤:
-
将主板连接到主机。
-
在您的主机上安装软件,以开发和调试微控制器主板的嵌入式应用程序。
-
将 FreeRTOS 演示应用程序交叉编译为二进制映像
-
将应用程序二进制映像加载到您的主板中,然后运行该应用程序
-
使用串行连接监控和调试正在运行的应用程序
先决条件
在开始在乐鑫看板上使用 FreeRTOS 之前,您必须设置账户和权限。 AWS
注册获取 AWS 账户
如果您没有 AWS 账户,请完成以下步骤来创建一个。
要注册 AWS 账户
按照屏幕上的说明操作。
注册过程的一部分涉及接听电话或短信,并在电话键盘上输入验证码。
当您注册时 AWS 账户,就会创建AWS 账户根用户一个。根用户有权访问该账户中的所有 AWS 服务 和资源。作为最佳安全实践,请为用户分配管理访问权限,并且只使用根用户来执行需要根用户访问权限的任务。
AWS 注册过程完成后会向您发送一封确认电子邮件。您可以随时前往 https://aws.amazon.com/
创建具有管理访问权限的用户
注册后,请保护您的安全 AWS 账户 AWS 账户根用户 AWS IAM Identity Center,启用并创建管理用户,这样您就不会使用 root 用户执行日常任务。
保护你的 AWS 账户根用户
-
选择 Root 用户并输入您的 AWS 账户 电子邮件地址,以账户所有者的身份登录。AWS Management Console
在下一页上,输入您的密码。 要获取使用根用户登录方面的帮助,请参阅《AWS 登录 用户指南》中的 Signing in as the root user。
-
为您的根用户启用多重身份验证(MFA)。
有关说明,请参阅 I A M 用户指南中的为 AWS 账户 根用户启用虚拟 MFA 设备(控制台)。
创建具有管理访问权限的用户
-
启用 IAM Identity Center。
有关说明,请参阅《AWS IAM Identity Center 用户指南》中的 Enabling AWS IAM Identity Center。
-
在 IAM Identity Center 中,为用户授予管理访问权限。
有关使用 IAM Identity Center 目录 作为身份源的教程,请参阅《用户指南》 IAM Identity Center 目录中的使用默认设置配置AWS IAM Identity Center 用户访问权限。
以具有管理访问权限的用户身份登录
-
要使用您的 IAM Identity Center 用户身份登录,请使用您在创建 IAM Identity Center 用户时发送到您的电子邮件地址的登录网址。
有关使用 IAM Identity Center 用户登录的帮助,请参阅AWS 登录 用户指南中的登录 AWS 访问门户。
将访问权限分配给其他用户
-
在 IAM Identity Center 中,创建一个权限集,该权限集遵循应用最低权限的最佳做法。
有关说明,请参阅《AWS IAM Identity Center 用户指南》中的 Create a permission set。
-
将用户分配到一个组,然后为该组分配单点登录访问权限。
有关说明,请参阅《AWS IAM Identity Center 用户指南》中的 Add groups。
要提供访问权限,请为您的用户、组或角色添加权限:
-
中的用户和群组 AWS IAM Identity Center:
创建权限集合。按照《AWS IAM Identity Center 用户指南》中创建权限集的说明进行操作。
-
通过身份提供商在 IAM 中托管的用户:
创建适用于身份联合验证的角色。按照《IAM 用户指南》中针对第三方身份提供商创建角色(联合身份验证)的说明进行操作。
-
IAM 用户:
-
创建您的用户可以担任的角色。按照《IAM 用户指南》中为 IAM 用户创建角色的说明进行操作。
-
(不推荐使用)将策略直接附加到用户或将用户添加到用户组。按照《IAM 用户指南》中向用户添加权限(控制台)中的说明进行操作。
-
注意
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 一起使用
建立串行连接
-
要在主机和 ESP32-WROOM-32SE 之间建立串行连接,请安装 CP21 0x USB 到 UART Bridge VCP 驱动程序。您可以从 Silicon Labs
下载这些驱动程序。 -
按照步骤与建立串行连接 ESP32
。 -
建立串行连接后,记下主板连接的串行端口。在构建演示时需要用到它。
下载并配置 FreeRTOS
设置好环境后,您可以从中下载 FreeRTOS。GitHub
重要
ATECC608A 设备具有一次性初始化,该初始化会在首次运行项目时(在调用期间C_InitToken
)锁定在设备上。但是,FreeRTOS 演示项目和测试项目的配置不同。如果设备在演示项目配置期间被锁定,则并非测试项目中的所有测试都会成功。
-
按照配置 FreeRTOS 演示中的步骤配置 FreeRTOS 演示项目。跳过最后一步格式化您的 AWS IoT 凭证,然后改为执行以下步骤。
-
Microchip 提供了多种脚本工具来帮助设置 ATECC6 08A 部件。导航到
目录,然后打开freertos
/vendors/microchip/secure_elements/app/example_trust_chain_toolREADME.md
文件。 -
请按照
README.md
文件中的说明预置您的设备。相应步骤包括:-
创建并注册证书颁发机构 AWS
-
在 ATECC6 08A 上生成密钥并导出公钥和设备序列号
-
为设备生成证书并向注册该证书 AWS
-
-
按照 开发人员模式密钥预置 的说明,将 CA 证书和设备证书加载到设备上。
构建、刷写并运行 FreeRTOS 演示项目
您可以使用生成构建文件,使用 CMake Make 来生成应用程序二进制文件,使用乐鑫的 IDF 实用程序来刷新开发板。
在 Linux 或 macOS 上构建 FreeRTOS (ESP-IDF v3.3)
如果您使用的是 Windows,则可以跳至 在 Windows 上构建 FreeRTOS (ESP-IDF v3.3)。
CMake 用于生成生成文件,然后使用 Make 生成应用程序。
使用生成演示应用程序的编译文件 CMake
-
转到 FreeRTOS 下载目录的根目录。
-
在命令行窗口中,输入以下命令以生成构建文件。
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 构建应用程序
-
导航到
build
目录。 -
在命令行窗口中,输入以下命令以通过 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
-
转到 FreeRTOS 下载目录的根目录。
-
在命令行窗口中,输入以下命令以生成构建文件。
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)
构建应用程序
-
导航到
build
目录。 -
在命令行窗口中,输入以下命令以调用 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
重要
在 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
建立串行连接
-
要在主机和 ESP32-WROOM-32SE 之间建立串行连接,请安装 CP21 0x USB 到 UART Bridge VCP 驱动程序。您可以从 Silicon Labs
下载这些驱动程序。 -
按照步骤与建立串行连接 ESP32
。 -
建立串行连接后,记下主板连接的串行端口。在构建演示时需要用到它。
下载并配置 FreeRTOS
设置好环境后,您可以从中下载 FreeRTOS。GitHub
重要
ATECC608A 设备具有一次性初始化,该初始化会在首次运行项目时(在调用期间C_InitToken
)锁定在设备上。但是,FreeRTOS 演示项目和测试项目的配置不同。如果设备在演示项目配置期间被锁定,则并非测试项目中的所有测试都会成功。
-
按照配置 FreeRTOS 演示中的步骤配置 FreeRTOS 演示项目。在对 AWS IoT 凭证进行格式化的最后一步,请暂停并执行以下步骤。
-
Microchip 提供了多种脚本工具来帮助设置 ATECC6 08A 部件。导航到
目录并打开freertos
/vendors/microchip/secure_elements/app/example_trust_chain_toolREADME.md
文件。 -
请按照
README.md
文件中的说明预置您的设备。相应步骤包括:-
创建并注册证书颁发机构 AWS
-
在 ATECC6 08A 上生成密钥并导出公钥和设备序列号
-
为设备生成证书并将该证书注册到 AWS
-
-
按照 开发人员模式密钥预置 的说明,将 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
构建和刷写项目
-
转到 FreeRTOS 下载目录的根目录。
-
在命令行窗口中输入以下命令以将 ESP-IDF 工具添加到终端 PATH 中:
Windows
vendors\espressif\esp-idf\export.bat
Linux / macOS
source vendors/espressif/esp-idf/export.sh
-
在
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 文件。
-
使用以下命令擦除开发主板的闪存。
idf.py erase_flash
-
使用
idf.py
脚本将应用程序二进制文件刷写到主板。idf.py flash
-
使用以下命令监控主板串行端口的输出。
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 构建系统。
构建和刷写项目
-
在命令行窗口中,转到 FreeRTOS 下载目录的根目录。
-
运行以下脚本,将 ESP-IDF 工具添加到 Shell 的 PATH 中。
Windows
vendors\espressif\esp-idf\export.bat
Linux / macOS
source vendors/espressif/esp-idf/export.sh
-
使用以下命令来生成构建文件。
对于 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 -
擦除闪存,然后刷写主板。
对于 Unix Makefiles
make -C
./YOUR_BUILD_DIRECTORY
erase_flashmake -C
./YOUR_BUILD_DIRECTORY
flash对于 Ninja
ninja -C
./YOUR_BUILD_DIRECTORY
erase_flashninja -C
./YOUR_BUILD_DIRECTORY
flash
监控云端上的 MQTT 消息 AWS
您可以在 AWS IoT 控制台中使用 MQTT 客户端来监控您的设备发送到 AWS 云端的消息。
使用 MQTT 客户端订阅 M AWS IoT QTT 主题
-
登录 AWS IoT 控制台
。 -
在导航窗格中,选择测试以打开 MQTT 客户端。
-
在 Subscription topic (订阅主题)中,输入
,然后选择 Subscribe to topic (订阅主题)。your-thing-name
/example/topic
其他信息
有关使用 Espressif ESP32 主板和对其进行故障排除的更多信息,请参阅以下主题: