本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Espressif ESP32-DevKitC 和 入門 ESP-WROVER-KIT
重要
此參考整合託管在已棄用的 Amazon-FreeRTOS 儲存庫上。我們建議您在建立新專案時從這裡開始。如果您已經有以現在已棄用之 Amazon-FreeRTOS 儲存庫為基礎的現有免費RTOS專案,請參閱 Amazon-FreeRTOS Github 儲存庫遷移指南。
注意
若要探索如何在您自己的 Espressif IDF專案中整合免費RTOS模組化程式庫和示範,請參閱 ESP32-C3 平台的精選參考整合。
遵循本教學課程,開始使用配備 ESP32-WROOM-32、ESP32-ESP32SOLO-1 或 模組和 的 Espressif ESP-DevKitWROVERC ESP-WROVER-KIT-VB。若要從合作夥伴裝置目錄上的 AWS 合作夥伴購買,請使用下列連結:
免費 支援這些版本的開發板RTOS。
如需這些討論板最新版本的詳細資訊,請參閱 Espressif 網站上的 ESP32-DevKitC V4
注意
目前 ESP32-WROVER-KIT 和 ESP DevKitC 的可用RTOS連接埠不支援對稱多處理 (SMP) 功能。
概觀
本教學課程將指引您完成下列步驟:
-
將主機板連線到主機機器。
-
在主機機器上安裝軟體以對微控制器主機板的內嵌應用程式進行開發和除錯。
-
將 免費RTOS示範應用程式跨編譯至二進位映像。
-
將應用程式二進位映像載入主機板,然後執行應用程式。
-
透過序列連線與在開發板上執行的應用程式互動,以便進行監控和除錯。
必要條件
在 Espressif 討論板上開始使用 FreeRTOS 之前,您必須設定 AWS 您的帳戶和許可。
註冊 AWS 帳戶
如果您沒有 AWS 帳戶,請完成下列步驟以建立 。
若要註冊 AWS 帳戶
開啟https://portal.aws.amazon.com/billing/註冊
。 請遵循線上指示進行。
部分註冊程序需接收來電,並在電話鍵盤輸入驗證碼。
當您註冊 時 AWS 帳戶,AWS 帳戶根使用者會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務,請將管理存取權指派給使用者,並且僅使用根使用者來執行需要根使用者存取權的任務。
AWS 會在註冊程序完成後傳送確認電子郵件給您。您可以隨時前往 https://aws.amazon.com/
建立具有管理存取權的使用者
註冊 後 AWS 帳戶,請保護 AWS 帳戶根使用者、啟用 AWS IAM Identity Center並建立管理使用者,這樣您就不會將根使用者用於日常任務。
保護您的 AWS 帳戶根使用者
-
選擇根使用者並輸入 AWS 帳戶 您的電子郵件地址,以帳戶擁有者AWS Management Console
身分登入 。在下一頁中,輸入您的密碼。 如需使用根使用者登入的說明,請參閱 AWS 登入 使用者指南中的以根使用者身分登入。
-
為您的根使用者開啟多重要素驗證 (MFA)。
如需指示,請參閱 IAM 使用者指南 中的為 AWS 帳戶 根使用者 (主控台) 啟用虛擬MFA裝置。
建立具有管理存取權的使用者
-
啟用IAM身分中心。
如需指示,請參閱 AWS IAM Identity Center 使用者指南中的啟用 AWS IAM Identity Center。
-
在 IAM Identity Center 中,將管理存取權授予使用者。
如需使用 IAM Identity Center 目錄 作為身分來源的教學課程,請參閱 AWS IAM Identity Center 使用者指南 中的使用 設定使用者存取權 IAM Identity Center 目錄。
以具有管理存取權的使用者身分登入
-
若要使用 IAM Identity Center 使用者登入,請使用您建立 IAM Identity Center 使用者時URL傳送到您電子郵件地址的登入。
如需使用 IAM Identity Center 使用者登入的協助,請參閱 AWS 登入 使用者指南 中的登入 AWS 存取入口網站。
指派存取權給其他使用者
若要提供存取權,請新增權限至您的使用者、群組或角色:
-
中的使用者和群組 AWS IAM Identity Center:
建立權限合集。請按照 AWS IAM Identity Center 使用者指南 中的 建立權限合集 說明進行操作。
-
IAM 透過身分提供者在 中管理的使用者:
建立聯合身分的角色。請遵循 IAM 使用者指南 中為第三方身分提供者 (聯合) 建立角色的指示。
-
IAM 使用者:
-
建立您的使用者可擔任的角色。請遵循 IAM 使用者指南 中為IAM使用者建立角色的指示。
-
(不建議) 將政策直接附加至使用者,或將使用者新增至使用者群組。請遵循 IAM 使用者指南 中將許可新增至使用者 (主控台) 的指示。
-
開始使用
注意
本教學課程中的 Linux 命令要求您使用 Bash Shell。
-
設定 Espressif 硬體。
-
如需有關設定 ESP32-DevKitC 開發板硬體的資訊,請參閱 ESP32-DevKitC V4 入門指南
。 -
如需設定 ESP-WROVER-KIT開發板硬體的相關資訊,請參閱 ESP-WROVER-KIT V4.1 入門指南 。
重要
當您到達 Espressif 指南的入門區段時,請停止,然後返回此頁面的指示。
-
-
設定您的開發環境 。
若要與討論板通訊,您必須安裝工具鏈。Espressif 提供 ESP-IDF 來為其界面卡開發軟體。由於 ESP-IDF 已將自己的 FreeRTOS Kernel 版本整合為元件,因此 Amazon FreeRTOS 包含自訂版本的 ESP-IDF v4.2,該版本已移除 FreeRTOS Kernel。這可以修正編譯時重複檔案的問題。若要使用 Amazon Free 隨附的自訂 ESP-IDF v4.2 版本RTOS,請依照下列指示操作主機的作業系統。
Windows
-
下載 ESPIDF的 Universal Online Installer
for Windows。 -
執行 Universal Online Installer 。
-
當您前往步驟下載或使用 ESP-IDF 時,請選取使用現有的 ESP目錄IDF,並將選擇現有的 ESPIDF目錄設定為
。freertos
/vendors/espressif/esp-idf -
完成安裝。
macOS
-
請遵循 macOS 的工具鏈先決條件標準設定 (ESP-IDF v4.2)
中的指示。 重要
當您達到後續步驟 下的「取得ESPIDF」指示時,請停止,然後返回此頁面的指示。
-
開啟命令列視窗。
-
導覽至 免費RTOS下載目錄,然後執行下列指令碼,為您的平台下載並安裝 espressif 工具鏈。
vendors/espressif/esp-idf/install.sh
-
使用下列命令將 ESP- IDF工具鏈工具新增至終端機的路徑。
source vendors/espressif/esp-idf/export.sh
Linux
-
請遵循 Linux 的工具鏈先決條件標準設定 (ESP-IDF v4.2)
中的指示。 重要
當您達到後續步驟 下的「取得ESPIDF」指示時,請停止,然後返回此頁面的指示。
-
開啟命令列視窗。
-
導覽至 免費RTOS下載目錄,然後執行下列指令碼,為您的平台下載並安裝 Espressif 工具鏈。
vendors/espressif/esp-idf/install.sh
-
使用下列命令將 ESP- IDF工具鏈工具新增至終端機的路徑。
source vendors/espressif/esp-idf/export.sh
-
-
建立序列連線。
-
若要在主機機器與 ESP32-DevKitC 之間建立序列連線,您必須將 CP210x 安裝USB至 UART Bridge VCP驅動程式。您可以從 Silicon Labs
下載這些驅動程式。 若要在主機機器與 ESP32-WROVER- 之間建立序列連線KIT,您必須安裝FTDI虛擬COM連接埠驅動程式。您可以從 下載此驅動程式FTDI
。 -
請依照步驟使用 建立序列連線ESP32
。 -
在您建立序連接之後,請記下開發板連接的序列連接埠。您需要它來閃爍示範。
-
設定 免費RTOS示範應用程式
在此教學課程中,免費RTOS組態檔案位於
。(例如,如果選擇 freertos
/vendors/espressif/boards/board-name
/aws_demos/config_files/FreeRTOSConfig.hAFR_BOARD espressif.esp32_devkitc
,則組態檔案位於
。) freertos
/vendors/espressif/boards/esp32/aws_demos/config_files/FreeRTOSConfig.h
-
如果您正在執行 macOS 或 Linux,請開啟終端機提示。如果您正在執行 Windows,請開啟「ESP-IDF 4.xCMD」應用程式 (如果您在安裝 ESP-IDF 工具鏈時包含此選項),否則請開啟「命令提示」應用程式。
-
若要驗證是否已安裝 Python3,請執行
python --version
安裝的版本即會顯示。如果您沒有安裝 Python 3.0.1 或更新版本,您可以從 Python
網站安裝。 -
您需要 AWS 命令列介面 (CLI) 才能執行 AWS IoT 命令。如果您正在執行 Windows,請使用
easy_install awscli
命令在「命令」或「ESP-IDF 4.xCMD」應用程式中安裝 AWS CLI 。如果您正在執行 macOS 或 Linux,請參閱安裝 AWS CLI。
-
執行
aws configure
並使用您的 AWS 存取金鑰 ID、秘密存取金鑰和預設 AWS 區域來設定 AWS CLI。如需詳細資訊,請參閱設定 AWS CLI。
-
使用以下命令安裝 for Python AWS SDK(boto3):
-
在 Windows 上,在「命令」或「ESP-IDF 4.xCMD」應用程式中執行
pip install boto3 --user
注意
如需詳細資訊,請參閱 Boto3 文件
。 -
在 macOS 或 Linux 上執行
pip install tornado nose --user
然後執行
pip install boto3 --user
免費RTOS包含
SetupAWS.py
指令碼,可讓您更輕鬆地設定 Espressif 界面卡以連線至 AWS IoT。若要設定此指令碼,請開啟
並設定下列屬性:freertos
/tools/aws_config_quick_start/configure.jsonafr_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 安全性)
-
-
-
執行組態指令碼。
-
如果您正在執行 macOS 或 Linux,請開啟終端機提示。如果您正在執行 Windows,請開啟「ESP-IDF 4.xCMD」或「命令」應用程式。
-
導覽至
目錄並執行freertos
/tools/aws_config_quick_startpython SetupAWS.py setup
指令碼會執行以下操作:
-
建立 IoT 物件、憑證和政策。
-
將 IoT 政策連接至憑證,並將憑證連接至 AWS IoT 物件。
-
使用端點 AWS IoT 、Wi-Fi SSID和憑證填入
aws_clientcredential.h
檔案。 -
格式化您的憑證和私有金鑰,並將其寫入
aws_clientcredential_keys.h
標頭檔案。
注意
憑證為硬式編碼,僅供示範使用。生產層級應用程式必須將這些檔案存放在安全的位置。
如需 的詳細資訊
SetupAWS.py
,請參閱README.md
目錄中的 。freertos
/tools/aws_config_quick_start -
-
在雲端上監控MQTT訊息
在執行免費RTOS示範專案之前,您可以在 AWS IoT 主控台中設定MQTT用戶端,以監控裝置傳送至 AWS Cloud 的訊息。
使用 AWS IoT MQTT用戶端訂閱MQTT主題
-
導覽至 AWS IoT 主控台
。 -
在導覽窗格中,選擇測試 ,然後選擇MQTT測試用戶端 。
-
在訂閱主題中輸入
,然後選擇訂閱主題。your-thing-name
/example/topic
當您的裝置上成功執行示範專案時,您會看到「Hello World!」 多次傳送至您訂閱的主題。
使用 idf.py 指令碼建置、快閃和執行 免費RTOS示範專案
您可以使用 Espressif 的IDF公用程式 (idf.py
) 來建置專案,並將二進位檔案快閃到裝置上。
注意
有些設定可能需要搭配 使用連接埠選項"-p port-name"
idf.py
來指定正確的連接埠,如下列範例所示。
idf.py -p /dev/cu.usbserial-00101301B flash
在 Windows、Linux 和 macOS 上免費RTOS建置和快閃 (ESP-IDF v4.2)
-
導覽至 免費RTOS下載目錄的根目錄。
-
在命令列視窗中,輸入下列命令,將 ESP- IDF工具新增至終端機的 PATH。
- Windows (「命令」應用程式)
-
vendors\espressif\esp-idf\export.bat
- Windows ("ESP-IDF 4.x CMD" 應用程式)
-
(這在您開啟應用程式時已完成。)
- Linux / macOS
-
source vendors/espressif/esp-idf/export.sh
-
在
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
使用 建置 和 Flash FreeRTOS CMake
除了 提供的idf.py
指令碼IDFSDK來建置和執行程式碼之外,您也可以使用 建置專案CMake。目前,它支援 Unix Makefiles 或 Ninja 建置系統。
建置和快閃專案
-
在命令列視窗中,導覽至免費RTOS下載目錄的根目錄。
-
執行下列指令碼,將 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_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
-
建置專案。
- 使用 Unix Makefiles
-
make -C ./YOUR_BUILD_DIRECTORY -j8
- 使用 Ninja
-
ninja -C ./YOUR_BUILD_DIRECTORY -j8
-
清除快閃記憶體,然後快閃記憶體主機板。
- 使用 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
執行低功耗藍牙示範
免費RTOS支援低功耗藍牙程式庫連線。
若要跨藍牙低功耗執行免費RTOS示範專案,您必須在 iOS 或 Android 行動裝置上執行免費RTOS藍牙低功耗行動SDK示範應用程式。
若要設定 FreeRTOS Bluetooth Low Energy 行動SDK示範應用程式
-
請遵循 中的指示適用於 FreeRTOS 藍牙裝置的行動 SDK,在主機電腦上下載並安裝適用於行動平台SDK的 。
-
按照 免費藍牙低功耗移動 SDK 演示應用程序 中的指示,來在您的行動裝置上設定示範行動應用程式。
如需如何在您的 板上MQTT透過藍牙低功耗示範執行 的指示,請參閱 透過低功耗藍牙執行的 MQTT。
如需如何在您的討論板上執行 Wi-Fi 佈建示範的說明,請參閱 Wi-Fi 佈建。
在您自己的CMake專案中使用 FreeRTOS ESP32
如果您想要在自己的CMake專案中使用 FreeRTOS,您可以將它設定為子目錄,並與應用程式一起建置。首先,從 取得免費RTOS版本GitHub
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
然後,以下範例是頂層CMakeLists.txt
檔案,可用於搭配 Free 建置您的應用程式RTOS。
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
使用 免費元件RTOS
執行 後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
)
根據預設,此元件現在會自動連結至您的應用程式碼。您現在可以包含其標頭檔案,並呼叫其定義的函數。
免費覆寫組態RTOS
目前沒有定義明確的方法來重新定義 免費RTOS來源樹狀目錄以外的組態。根據預設, CMake會尋找
和 freertos
/vendors/espressif/boards/esp32/aws_demos/config_files/
目錄。不過,您可以使用因應措施,告訴編譯器首先搜尋其他目錄。例如,您可以為免費RTOS組態新增另一個資料夾。freertos
/demos/include/
- 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- 提供您自己的 sdkconfigIDF
如果您想要提供自己的 sdkconfig.default
,您可以從IDF_SDKCONFIG_DEFAULTS
命令列設定CMake變數 :
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 macOS X 驅動程式安裝指南
中的指示進行。 -
ESP-IDF (並使用建立監視器叫用) 提供的監視器公用程式可協助您解碼地址。因此,它可以幫助您在應用程式停止運作時取得一些有意義的回溯。如需詳細資訊,請參閱 Espressif 網站上的自動地址解碼
。 -
您也可以啟用 與 gdb GDBstub通訊,而不需要任何特殊JTAG硬體。如需詳細資訊,請參閱 Espressif 網站上的GDB使用 啟動GDBStub
。 -
如需在需要JTAG硬體型偵錯時設定開放OCD型環境的相關資訊,請參閱 Espressif 網站上的JTAG偵錯
。 -
如果
pyserial
無法在 macOSpip
上使用 安裝 ,請從 pyserial 網站下載。 -
如果界面卡持續重設,請嘗試在終端機上輸入下列命令來清除快閃記憶體。
make erase_flash
-
如果您在執行
idf_monitor.py
時看到錯誤,請使用 Python 2.7。 -
免費 中包含 ESP-IDF 的必要程式庫RTOS,因此不需要從外部下載。如果已設定
IDF_PATH
環境變數,建議您在建置 Free 之前清除它RTOS。 -
在 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
。 -
如果您遵循 在您自己的CMake專案中使用 FreeRTOS 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-DevKitC 和 ESP-WROVER-KIT (ESP-IDF v4.2) 上的偵錯程式碼
本節說明如何使用 ESP-IDF v4.2 對 Espressif 硬體進行偵錯。您需要 JTAG到 USB 纜線。我們使用 USB進行MPSSE纜線連接 (例如 FTDI C232HM -DDHSL-0
- ESP-DevKitC JTAG設定
-
對於 FTDI C232HM -DDHSL-0 纜線,這些是 ESP32 DevkitC 的連線。
| 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 資料表
開發。如需詳細資訊,請參閱資料表中的「C232HM MPSSE Cable Connection and Mechanical Details」一節。 若要在 JTAG上啟用 ESP-WROVER-KIT,請將跳線器放在 TMS、TDO、TCK、 TDI和 S_TDI 針腳上,如下所示。
- Windows 上的偵錯 (ESP-IDF v4.2)
-
在 Windows 中進行除錯設定
-
將 FTDI C232HM -DDHSL-0 的 USB 端連接至您的電腦,將另一端連接至電腦,如 中所述Espressif ESP32-DevKitC 和 ESP-WROVER-KIT (ESP-IDF v4.2) 上的偵錯程式碼。FTDI C232HM -DDHSL-0 裝置應出現在 Device Manager 的通用序列匯流排控制器 下。
-
在通用序列匯流排裝置清單中,用滑鼠右鍵按一下 C232HM -DDHSL-0 裝置,然後選擇屬性 。
注意
裝置可能會列為USB序列連接埠 。
若要查看裝置的屬性,請在屬性視窗中,選擇詳細資訊索引標籤。如果未列出裝置,請安裝 FTDI C232HM -DDHSL-0 的 Windows 驅動程式
。 -
在詳細資訊索引標籤上,選擇屬性 ,然後選擇硬體 IDs。您應該會在 值 欄位中看到這樣的內容。
FTDIBUS\COMPORT&VID_0403&PID_6014
在此範例中,廠商 ID 為 0403,產品 ID 為 6014。
驗證這些IDs符合 IDs中的
projects/espressif/esp32/make/aws_demos/esp32_devkitj_v1.cfg
。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。
-
在目標驅動程式欄位中,在綠色箭頭右側,選擇 Win USB。
-
針對目標驅動程式欄位下的清單,選擇箭頭,然後選擇安裝驅動程式 。選擇 Replace Driver (取代驅動程式)。
-
-
開啟命令提示,導覽至免費RTOS下載目錄的根目錄,然後執行下列命令。
idf.py openocd
將此命令提示保持開啟。
-
開啟新的命令提示,導覽至 免費RTOS下載目錄的根目錄,然後執行
idf.py flash monitor
-
開啟另一個命令提示字元,導覽至 免費RTOS下載目錄的根目錄,然後等待示範開始在討論板上執行。執行時,請執行
idf.py gdb
程式應該會在
main
函數中停止。注意
最多ESP32支援兩個中斷點。
-
- macOS 上的偵錯 (ESP-IDF v4.2)
-
-
下載 FTDImacOS 的驅動程式
。 -
下載 Open OCD
。 -
解壓縮已下載的 .tar 檔案,並將路徑設在
.bash_profile
到OCD_INSTALL_DIR/openocd-esp32/bin
中。 -
使用下列命令在 macOS
libusb
上安裝 。 macOSbrew install libusb
-
使用以下命令卸載序列連接埠驅動程式。
sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
-
使用以下命令卸載序列連接埠驅動程式。
sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
-
如果您執行的 macOS 版本高於 10.9,請使用下列命令來卸載 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以符合上一個步驟中system_profiler
輸出IDs的 。 -
開啟終端機視窗、導覽至 免費RTOS下載目錄的根目錄,並使用下列命令來執行 Open OCD。
idf.py openocd
保持此終端機視窗開啟。
-
開啟新的終端機,並使用下列命令載入FTDI序列連接埠驅動程式。
sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
-
導覽至 免費RTOS下載目錄的根目錄,然後執行
idf.py flash monitor
-
開啟另一個新終端機,導覽至 免費RTOS下載目錄的根目錄,然後執行
idf.py gdb
程式應該會在
main
停止。
-
- Linux 上的偵錯 (ESP-IDF v4.2)
-
-
下載 Open OCD
。解壓縮 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的快閃記憶體。 -
在終端機視窗中,導覽至免費RTOS下載目錄的根目錄,並使用下列命令來執行 Open OCD。
idf.py openocd
-
開啟另一個終端機,導覽至 免費RTOS下載目錄的根目錄,然後執行下列命令。
idf.py flash monitor
-
開啟另一個終端機、導覽 免費RTOS下載目錄的根目錄,然後執行下列命令:
idf.py gdb
程式應該會在
main()
中停止。
-