添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

ESP32-WROVER-KIT

这些版本的开发主板在 FreeRTOS 上均受支持。

有关这些主板最新版本的更多信息,请参阅 Espressif 网站上的 ESP32-DevKit C ESP-WROVER-KIT V4 或 v4.1

注意

目前,-WROVER-KIT 和 DevKit ESP C 的 FreeRTOS 端口不支持 ESP32对称多处理 (SMP) 功能。

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

如果您没有 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

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

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

      创建具有管理访问权限的用户
      1. 启用 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 访问门户

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

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

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

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

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

            有关设置 ESP-WROVER-KIT开发板硬件的信息,请参阅 ESP-WROVER-KITV4.1 入门指南

            重要

            当您阅读到 Espressif 手册的 入门 部分时,请暂停并返回到此页面上的说明部分。

            从以下网址下载亚马逊 FreeRTOS。 GitHub (有关说明,请参阅 README.md 文件。)

            设置开发环境

            要与您的主板通信,必须安装工具链。Espressif 提供了 ESP-IDF 来为主板开发软件。由于 ESP-IDF 将其 FreeRTOS 内核版本集成为组件,因此,Amazon FreeRTOS 包含删除了 FreeRTOS 内核的 ESP-IDF v4.2 自定义版本。这修复了编译时重复文件的问题。要使用 Amazon FreeRTOS 附带的 ESP-IDF v4.2 的自定义版本,请按照以下主机操作系统的说明进行操作。

            Windows

            运行 通用在线安装程序

            下载或使用 ESP-IDF 步骤,请选择 使用现有 ESP-IDF 目录 并将 选择现有 ESP-IDF 目录 设置为 freertos /vendors/espressif/esp-idf

            完成安装。

            macOS

            按照 适用于 macOS 的工具链标准设置先决条件 (ESP-IDF v4.2) 中的说明进行操作。

            重要

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

            打开一个命令行窗口。

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

            vendors/espressif/esp-idf/install.sh

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

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

            Linux

            按照 适用于 Linux 的工具链标准设置先决条件 (ESP-IDF v4.2) 中的说明进行操作。

            重要

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

            打开一个命令行窗口。

            转到 FreeRTOS 下载目录,然后运行以下脚本来下载并安装适用于您平台的 Espressif 工具链。

            vendors/espressif/esp-idf/install.sh

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

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

            建立串行连接。

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

            要在主机与 ESP32-WROVER-KIT 之间建立串行连接,必须安装 FTDI 虚拟 COM 端口驱动程序。您可以从 FTDI 下载该驱动程序。

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

            建立串行连接后,记下主板连接的串行端口。您需要它来刷写演示。

            配置 FreeRTOS 演示应用程序

            在本教程中,FreeRTOS 配置文件位于以下文件中: freertos /vendors/espressif/boards/ board-name /aws_demos/config_files/FreeRTOSConfig.h 。(例如,如果选择 AFR_BOARD espressif.esp32_devkitc ,则配置文件位于以下文件中: freertos /vendors/espressif/boards/esp32/aws_demos/config_files/FreeRTOSConfig.h 。)

            如果您运行的是 macOS 或 Linux,请打开终端提示符。如果您运行的是 Windows,请打开“ESP-IDF 4.x CMD”应用程序(如果您在安装 ESP-IDF 工具链时包含了此选项),否则打开“命令提示符”应用程序。

            要验证您是否已安装 Python3,请运行

            python --version

            此时显示已安装的版本。如果您未安装 Python 3.0.1 或更高版本,可以从 Python 网站进行安装。

            您需要 AWS 命令行界面 (CLI) 才能运行 AWS IoT 命令。如果你运行的是 Windows,请使用该 easy_install awscli AWS 命令在 “命令” 或 “ESP-IDF 4.x CMD” 应用程序中安装 CLI。

            如果你运行的是 macOS 或 Linux,请参阅 安装 CLI AWS

            aws configure

            并使用您的 AWS 访问密钥 ID、私有访问密钥和默认 AWS 区域配置 AWS CLI。有关更多信息,请参阅 配置 AWS CLI

            使用以下命令安装适用于 Python 的 AWS 开发工具包 (boto3):

            在 Windows 上,在“命令”或“ESP-IDF 4.x CMD”应用程序中,运行

            pip install boto3 --user
            注意

            有关详细信息,请参阅 Boto3 文档

            在 macOS 或 Linux 上,运行

            pip install tornado nose --user
            pip install boto3 --user

            FreeRTOS 包含 SetupAWS.py 脚本,可以更轻松地设置您的 Espressif 主板以连接到 AWS IoT。要配置此脚本,请打开 freertos /tools/aws_config_quick_start/configure.json 并设置以下属性:

            如果您运行的是 macOS 或 Linux,请打开终端提示符。如果您运行的是 Windows,请打开“ESP-IDF 4.x CMD”或“命令”应用程序。

            导航到 freertos /tools/aws_config_quick_start 目录运行

            python SetupAWS.py setup

            脚本执行以下操作:

            将 IoT 策略附加到证书,将证书附加到 AWS IoT 事物。

            使用您的 AWS IoT 终端节点、Wi-Fi SSID 和凭证填充 aws_clientcredential.h 文件

            设置您的证书和私有密钥格式,然后将其写入 aws_clientcredential_keys.h 标头文件

            注意

            出于演示目的,对该证书进行了硬编码。生产级应用程序应将这些文件存储在安全位置。

            有关 SetupAWS.py 的更多信息,请参阅 freertos /tools/aws_config_quick_start 目录中的 README.md 文件。

            在云上监控 MQTT 消息

            在运行 FreeRTOS 演示项目之前,您可以在控制台中 AWS IoT 设置 MQTT 客户端,以监控您的设备发送到云端的消息。 AWS

            使用 MQTT 客户端订阅 M AWS IoT QTT 主题
            1. 导航至 AWS IoT 控制台

              在导航窗格中,选择 测试 ,然后选择 MQTT 测试客户端

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

              当演示项目在您的设备上成功运行时,您会多次看到“Hello World!” 发送到您订阅的主题。

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

              您可以使用 Espressif 的 IDF 实用工具 ( idf.py ) 来构建项目,并将二进制文件刷写到设备上。

              注意

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

              idf.py -p /dev/cu.usbserial-00101301B flash
              在 Windows、Linux 和 macOS 上构建和刷写 FreeRTOS (ESP-IDF v4.2)
              1. 转到 FreeRTOS 下载目录的根目录。

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

                build 目录中配置 cmake 并使用以下命令构建固件映像。

                idf.py -DVENDOR=espressif -DBOARD=esp32_wrover_kit -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 CMake

                除了 IDF SDK 提供的用于构建和运行代码的 idf.py 脚本外,您还可以使用构建项目 CMake。目前,它支持 Unix Makefile 和 Ninja 构建系统。

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

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

                  对于 Unix Makefiles
                  cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0
                  对于 Ninja
                  cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0 -GNinja

                  构建 项目。

                  运行低功耗蓝牙演示

                  FreeRTOS 支持 低功耗蓝牙库 连接。

                  要跨低功耗蓝牙运行 FreeRTOS 演示项目,您必须在 iOS 或 Android 移动设备上运行 FreeRTOS 低功耗蓝牙移动开发工具包演示应用程序。

                  设置 FreeRTOS 低功耗蓝牙移动开发工具包演示应用程序
                  1. 按照 SDKs 适用于 FreeRTOS 蓝牙设备的移动设备 中的说明,在您的主机上下载并安装适用于移动平台的开发工具包。

                    按照 FreeRTOS 低功耗蓝牙移动开发工具包演示应用程序 中的说明,在您的移动设备上设置演示移动应用程序。

                    有关如何在主板上运行低功耗蓝牙 MQTT 演示的说明,请参阅 低功耗蓝牙 MQTT

                    有关如何在主板上运行 Wi-Fi 预置演示的说明,请参阅 Wi-Fi 预置

                    在你自己的项目中使用 FreeRTOS CMake ESP32

                    如果您想在 CMake 自己的项目中使用 FreeRTOS,可以将其设置为子目录,然后将其与您的应用程序一起构建。首先,从那里获取 FreeRTOS 的副本。 GitHub 您也可以使用以下命令将它设置为 Git 子模块,以便将来更轻松地更新。

                    git submodule add -b release https://github.com/aws/amazon-freertos.git freertos

                    如果已发布更新的版本,则可使用这些命令更新本地副本。

                    # Pull the latest changes from the remote tracking branch. git submodule update --remote -- freertos
                    # Commit the submodule change because it is pointing to a different revision now. git add freertos
                    git commit -m "Update FreeRTOS to a new release"

                    如果您的项目具有以下目录结构:

                    - freertos (the copy that you obtained from GitHub or the AWS IoT console) - src - main.c (your application code) - CMakeLists.txt

                    下面是在 FreeRTOS 中可用于构建应用程序的顶级 CMakeLists.txt 文件的示例。

                    cmake_minimum_required(VERSION 3.13) project(freertos_examples) # Tell IDF build to link against this target. set(IDF_EXECUTABLE_SRCS "<complete_path>/src/main.c") set(IDF_PROJECT_EXECUTABLE my_app) # Add FreeRTOS as a subdirectory. AFR_BOARD tells which board to target. set(AFR_BOARD espressif.esp32_devkitc CACHE INTERNAL "") add_subdirectory(freertos) # Link against the mqtt library so that we can use it. Dependencies are transitively # linked. target_link_libraries(my_app PRIVATE AFR::core_mqtt)

                    要生成项目,请运行以下 CMake 命令。确保 ESP32 编译器位于 PATH 环境变量中。

                    cmake -S . -B build-directory -DCMAKE_TOOLCHAIN_FILE=freertos/tools/cmake/toolchains/xtensa-esp32.cmake -GNinja
                    cmake --build build-directory

                    要将应用程序刷写到主板,请运行以下命令。

                    cmake --build build-directory --target flash

                    使用 FreeRTOS 中的组件

                    运行后 CMake,您可以在摘要输出中找到所有可用的组件。它应该类似于以下示例。

                    ====================Configuration for FreeRTOS==================== Version: 202107.00 Git version: 202107.00-g79ad6defb Target microcontroller: vendor: Espressif board: ESP32-DevKitC description: Development board produced by Espressif that comes in two variants either with ESP-WROOM-32 or ESP32-WROVER module family: ESP32 data ram size: 520KB program memory size: 4MB Host platform: OS: Linux-4.15.0-66-generic Toolchain: xtensa-esp32 Toolchain path: /opt/xtensa-esp32-elf CMake generator: Ninja FreeRTOS modules: Modules to build: backoff_algorithm, common, common_io, core_http, core_http_demo_dependencies, core_json, core_mqtt, core_mqtt_agent, core_mqtt_agent_demo_dependencies, core_mqtt_demo_dependencies, crypto, defender, dev_mode_key_ provisioning, device_defender, device_defender_demo_ dependencies, device_shadow, device_shadow_demo_dependencies, freertos_cli_plus_uart, freertos_plus_cli, greengrass, http_demo_helpers, https, jobs, jobs_demo_dependencies, kernel, logging, mqtt, mqtt_agent_interface, mqtt_demo_ helpers, mqtt_subscription_manager, ota, ota_demo_ dependencies, ota_demo_version, pkcs11, pkcs11_helpers, pkcs11_implementation, pkcs11_utils, platform, secure_sockets, serializer, shadow, tls, transport_interface_secure_sockets, Enabled by user: common_io, core_http_demo_dependencies, core_json, core_mqtt_agent_demo_dependencies, core_mqtt_demo_ dependencies, defender, device_defender, device_defender_demo_ dependencies, device_shadow, device_shadow_demo_dependencies, freertos_cli_plus_uart, freertos_plus_cli, greengrass, https, jobs, jobs_demo_dependencies, logging, ota_demo_dependencies, pkcs11, pkcs11_helpers, pkcs11_implementation, pkcs11_utils, platform, secure_sockets, shadow, wifi Enabled by dependency: backoff_algorithm, common, core_http, core_mqtt, core_mqtt_agent, crypto, demo_base, dev_mode_key_provisioning, freertos, http_demo_helpers, kernel, mqtt, mqtt_agent_ interface, mqtt_demo_helpers, mqtt_subscription_manager, ota, ota_demo_version, pkcs11_mbedtls, serializer, tls, transport_interface_secure_sockets, utils 3rdparty dependencies: jsmn, mbedtls, pkcs11, tinycbor Available demos: demo_cli_uart, demo_core_http, demo_core_mqtt, demo_core_mqtt_ agent, demo_device_defender, demo_device_shadow, demo_greengrass_connectivity, demo_jobs, demo_ota_core_http, demo_ota_core_mqtt, demo_tcp Available tests: =========================================================================

                    您可以引用 Modules to build 列表中的任何组件。要将它们链接到您的应用程序,请将 AFR:: 命名空间置于名称的前面,例如 AFR::core_mqtt AFR::ota 等。

                    使用 ESP-IDF 添加自定义组件

                    使用 ESP-IDF 时,您可以添加更多组件。例如,假定您想添加一个名为 example_component 的组件,并且您的项目如下所示:

                    - freertos - components - example_component - include - example_component.h - src - example_component.c - CMakeLists.txt - src - main.c - CMakeLists.txt

                    下面是您的组件的 CMakeLists.txt 文件示例。

                    add_library( example_component src/example_component.c ) target_include_directories( example_component PUBLIC include)

                    然后,在顶层 CMakeLists.txt 文件中,通过在 add_subdirectory(freertos) 后面插入以下行来添加组件。

                    add_subdirectory(component/example_component)

                    然后,修改 target_link_libraries 以包含您的组件。

                    target_link_libraries(my_app PRIVATE AFR::core_mqtt PRIVATE example_component)

                    默认情况下,此组件现在将自动链接到您的应用程序代码。现在,您可以包含其标头文件并调用它定义的函数。

                    覆盖 FreeRTOS 的配置

                    目前,未提供明确定义的方法来重新定义 FreeRTOS 源树外部的配置。默认情况下, CMake 将查找 freertos /vendors/espressif/boards/esp32/aws_demos/config_files/ freertos /demos/include/ 目录。但是,可以使用解决方法来告知编译器首先搜索其他目录。例如,您可以为 FreeRTOS 配置添加其他文件夹:

                    - freertos - freertos-configs - aws_clientcredential.h - aws_clientcredential_keys.h - iot_mqtt_agent_config.h - iot_config.h - components - src - CMakeLists.txt

                    freertos-configs 下的文件是从 freertos /vendors/espressif/boards/esp32/aws_demos/config_files/ freertos /demos/include/ 目录复制的。然后,在顶层 CMakeLists.txt 文件中,在 add_subdirectory(freertos) 的前面添加此行,以便编译器首先搜索此目录。

                    include_directories(BEFORE freertos-configs)

                    为 ESP-IDF 提供您自己的 sdkconfig

                    如果你想提供自己的变量 sdkconfig.default ,可以从命令行设置 CMake 变量 IDF_SDKCONFIG_DEFAULTS

                    cmake -S . -B build-directory -DIDF_SDKCONFIG_DEFAULTS=path_to_your_sdkconfig_defaults -DCMAKE_TOOLCHAIN_FILE=freertos/tools/cmake/toolchains/xtensa-esp32.cmake -GNinja

                    如果您不为自己的 sdkconfig.default 文件指定位置,则 FreeRTOS 将使用位于 freertos /vendors/espressif/boards/esp32/aws_demos/sdkconfig.defaults 的默认文件。

                    有关更多信息,请参阅 Espressif API 参考 中的 项目配置 ;如果您在成功编译后遇到问题,请参阅该页面上关于 已弃用选项及其替换 的部分。

                    如果您的项目具有一个名为 example_component 的组件,并且您要覆盖某些配置,以下是顶级 CMakeLists.txt 文件的完整示例。

                    cmake_minimum_required(VERSION 3.13) project(freertos_examples) set(IDF_PROJECT_EXECUTABLE my_app) set(IDF_EXECUTABLE_SRCS "src/main.c") # Tell IDF build to link against this target. set(IDF_PROJECT_EXECUTABLE my_app) # Add some extra components. IDF_EXTRA_COMPONENT_DIRS is a variable used by ESP-IDF # to collect extra components. get_filename_component( EXTRA_COMPONENT_DIRS "components/example_component" ABSOLUTE list(APPEND IDF_EXTRA_COMPONENT_DIRS ${EXTRA_COMPONENT_DIRS}) # Override the configurations for FreeRTOS. include_directories(BEFORE freertos-configs) # Add FreeRTOS as a subdirectory. AFR_BOARD tells which board to target. set(AFR_BOARD espressif.esp32_devkitc CACHE INTERNAL "") add_subdirectory(freertos) # Link against the mqtt library so that we can use it. Dependencies are transitively # linked. target_link_libraries(my_app PRIVATE AFR::core_mqtt)

                    如果你运行的是 macOS,但操作系统无法识别你的 ESP-WROVER-KIT,请确保你没有安装 D2XX 驱动程序。要卸载它们,请按照 适用于 macOS X 的 FTDI 驱动程序安装指南 中的说明操作。

                    ESP-IDF 提供的监控实用工具(使用 make 监控调用)可帮助您解码地址。因此,在应用程序停止工作时,它可以帮助您获取一些有意义的回溯跟踪信息。有关更多信息,请参阅 Espressif 网站上的 自动解码地址

                    也可以在不需要任何特殊的 JTAG 硬件的情况下启用 GDBstub 与 gdb 的通信。有关更多信息,请参阅乐鑫 GDBStub网站上的 “ 使用启动 GDB ”。

                    有关设置基于 OpenOCD 的环境的信息(如果需要基于 JTAG 硬件的调试),请参阅 Espressif 网站上的 JTAG 调试

                    如果无法使用 pip 在 macOS 上安装 pyserial ,请从 pyserial 网站 下载。

                    如果主板连续重置,请尝试通过在终端上输入以下命令来擦除闪存:

                    make erase_flash

                    如果您在运行 idf_monitor.py 时看到错误,请使用 Python 2.7。

                    ESP-IDF 中必需的库包括在 FreeRTOS 中,因此无需从外部下载。如果已设置 IDF_PATH 环境变量,我们建议您在构建 FreeRTOS 之前将其清除。

                    在 Windows 上,生成项目可能需要 3-4 分钟。您可在 make 命令上使用 -j4 开关来缩短构建时间。

                    make flash monitor -j4

                    如果您的设备在连接时遇到问题 AWS IoT,请打开该 aws_clientcredential.h 文件,并验证文件中是否正确定义了配置变量。 clientcredentialMQTT_BROKER_ENDPOINT[] 应该看起来像 1234567890123-ats.iot.us-east-1.amazonaws.com

                    如果您遵循 在你自己的项目中使用 FreeRTOS CMake ESP32 中的步骤,并且您看到来自链接器的未定义的引用错误,则通常是由于缺少关联的库或演示所致。要添加它们,请使用标准 CMake 函数更新 CMakeLists.txt 文件(位于根目录下) target_link_libraries

                    ESP-IDF v4.2 支持使用 xtensa\-esp32\-elf\-gcc 8\.2\.0\. 工具链。如果您使用的是较早版本的 Xtensa 工具链,请下载所需的版本。

                    如果您看到如下错误日志,表明不满足 ESP-IDF v4.2 的 python 依赖项要求:

                    The following Python requirements are not satisfied: click>=5.0 pyserial>=3.0 future>=0.15.2 pyparsing>=2.0.3,<2.4.0 pyelftools>=0.22 gdbgui==0.13.2.0 pygdbmi<=0.9.0.2 reedsolo>=1.5.3,<=1.5.4 bitstring>=3.1.6 ecdsa>=0.16.0 Please follow the instructions found in the "Set up the tools" section of ESP-IDF Getting Started Guide

                    请使用以下 Python 命令在您的平台上安装 python 依赖项:

                    root/vendors/espressif/esp-idf/requirements.txt

                    有关问故障排除的更多信息,请参阅 问题排查入门

                    在 Espressif ESP32-DevKit C 和 ESP-WROVER-KIT (ESP-IDF v4.2) 上调试代码

                    本节介绍如何使用 ESP-IDF v4.2 调试 Espressif 硬件。您需要 JTAG 到 USB 电缆。我们使用 USB 到 MPSSE 电缆(例如, FTDI C232HM-DDHSL-0 )。

                    对于 FTDI C232HM-DDHSL-0 电缆,这些是与 Dev ESP32 Kitc 的连接。

                    | C232HM-DDHSL-0 Wire Color | ESP32 GPIO Pin | JTAG Signal Name | | ------------------------- | -------------- | ---------------- | | Brown (pin 5) | IO14 | TMS | | Yellow (pin 3) | IO12 | TDI | | Black (pin 10) | GND | GND | | Orange (pin 2) | IO13 | TCK | | Green (pin 4) | IO15 | TDO |
                    ESP-WROVER-KIT JTAG 安装程序

                    对于 FTDI C232HM-DDHSL-0 电缆,这些是与-WROVER ESP32-KIT 的连接。

                    | C232HM-DDHSL-0 Wire Color | ESP32 GPIO Pin | JTAG Signal Name | | ------------------------- | -------------- | ---------------- | | Brown (pin 5) | IO14 | TMS | | Yellow (pin 3) | IO12 | TDI | | Orange (pin 2) | IO13 | TCK | | Green (pin 4) | IO15 | TDO |

                    这些表源自 FTDI C232HM-DDHSL-0 数据表 。有关更多信息,请参阅数据表中的“C232HM MPSSE 电缆连接和机械详细信息”。

                    要在上启用 JTAG,请将跳线放在 TMS ESP-WROVER-KIT、TDO、TDI、TCK 和 S_TDI 引脚上,如下所示。

                    在 Windows 上设置调试
                    1. 将 FTDI C232HM-DDHSL-0 的 USB 一端连接到您的计算机,另一端的操作如在 Espressif ESP32-DevKit C 和 ESP-WROVER-KIT (ESP-IDF v4.2) 上调试代码中所述。FTDI C232HM-DDHSL-0 设备应显示在 设备管理器 下的 通用串行总线控制器 中。

                      在通用串行总线设备列表下,右键单击 C232HM-DDHSL-0 设备,然后选择 属性

                      注意

                      该设备可能被列为 USB Serial Port (USB 串行端口)

                      要查看设备的属性,请在属性窗口中选择 详细信息 选项卡。如果未列出设备,请安装 适用于 FTDI C232HM-DDHSL-0 的 Windows 驱动程序

                      在 “ 详细信息 ” 选项卡上,选择 “ 属性 ”,然后选择 “ 硬件 ” IDs。您将在 字段中看到与以下类似的内容。

                      FTDIBUS\COMPORT&VID_0403&PID_6014

                      在此示例中,供应商 ID 为 0403,产品 ID 为 6014。

                      验证它们是否 IDs 匹配 projects/espressif/esp32/make/aws_demos/esp32_devkitj_v1.cfg 。 IDs 在以 IDs 开头的行中指定, ftdi_vid_pid 后面是供应商 ID 和产品 ID。

                      ftdi_vid_pid 0x0403 0x6014

                      下载 OpenOCD for Windows

                      将文件解压缩到 C:\ 并将 C:\openocd-esp32\bin 添加到系统路径。

                      OpenOCD 需要 libusb,默认情况下未在 Windows 上安装。安装 libusb

                      下载 zadig.exe

                      运行 zadig.exe 。在 Options (选项) 菜单中,选择 List All Devices (列出所有设备)

                      从下拉菜单中,选择 C232HM-DDHSL-0

                      在绿色箭头右侧的目标驱动程序字段中,选择 WinUSB

                      从目标驱动程序字段下的列表中,选择箭头,然后选择 安装驱动程序 。选择 Replace Driver (替换驱动程序)

                      打开命令提示符,转到 FreeRTOS 下载目录的根目录,然后运行以下命令。

                      idf.py openocd

                      保持此命令提示符窗口处于打开状态。

                      打开新的命令提示符,转到 FreeRTOS 下载目录的根目录,然后运行

                      idf.py flash monitor

                      打开另一个命令提示符,转到 FreeRTOS 下载目录的根目录,然后等待演示开始在您的主板上运行。开始演示时,请运行

                      idf.py gdb

                      程序应在 main 函数中停止。

                      注意

                      最多 ESP32 支持两个断点。

                      在 macOS 上进行调试 (ESP-IDF v4.2)

                      下载 适用于 macOS 的 FTDI 驱动程序

                      下载 OpenOCD

                      提取下载的 .tar 文件,并将 .bash_profile 中的路径设置为 OCD_INSTALL_DIR/openocd-esp32/bin

                      使用以下命令在 macOS 上安装 libusb

                      brew install libusb

                      使用以下命令卸载串行端口驱动程序。

                      sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver

                      使用以下命令卸载串行端口驱动程序。

                      sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver

                      如果您在高于 10.9 的 macOS 版本上运行,请使用以下命令卸载 Apple 的 FTDI 驱动程序。

                      sudo kextunload -b com.apple.driver.AppleUSBFTDI

                      使用以下命令获取 FTDI 电缆的产品 ID 和供应商 ID。它会列出连接的 USB 设备。

                      system_profiler SPUSBDataType

                      system_profiler 的输出应与以下内容类似。

                      DEVICE: Product ID: product-ID Vendor ID: vendor-ID (Future Technology Devices International Limited)

                      打开 projects/espressif/esp32/make/aws_demos/esp32_devkitj_v1.cfg 文件。设备的供应商 ID 和产品 ID 在以 ftdi_vid_pid 开头的行中指定。更改 IDs 以匹配上一步 IDs 中 system_profiler 输出的内容。

                      打开终端窗口,转到 FreeRTOS 下载目录的根目录,然后使用以下命令运行 OpenOCD。

                      idf.py openocd

                      让该终端窗口保持打开状态。

                      打开一个新的终端,使用以下命令来加载 FTDI 串行端口驱动程序。

                      sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver

                      转到 FreeRTOS 下载目录的根目录,然后运行

                      idf.py flash monitor

                      打开另一个新的终端,转到 FreeRTOS 下载目录的根目录,然后运行

                      idf.py gdb

                      程序应在 main 停止。

                      在 Linux 上进行调试 (ESP-IDF v4.2)

                      下载 OpenOCD 。提取 tarball 并按照自述文件中的安装说明操作。

                      使用以下命令在 Linux 上安装 libusb。

                      sudo apt-get install libusb-1.0

                      打开终端并输入 ls -l /dev/ttyUSB* 来列出连接到您计算机的所有 USB 设备。这可以帮助您检查操作系统是否识别主板上的 USB 端口。将会看到类似下面的输出。

                      $ls -l /dev/ttyUSB* crw-rw---- 1 root dialout 188, 0 Jul 10 19:04 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 Jul 10 19:04 /dev/ttyUSB1

                      注销,然后登录并重新对主板加电,使更改生效。在终端提示符下,列出 USB 设备。确保组所有者已从 dialout 更改为 plugdev

                      $ls -l /dev/ttyUSB* crw-rw---- 1 root plugdev 188, 0 Jul 10 19:04 /dev/ttyUSB0 crw-rw---- 1 root plugdev 188, 1 Jul 10 19:04 /dev/ttyUSB1

                      较小编号的 /dev/ttyUSBn 接口用于 JTAG 通信。另一个接口被路由到 ESP32的串行端口 (UART),用于将代码上传到 ESP32的闪存。

                      在终端窗口中,转到 FreeRTOS 下载目录的根目录,然后使用以下命令运行 OpenOCD。

                      idf.py openocd

                      打开另一个终端,转到 FreeRTOS 下载目录的根目录,然后运行以下命令。

                      idf.py flash monitor

                      打开另一个终端,转到 FreeRTOS 下载目录的根目录,然后运行以下命令:

                      idf.py gdb