開始使用意式濃縮咖啡 ESP32-DevKit C 和歐洲環保工具組 - FreeRTOS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

開始使用意式濃縮咖啡 ESP32-DevKit C 和歐洲環保工具組

重要

此參考集成託管在亞馬遜的 FreeRTOS 存儲庫上,該存儲庫已被棄用。我們建議您在建立新專案時從這裡開始。如果您已經有一個現有的 FreeRTOS 專案以目前已取代的亞馬遜免費伺服器儲存庫為基礎,請參閱. 亞馬遜自由 Github 存儲庫遷移指南

注意

若要探索如何在您自己的 Expressif IDF 專案中整合 FreeRTOS 模組化程式庫和示範,請參閱我們針對 ESP32-C3 平台的精選參考整合。

按照本教程開始使用配備 ESP32-WROOM-32,ESP32-SOLO-1,或 ESP-勞弗模塊和 ESP-勞弗羅弗套件-VB 的意式濃縮咖啡 ESP32-DevKit C。若要在合作夥伴裝置目錄上向我們的 AWS 合作夥伴購買合作夥伴,請使用下列連結:

FreeRTOS 支援這些版本的開發板。

如需有關這些主機板最新版本的詳細資訊,請參閱義式咖啡網站上的 ESP32-DevKit C V4 或 ESP-勞弗羅夫套件第 4.1 版。

注意

目前 ESP32-WROVER-KIT 和 ESP DevKit C 的 FreeRTOS 連接埠不支援對稱式多重處理 (SMP) 功能。

概觀

本教學課程將指引您完成下列步驟:

  1. 將主機板連線到主機機器。

  2. 在主機機器上安裝軟體以對微控制器主機板的內嵌應用程式進行開發和除錯。

  3. 將 FreeRTOS 示範應用程式交叉編譯為二進位映像檔。

  4. 將應用程式二進位映像載入主機板,然後執行應用程式。

  5. 透過序列連線與在開發板上執行的應用程式互動,以便進行監控和除錯。

必要條件

在您開始使用 FreeRTOS 之前,您必須先設定您的帳戶和權限。 AWS

註冊一個 AWS 帳戶

如果您沒有 AWS 帳戶,請完成以下步驟來建立一個。

若要註冊成為 AWS 帳戶
  1. 開啟 https://portal.aws.amazon.com/billing/signup

  2. 請遵循線上指示進行。

    部分註冊程序需接收來電,並在電話鍵盤輸入驗證碼。

    當您註冊一個時 AWS 帳戶,將創建AWS 帳戶根使用者一個。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。安全性最佳做法是將管理存取權指派給使用者,並僅使用 root 使用者來執行需要 root 使用者存取權的工作。

AWS 註冊過程完成後,會向您發送確認電子郵件。您可以隨時登錄 https://aws.amazon.com/ 並選擇 我的帳戶,以檢視您目前的帳戶活動並管理帳戶。

建立具有管理權限的使用者

註冊後,請保護您的 AWS 帳戶 AWS 帳戶根使用者 AWS IAM Identity Center、啟用和建立系統管理使用者,這樣您就不會將 root 使用者用於日常工作。

保護您的 AWS 帳戶根使用者
  1. 選擇 Root 使用者並輸入您的 AWS 帳戶 電子郵件地址,以帳戶擁有者身分登入。AWS Management Console在下一頁中,輸入您的密碼。

    如需使用根使用者登入的說明,請參閱 AWS 登入 使用者指南中的以根使用者身分登入

  2. 若要在您的根使用者帳戶上啟用多重要素驗證 (MFA)。

    如需指示,請參閱《IAM 使用者指南》的為 AWS 帳戶 根使用者啟用虛擬 MFA 裝置 (主控台)

建立具有管理權限的使用者
  1. 啟用 IAM Identity Center。

    如需指示,請參閱 AWS IAM Identity Center 使用者指南中的啟用 AWS IAM Identity Center

  2. 在 IAM 身分中心中,將管理存取權授予使用者。

    若要取得有關使用 IAM Identity Center 目錄 做為身分識別來源的自學課程,請參閱《使用指南》 IAM Identity Center 目錄中的「以預設值設定使用AWS IAM Identity Center 者存取」。

以具有管理權限的使用者身分登入
指派存取權給其他使用者
  1. 在 IAM 身分中心中,建立遵循套用最低權限許可的最佳做法的權限集。

    如需指示,請參閱《AWS IAM Identity Center 使用指南》中的「建立權限集」。

  2. 將使用者指派給群組,然後將單一登入存取權指派給群組。

    如需指示,請參閱《AWS IAM Identity Center 使用指南》中的「新增群組」。

若要提供存取權,請新增權限至您的使用者、群組或角色:

  • 使用者和群組位於 AWS IAM Identity Center:

    建立權限合集。請按照 AWS IAM Identity Center 使用者指南 中的 建立權限合集 說明進行操作。

  • 透過身分提供者在 IAM 中管理的使用者:

    建立聯合身分的角色。請按照 IAM 使用者指南為第三方身分提供者 (聯合) 建立角色 中的指示進行操作。

  • IAM 使用者:

開始使用

注意

本教學課程中的 Linux 指令需要您使用 Bash 外殼。

  1. 設定濃縮咖啡硬體。

    • 如需有關設定 ESP32-DevKit C 開發主機板硬體的詳細資訊,請參閱 ESP32-DevKit C V4 入門指南

    • 如需有關設定開發板硬體的詳細資訊,請參閱 ESP 開發板硬體的相關資訊,請參閱 ESP- WROVER-KIT 第 4.1 版入門指南。

    重要

    當您到達 Espressif 指南的 [開始使用] 區段時,請停止,然後返回此頁面上的指示。

  2. 從下載 Amazon FreeRTOS。GitHub如需指示,請參閱 Readme.md 檔案。)

  3. 設定您的開發環境

    若要與主機板通訊,您必須安裝工具鏈。咖啡提供 ESP-IDF 為他們的主板開發軟件。由於 ESP-IDF 已將自己的 FreeRTOS 核心版本整合為一個元件,因此 Amazon FreeRTOS 內含 ESP-IDF v4.2 的自訂版本,該版本已移除了 FreeRTOS 核心。這修復了編譯時重複文件的問題。若要使用 Amazon FreeRTOS 隨附的 ESP-IDF v4.2 的自訂版本,請遵循以下適用於主機作業系統的指示。

    Windows

    1. 下載適用於視窗的 ESP-IDF 通用線上安裝程式

    2. 執行通用線上安裝程式

    3. 當您進入下載或使用 ESP-IDF 步驟時,請選取 [使用現有的 ESP-IDF 目錄] 並將 [選擇現有的 ESP-IDF 目錄] 設定為。 freertos/vendors/espressif/esp-idf

    4. 完成安裝。

    macOS

    1. 請依照適用於 macOS 的「工具鏈先決條件標準設定」(ESP-IDF 第 4.2 版) 中的指示進行。

      重要

      當您到達「後續步驟」下的「取得 ESP-IDF」指示時,請停止,然後返回此頁面上的指示。

    2. 開啟命令列視窗。

    3. 瀏覽至 FreeRTOS 下載目錄,然後執行下列指令碼,為您的平台下載並安裝 espressif 工具鏈。

      vendors/espressif/esp-idf/install.sh
    4. 使用下列指令,將 ESP-IDF 工具鏈工具新增至終端機的路徑。

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

    Linux

    1. 遵循適用於 Linux 的工具鏈先決條件標準設定 (ESP-IDF v 4.2) 中的指示。

      重要

      當您到達「後續步驟」下的「取得 ESP-IDF」指示時,請停止,然後返回此頁面上的指示。

    2. 開啟命令列視窗。

    3. 瀏覽至 FreeRTOS 下載目錄,然後執行下列指令碼,為您的平台下載並安裝 Espressif 工具鏈。

      vendors/espressif/esp-idf/install.sh
    4. 使用下列指令,將 ESP-IDF 工具鏈工具新增至終端機的路徑。

      source vendors/espressif/esp-idf/export.sh
  4. 建立序列連線。

    1. 若要在主機與 ESP32-DevKit C 之間建立序列連線,您必須安裝 CP210 轉 UART 橋接器 VCP 驅動程式。您可以從 Silicon Labs 下載這些驅動程式。

      若要在主機與 ESP32-WROVER-KIT 之間建立序列連線,您必須安裝 FTDI 虛擬 COM 連接埠驅動程式。您可以從 FTDI 下載此驅動程序。

    2. 請按照以下步驟使用 ESP32 建立串行連接

    3. 在您建立序連接之後,請記下開發板連接的序列連接埠。你需要它來閃存演示。

設定 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。)

  1. 如果您執行的是 macOS 或 Linux,請開啟終端機提示。如果您正在運行 Windows,請打開「ESP-IDF 4.x CMD」應用程序(如果您在安裝 ESP-IDF 工具鏈時包含此選項),否則打開「命令提示符」應用程序。

  2. 要驗證您是否已安裝 Python3,請運行

    python --version

    安裝的版本即會顯示。如果您沒有安裝 Python 3.0.1 或更高版本,則可以從 Python 網站進行安裝。

  3. 您需要命 AWS 令列介面 (CLI) 才能執行命 AWS IoT 令。如果您正在執行視窗,請使用easy_install awscli指令在「命令」或「ESP-IDF 4.x CMD」應用程式中安裝 AWS CLI。

    如果您執行的是 macOS 或 Linux,請參閱安裝 AWS CLI

  4. 執行

    aws configure

    並 AWS 使用您的訪問密鑰 ID,秘密訪問密鑰和默認 AWS 區域配置 AWS CLI。如需詳細資訊,請參閱設定 AWS CLI

  5. 使用下面的命令來安裝開 AWS 發套件的 Python(博托 3):

    • 在視窗上,在「命令」或「ESP-IDF 4.x CMD」應用程式中執行

      pip install boto3 --user
      注意

      有關詳細信息,請參閱 Boto3 文檔

    • 在 macOS 或 Linux 上執行

      pip install tornado nose --user

      然後運行

      pip install boto3 --user

    FreeRTOS 包含SetupAWS.py腳本,可以更輕鬆地設置您的濃縮咖啡板以連接到。 AWS IoT若要設定此指令碼,請開啟 freertos/tools/aws_config_quick_start/configure.json 並設定下列屬性:

    afr_source_dir

    您電腦上 freertos 目錄的完整路徑。請確定您使用斜線來指定此路徑。

    thing_name

    您要指派給代表您看板之 AWS IoT 物件的名稱。

    wifi_ssid

    您的 Wi-Fi 網路 SSID。

    wifi_password

    您 Wi-Fi 網路的密碼。

    wifi_security

    您 Wi-Fi 網路的安全類型。

    以下是有效的安全性類型:

    • eWiFiSecurityOpen (開放,不具安全性)

    • eWiFiSecurityWEP (WEP 安全性)

    • eWiFiSecurityWPA (WPA 安全性)

    • eWiFiSecurityWPA2 (WPA2 安全性)

  6. 執行組態指令碼。

    1. 如果您執行的是 macOS 或 Linux,請開啟終端機提示。如果您正在執行視窗,請開啟「ESP-IDF 4.x CMD」或「命令」應用程式。

    2. 導航到目freertos/tools/aws_config_quick_start錄並運行

      python SetupAWS.py setup

      指令碼會執行以下操作:

      • 建立 IoT 物件、憑證和原則。

      • 將 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 示範專案之前,您可以在主控台中設定 MQTT 用戶端,以監 AWS IoT 控裝置傳送至雲端的訊息。 AWS

若要向 MQTT 用戶端訂閱 MQTT 主題 AWS IoT
  1. 導覽至 AWS IoT 主控台

  2. 在導覽窗格中,選擇 [測試],然後選擇 [MQTT 測試用戶端]。

  3. 訂閱主題中輸入 your-thing-name/example/topic,然後選擇訂閱主題

當演示項目成功運行在您的設備上,你會看到「你好世界!」 多次發送到您訂閱的主題。

使用 idf.py 指令碼建置、快閃記憶體及執行 FreeRTOS 示範專案

您可以使用 Espressif 的 IDF 實用程序(idf.py)來構建項目並將二進製文件刷新到您的設備上。

注意

某些設定可能需要使用連接埠選項"-p port-name"idf.py來指定正確的連接埠,如下列範例所示。

idf.py -p /dev/cu.usbserial-00101301B flash
在視窗、Linux 和蘋果系統上建置和更新免費軟體 (ESP-IDF 第 4.2 版)
  1. 瀏覽至 FreeRTOS 下載目錄的根目錄。

  2. 在命令行視窗中,輸入以下命令,以將 ESP-IDF 工具添加到終端機的 PATH。

    視窗 (「命令」應用程式)
    vendors\espressif\esp-idf\export.bat
    視窗 (「ESP-IDF 4.x CMD」應用程式)

    (當您打開應用程序時,這已經完成了。)

    macOS 系統
    source vendors/espressif/esp-idf/export.sh
  3. 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 文件。

  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

使用 CMake 構建和閃存 FreeRTOS 務器

除了 IDF SDK 提供的idf.py腳本來構建和運行代碼之外,您還可以使用 CMake 構建項目。目前,它支持 Unix 生成文件或忍者構建系統。

要構建和刷新項目
  1. 在命令列視窗中,瀏覽至 FreeRTOS 下載目錄的根目錄。

  2. 執行下列指令碼,將 ESP-IDF 工具新增至殼層的路徑。

    Windows
    vendors\espressif\esp-idf\export.bat
    macOS 系統
    source vendors/espressif/esp-idf/export.sh
  3. 輸入以下命令以生成構建文件。

    使用 Unix 生成文件
    cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0
    與忍者
    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
  4. 建置專案。

    使用 Unix 生成文件
    make -C ./YOUR_BUILD_DIRECTORY -j8
    與忍者
    ninja -C ./YOUR_BUILD_DIRECTORY -j8
  5. 擦除閃光燈,然後閃爍板。

    使用 Unix 生成文件
    make -C ./YOUR_BUILD_DIRECTORY erase_flash
    make -C ./YOUR_BUILD_DIRECTORY flash
    與忍者
    ninja -C ./YOUR_BUILD_DIRECTORY erase_flash
    ninja -C ./YOUR_BUILD_DIRECTORY flash

執行低功耗藍牙示範

FreeRTOS 援低功耗藍牙程式庫連線能力。

若要跨藍牙低功耗執行 FreeRTOS 示範專案,您必須在 iOS 或 Android 行動裝置上執行 FreeRTOS 藍牙低功耗行動 SDK 示範應用程式。

若要設定 FreeRTOS 藍牙低功耗行動 SDK 示範應用程式
  1. 按照 適用於 FreeRTOS 藍牙裝置的行動 SDK中的指示,在您的主機電腦上下載並安裝適用於行動平台的軟體開發套件。

  2. 按照 免費藍牙低功耗移動 SDK 演示應用程序 中的指示,來在您的行動裝置上設定示範行動應用程式。

如需如何在主機板上透過藍牙低功耗示範執行 MQTT 的指示,請參閱。透過低功耗藍牙執行的 MQTT

如需有關如何在主機板上執行 Wi-Fi 佈建示範的指示,請參閱Wi-Fi 佈建

在您自己的 ESP32 的 CMake 項目中使用自由服務器

如果您想在自己的 CMake 項目中使用 FreeRTOS,則可以將其設置為子目錄並與應用程序一起構建。首先,從中獲取 FreeRTOS 的副本。GitHub您也可以使用以下命令將其設置為 Git 子模塊,以便 future 更容易更新。

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

使用免費伺服器中的元件

執行 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, wifi 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 源代碼樹之外的配置。依預設,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 參考中的專案組態,如果您在成功編譯之後遇到問題,請參閱該頁面上已停用的選項及其取代部分。

Summary

如果你有一個專案具有名為 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 驅動程式。若要解除安裝這些驅動程式,請遵循 FTDI Drivers Installation Guide for macOS X 中的說明。

  • ESP-IDF 提供的監視器公用程式 (並使用 make 監視器叫用) 可協助您解碼位址。出於這個原因,它可以幫助您在應用程序停止工作時獲得一些有意義的回溯。如需詳細資訊,請參閱 Espressif 網站上的自動位址解碼

  • 也可以啟用 GDBStub 與 gdb 進行通信,而不需要任何特殊的 JTAG 硬件。如需詳細資訊,請參閱在濃縮咖啡網站上使用 GDBStub 啟動 GDB

  • 如需有關在需要 JTAG 硬體型偵錯時設定 OpenOCD 環境的資訊,請參閱 Espressif 網站上的 JTAG 偵錯。

  • 如果pyserial無法pip在 macOS 上使用安裝,請從 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

  • 如果您遵循 在您自己的 ESP32 的 CMake 項目中使用自由服務器 中的步驟,並且從連結器中看到未定義的參照錯誤,這通常是因為缺少相依程式庫或示範導致。若要新增這些項目,請使用標準 CMake 函數 target_link_libraries 更新 CMakeLists.txt 檔案 (在根目錄下)。

  • ESP-IDF 版本 4.2 支持使用的特殊\-ESP32\-精靈\-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

如需疑難排解詳細資訊,請參閱故障診斷入門

除錯

調試代碼壓縮 ESP32-DevKit C 和 ESP-勞弗羅弗套件(ESP-IDF V4.2)

本節說明如何使用 ESP-IDF v4.2 來除錯壓縮式硬體。您需要 JTAG 對 USB 纜線。我們使用 USB 轉 MPSE 電纜(例如,FTDI C232HM-DDHSL-0)。

ESP-DevKit C 安裝

對於 FTDI C232HM-DDHSL-0 電纜,這些是與 ESP32 開發套件 C 的連接。

| 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 電纜,這些是與 ESP32-WROVER-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 datasheet 開發而來。如需詳細資訊,請參閱產品資料表中的「C232HM MPSE 纜線連接和機械詳細資料」一節。

若要在 ESP 套件上啟用 JTAG,請將跳接器放置在 TMS、TDO、TDI、TCK 和 S_TDI 接腳上,如下所示。

跳線放置
在視窗上偵錯 (ESP-IDF 第 4.2 版)
在 Windows 中進行除錯設定
  1. 將 FTDI C232HM-DDHSL-0 的 USB 一端接到您的電腦,而另一端則按調試代碼壓縮 ESP32-DevKit C 和 ESP-勞弗羅弗套件(ESP-IDF V4.2)中所述進行。FTDI C232HM-DDHSL-0 裝置應該會出現在 Universal Serial Bus Controllers (通用序列匯流排控制器) 下方的 Device Manager (裝置管理員) 中。

  2. 在通用序列匯流排裝置清單下,以滑鼠右鍵按一下 C232HM-DDHSL-0 裝置,然後選擇 [內容]。

    注意

    裝置可能會列為 USB Serial Port (USB 序列連接埠)

    若要查看裝置的內容,請在內容視窗中選擇 [詳細資料] 索引標籤。如果未列出該裝置,請安裝適用於 FTDI C232HM-DDHSL-0 的視窗驅動程式

  3. Details (詳細資訊) 索引標籤中,選擇 Property (屬性),然後選擇 Hardware IDs (硬體 ID)。您應該在「」欄位中看到類似的內容。

    FTDIBUS\COMPORT&VID_0403&PID_6014

    在此範例中,廠商 ID 為 0403,產品 ID 為 6014。

    確認這些 ID 符合 projects/espressif/esp32/make/aws_demos/esp32_devkitj_v1.cfg 中的 ID。ID 在一行中指定,開頭ftdi_vid_pid後跟供應商 ID 和產品 ID。

    ftdi_vid_pid 0x0403 0x6014
  4. 下載 OpenOCD for Windows

  5. 將檔案解壓縮至 C:\,並新增 C:\openocd-esp32\bin 到您的系統路徑。

  6. OpenOCD 需要 libusb,但預設不會在 Windows 中安裝。若要安裝 Libusb:

    1. 請下載 zadig.exe

    2. 執行 zadig.exe。從 Options (選項) 功能表中,選擇 List All Devices (列出所有裝置)

    3. 從下拉式功能表中選擇 C232HM-DDHSL-0

    4. 在目標驅動程式欄位中,選擇綠色箭頭右側的 WinUSB (WinUSB)

    5. 對於目標驅動程式欄位下的清單,請選擇箭頭,然後選擇 [安裝驅動程式]。選擇 Replace Driver (取代驅動程式)

  7. 開啟命令提示字元,瀏覽至 FreeRTOS 下載目錄的根目錄,然後執行下列命令。

    idf.py openocd

    將此命令提示保持開啟。

  8. 開啟新的命令提示字元,瀏覽至 FreeRTOS 下載目錄的根目錄,然後執行

    idf.py flash monitor
  9. 開啟另一個命令提示字元,瀏覽至 FreeRTOS 下載目錄的根目錄,然後等到示範開始在主機板上執行。當它這樣做時,運行

    idf.py gdb

    程式應該會在 main 函數中停止。

    注意

    ESP32 支援最多兩個中斷點。

在 macOS 上進行除錯 (ESP-IDF 第 4.2 版)
  1. 下載適用於 macOS 的 FTDI 驅動程式

  2. 下載 OpenOCD

  3. 解壓縮已下載的 .tar 檔案,並將路徑設在 .bash_profileOCD_INSTALL_DIR/openocd-esp32/bin 中。

  4. 使用以下命令在 macOS libusb 上安裝。

    brew install libusb
  5. 使用下列指令卸載序列埠驅動程式。

    sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
  6. 使用下列指令卸載序列埠驅動程式。

    sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
  7. 如果您執行的 macOS 版本低於 10.9,請使用以下指令卸載 Apple FTDI 驅動程式。

    sudo kextunload -b com.apple.driver.AppleUSBFTDI
  8. 使用下列命令來取得 FTDI 纜線的產品 ID 和廠商 ID。它會列出連接的 USB 裝置。

    system_profiler SPUSBDataType

    來自的輸出system_profiler應如下所示。

    DEVICE: Product ID: product-ID Vendor ID: vendor-ID (Future Technology Devices International Limited)
  9. 開啟 projects/espressif/esp32/make/aws_demos/esp32_devkitj_v1.cfg 檔案。裝置的廠商 ID 和產品 ID 是指定在開頭為 ftdi_vid_pid 的一行中。變更 ID 以符合來自前一個步驟中 system_profiler 輸出的 ID。

  10. 開啟終端機視窗,瀏覽至 FreeRTOS 下載目錄的根目錄,然後使用下列命令執行 OpenOCD。

    idf.py openocd

    保持此終端機視窗開啟。

  11. 開啟新終端機,並使用以下指令載入 FTDI 序列埠驅動程式。

    sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
  12. 瀏覽至 FreeRTOS 下載目錄的根目錄,然後執行

    idf.py flash monitor
  13. 開啟另一個新的終端機,瀏覽至 FreeRTOS 下載目錄的根目錄,然後執行

    idf.py gdb

    程式應該會在 main 停止。

在 Linux 上進行除錯 (ESP-IDF 第 4.2 版)
  1. 下載 OpenOCD。解壓縮 tarball 並遵循讀我檔中的安裝指示。

  2. 使用以下命令在 Linux 上安裝 libusb。

    sudo apt-get install libusb-1.0
  3. 開啟終端機,並輸入 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
  4. 登出再登入,並重新啟動電路板的電源,以讓變更生效。在終端機提示中,列出 USB 裝置。請確定群組擁有者已從變更dialoutplugdev

    $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 的快閃記憶體。

  5. 在終端機視窗中,瀏覽至 FreeRTOS 下載目錄的根目錄,然後使用下列命令執行 OpenOCD。

    idf.py openocd
  6. 開啟另一個終端機,瀏覽至 FreeRTOS 下載目錄的根目錄,然後執行下列命令。

    idf.py flash monitor
  7. 開啟另一個終端機,瀏覽 FreeRTOS 下載目錄的根目錄,然後執行下列命令:

    idf.py gdb

    程式應該會在 main() 中停止。