Espressif ESP32-DevKitC と ESP-WROVER-KIT の開始方法 - FreeRTOS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Espressif ESP32-DevKitC と ESP-WROVER-KIT の開始方法

このチュートリアルに従って、ESP32-WROOM-32、ESP32-SOLO-1、または ESP-WROVER モジュール、および ESP-WROVER-KIT-VB を搭載した Espressif ESP32-DevKitC の使用を開始してください。当社のパートナーから購入するには、AWSパートナーデバイスカタログには、次のリンクを使用します。

開発ボードのこれらのバージョンが FreeRTOS でサポートされています。

これらのボードの最新バージョンの詳細については、ESP32-DevKitC V4またはESP-WROVER-KIT v4.1」を Espressif ウェブサイトでご覧ください。

注記

現在、ESP32-WROVER-KIT および ESP DevKitC 用の FreerTOS ポートは、対称マルチプロセッシング (SMP) 機能をサポートしていません。

Overview

このチュートリアルでは次のステップを説明します。

  1. ボードをホストマシンに接続します。

  2. マイクロコントローラーボード用の組み込みアプリケーションを開発およびデバッグするためのソフトウェアをホストマシンにインストールします。

  3. FreeRTOS デモアプリケーションをバイナリイメージにクロスコンパイルします。

  4. アプリケーションバイナリイメージをボードにロードし、アプリケーションを実行します。

  5. モニタリングおよびデバッグの目的で、シリアル接続経由でボード上で実行されているアプリケーションに接続します。

Prerequisites

Espressif ボードで FreeRTOS を使い始める前に、AWSアカウントとアクセス許可が必要です。アカウントを作成するには、以下を参照してください。の作成とアクティブ化を行うAWSアカウント

を追加するにはAWS Identity and Access Management(IAM) ユーザーをアカウントに追加するには、『IAM ユーザーガイド。IAM ユーザーアカウントに [] へのアクセス権をAWS IoTおよび FreeRTOS をインストールするには、以下の IAM ポリシーを IAM ユーザーアカウントにアタッチします。

  • AmazonFreeRTOSFullAccess

    IAM ユーザーのすべての FreeRTOS リソース (freetos: *) へのフルアクセスを許可します。

  • AWSIoTFullAccess

    IAM ユーザーのすべてのAWS IoTリソース (IoT: *)。

AmazonFreeRTOSFullAccess ポリシーを IAM ユーザーにアタッチするには

  1. に移動します。IAM コンソール

  2. ナビゲーションペインで [Users] を選択します。

  3. 検索テキストボックスにユーザー名を入力し、リストから選択します。

  4. [Add permissions] を選択します。

  5. [Attach existing policies directly] を選択します。

  6. 検索ボックスに [] と入力します。AmazonFreeRTOSFullAccessを選択し、リストから選択してから、[次へ: 確認.

  7. [Add permissions] を選択します。

AWSIoTFullAccess ポリシーを IAM ユーザーにアタッチするには

  1. に移動します。IAM コンソール

  2. ナビゲーションペインで [Users] を選択します。

  3. 検索テキストボックスにユーザー名を入力し、リストから選択します。

  4. [Add permissions] を選択します。

  5. [Attach existing policies directly] を選択します。

  6. 検索ボックスに [] と入力します。AWSIoTFullAccessを選択し、リストから選択してから、[次へ: 確認.

  7. [Add permissions] を選択します。

IAM アカウントとユーザーアカウントの詳細については、『』を参照してください。IAM ユーザーガイド

ポリシーの詳細については、「」を参照してください。IAM のアクセス許可とポリシー

ESP-IDF v4.2の使用を開始する

注記

このチュートリアルの Linux コマンドは、Bash シェルを使用する必要がある部分があります。

  1. Espressif ハードウェアを設定します。

    ESP32-DevKitC 開発ボードハードウェアの設定の詳細については、ESP32-DevKitc V4 入門ガイド

    ESP-WROVER-KIT 開発ボードハードウェアの設定の詳細については、ESP-WROVER-KIT V4.1 入門ガイド

    重要

    [] に達すると、開始方法セクションを開き、停止してからこのページの手順に戻ります。

  2. 開発環境をセットアップします。

    ボードと通信するには、ツールチェーンをダウンロードしてインストールする必要があります。ホストマシンのオペレーティングシステムについては、次の手順に従います。

    重要

    [ESP-IDF を取得] の手順に到達したら次のステップ停止してから、このページの手順に戻ります。

  3. インストールを完了します(Linux/macOS)。

    ESP-IDF Windows インストーラーでは、必要なツールがすべてインストールされます。Linux および macOS プラットフォームでは、インストールを完了するために追加の手順が必要です。次に示すのは、次のステップを実行します。FreeRTOS をダウンロードして設定する

    1. コマンドラインウィンドウを開きます。

    2. FreeRTOSダウンロードディレクトリに移動し、次のスクリプトを実行して、プラットフォーム用のespressifツールチェーンをダウンロードしてインストールします。

      vendors/espressif/esp-idf/install.sh
    3. 次のコマンドを使用して、ESP\-IDF ツールチェーンツールを端末のパスに追加します。

      source vendors/espressif/esp-idf/export.sh
  4. シリアル接続の確立。

    ホストマシンと ESP32-DevKitC の間にシリアル接続を確立するには、CP210x USB to UART Bridge VCP ドライバをインストールする必要があります。これらのドライバーは Silicon Labs からダウンロードできます。

    ホストマシンと ESP32-WROVER-KIT の間にシリアル接続を確立するには、FTDI 仮想 COM ポートドライバをインストールする必要があります。このドライバは、からダウンロードできます。FTDI

    詳細については、「ESP32 とのシリアル接続を確立する」を参照してください。シリアル接続を確立したら、ボードとの接続用のシリアルポートをメモしておきます。デモを構築する際に必要になります。

FreeRTOS をダウンロードして設定する

環境をセットアップすると、FreeRTOS をダウンロードできるようになります。GitHubから、またはFreeRTOS コンソール。手順については、以下を参照してください。README.mdファイルを GitHub ウェブサイトにアップロードします。

FreeRTOS デモアプリケーションを設定する

  1. macOS または Linux を実行している場合、ターミナルプロンプトを開きます。Windows を実行している場合は、[mingw32.exe。(MinGWは、ネイティブ Microsoft Windows アプリケーション用の最小限の開発環境です。)

  2. Python3 がインストールされていることを確認するには、を実行します。

    python --version

    インストールされているバージョンが表示されます。Python 3.0.1 以降がインストールされていない場合は、Pythonウェブサイト.

  3. 必要なのはAWS実行するコマンドラインインターフェイス(CLI)AWS IoTコマンド。Windows を実行している場合は、を使用します。easy_install awscliをインストールするAWSmingw32 環境の CLI。

    macOS または Linux を実行している場合は、「」を参照してください。インストール:AWSCLI

  4. 走行

    aws configure

    をクリックし、AWSCLI をAWSアクセスキー ID、シークレットアクセスキー、およびデフォルトAWSリージョン。詳細については、「」を参照してください。設定:AWSCLI

  5. 次のコマンドを使用してをインストールします。AWSSDK for Python (boto3):

    • Windows では、mingw32 環境で、を実行します。

      easy_install 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 を開いて以下の属性を設定します。

    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 を実行している場合、ターミナルプロンプトを開きます。Windows を実行している場合は、を開きます。mingw32.exeファイルを開きます。

    2. に移動します。freertos/tools/aws_config_quick_startディレクトリに移動し、

      python SetupAWS.py setup

      スクリプトでは次のことが実行されます。

      • IoT モノ、証明書、およびポリシーを作成します。

      • 証明書に IoT ポリシーを、証明書をAWS IoTのthing

      • の入力aws_clientcredential.hファイルをAWS IoTエンドポイント、Wi-Fi SSID、認証情報を入力します。

      • 証明書とプライベートキーをフォーマットしてaws_clientcredential_keys.hヘッダーファイル。

      注記

      証明書はデモ目的でのみハードコードされています。本番稼動レベルのアプリケーションでは、これらのファイルを安全な場所に保存する必要があります。

      の詳細SetupAWS.py「」を参照してください。README.mdfreertos/tools/aws_config_quick_startディレクトリーに。

idf.py スクリプトを使用して FreeRTOS デモプロジェクトをビルド、フラッシュ、実行する

EspressifのIDFユーティリティ(idf.py)を使用してプロジェクトをビルドし、バイナリをデバイスにフラッシュします。

注記

一部のセットアップでは、ポートオプション"-p port-name"idf.py次の例のように、正しいポートを指定します。

idf.py -p /dev/cu.usbserial-00101301B flash

Windows、Linux、macOS(ESP-IDF v4.2)でFreeRTOSをビルドしてフラッシュする

  1. FreeRTOS ダウンロードディレクトリのルートに移動します。

  2. コマンドラインウィンドウで次のコマンドを入力し、ESP-IDF ツールをターミナルの PATH に追加します。

    Windows
    vendors\espressif\esp-idf\export.bat
    Linux および macOS
    source vendors/espressif/esp-idf/export.sh
  3. cmakeをbuildディレクトリに移動し、次のコマンドを使用してファームウェアイメージをビルドします。

    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でビルドしてFlashFreeRTOS

加えて、idf.pyスクリプトを使用してコードをビルドして実行すると、CMakeでプロジェクトをビルドすることもできます。現在、Unix MakefilesまたはNinja ビルドシステムのいずれかをサポートしています。

プロジェクトをビルドしてフラッシュするには

  1. コマンドラインウィンドウで、FreeRTOS ダウンロードディレクトリに移動します。

  2. 次のスクリプトを実行して、シェルの PATH に ESP-IDF ツールを追加します。

    Windows
    vendors\espressif\esp-idf\export.bat
    Linux および macOS
    source vendors/espressif/esp-idf/export.sh
  3. ビルドファイルを生成するには、次のコマンドを入力します。

    Unix Makefile
    cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0
    withinja
    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 Makefile
    make -C ./YOUR_BUILD_DIRECTORY -j8
    withinja
    ninja -C ./YOUR_BUILD_DIRECTORY -j8
  5. フラッシュを消去し、ボードをフラッシュします。

    Unix Makefile
    make -C ./YOUR_BUILD_DIRECTORY erase_flash
    make -C ./YOUR_BUILD_DIRECTORY flash
    withinja
    ninja -C ./YOUR_BUILD_DIRECTORY erase_flash
    ninja -C ./YOUR_BUILD_DIRECTORY flash

クラウドの MQTT メッセージのモニタリング

デバイスが AWS クラウドに送信するメッセージをモニタリングするには、AWS IoT コンソールで MQTT クライアントを使用します。

AWS IoT MQTT クライアントで MQTT トピックをサブスクライブするには

  1. AWS IoT コンソールに移動します。

  2. MQTT クライアントを開くには、ナビゲーションペインで [] を選択します。Test

  3. [トピックのサブスクリプション] で「your-thing-name/example/topic」と入力し、[トピックへのサブスクライブ] を選択します。

Bluetooth Low Energy デモを実行する

FreeRTOS サポートBluetooth Low Energy ライブラリ接続。

Bluetooth Low Energy で FreeRTOS デモプロジェクトを実行するには、iOS または Android のモバイルデバイスで FreerTOS Bluetooth Low Energy Mobile SDK デモアプリケーションを実行する必要があります。

FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーションをセットアップするには

  1. モバイルプラットフォーム用の SDK をホストコンピュータにダウンロードしてインストールするには、「FreeRTOS デバイス用の Mobile SDK」の手順に従います。

  2. モバイルデバイスにデモモバイルアプリケーションをセットアップするには、「FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション」の手順に慕います。

ボードで MQTT over Bluetooth Low Energy デモを実行する方法については、MQTT over Bluetooth Low Energy

ボードで Wi-Fi プロビジョニングデモを実行する方法については、Wi-Fi プロビジョニング

ESP32 用の独自の CMake プロジェクトで FreeRTOS を使用する

あなた自身のCMake プロジェクトで FreeRTOS を使用したい場合は、それをサブディレクトリとして設定し、アプリケーションと一緒にビルドすることができます。まず、FreeRTOS コピーをGitHubまたはFreeRTOS コンソール。Gitを使用している場合は、次のコマンドで 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

次に、トップレベルのCMakeLists.txtファイルで FreeRTOS を使用してアプリケーションを構築するために使用できます。

cmake_minimum_required(VERSION 3.13) project(freertos_examples) add_executable(my_app src/main.c) # Tell IDF build to link against this target. 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::mqtt)

プロジェクトをビルドするには、次の CMake コマンドを実行します。ESP32 コンパイラが PATH 環境変数にあることを確認してください。

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

アプリケーションをボードにフラッシュするには、次のコマンドを実行します。

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, 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::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ファイルを作成します。

# include paths of this components. set(COMPONENT_ADD_INCLUDEDIRS include) # source files of this components. set(COMPONENT_SRCDIRS src) # Alternatively, use COMPONENT_SRCS to specify source files explicitly # set(COMPONENT_SRCS src/example_component.c) # add this components, this will define a CMake library target. register_component()

標準の CMake 関数を使用して、依存関係を指定することもできます。target_link_libraries。コンポーネントのターゲット名は、ESP-IDF で定義された変数 COMPONENT_TARGET に格納されていることに注意してください。

# add this component, this will define a CMake library target. register_component() # standard CMake function can be used to specify dependencies. ${COMPONENT_TARGET} is defined # from esp-idf when you call register_component, by default it's idf_component_<folder_name>. target_link_libraries(${COMPONENT_TARGET} PRIVATE AFR::mqtt)

ESP コンポーネントの場合、これは 2 つの変数COMPONENT_REQUIRESおよびCOMPONENT_PRIV_REQUIRES。詳細については、 を参照してください。ビルドシステム(CMake)) のESP-IDF プログラミングガイド v4.2

# If the dependencies are from ESP-IDF, use these 2 variables. Note these need to be # set before calling register_component(). set(COMPONENT_REQUIRES log) set(COMPONENT_PRIV_REQUIRES lwip)

次に、最上位レベルの CMakeLists.txt ファイルで、これらのコンポーネントを検索する場所を ESP-IDF に指示します。の前の任意の場所に次の行を追加します。add_subdirectory(freertos)

# 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})

このコンポーネントは、デフォルトでアプリケーションコードに自動的にリンクされるようになりました。ヘッダーファイルを含めて、定義する関数を呼び出すことができるようになりました。

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

Summary

example_component という名前のコンポーネントを持つプロジェクトがあり、いくつかの設定を上書きする場合、最上位レベルの CMakeLists.txt ファイルの完全な例を次に示します。

cmake_minimum_required(VERSION 3.13) project(freertos_examples) add_executable(my_app 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::mqtt)

Troubleshooting

  • macOS を使用していて、オペレーティングシステムが ESP-WROVER-KIT を認識しない場合は、D2XX ドライバーがインストールされていないことを確認してください。ドライバーをアンインストールするには、FTDI Drivers Installation Guide for macOS X の手順に従います。

  • ESP-IDF によって提供された (および make monitor を使用して呼び出された) モニタユーティリティを使用して、アドレスをデコードできます。このため、アプリケーションが動作を停止した場合に意味のあるバックトレースを取得するのに役立ちます。詳細については、「」を参照してください。アドレスの自動デコードエスプレッシフのウェブサイトに掲載されています。

  • GDBStub を gdb との通信用に有効にすることができます。特別な JTAG ハードウェアは必要ありません。詳細については、「」を参照してください。GDBスタブを使用した GDB の起動エスプレッシフのウェブサイトに掲載されています。

  • JTAG ハードウェアベースのデバッグが必要な場合に OpenOCD ベースの環境をセットアップする方法の詳細については、JTAG デバッグ」を Espressif ウェブサイトでご覧ください。

  • もしpyserialは、を使用してインストールすることはできませんpipmacOS では、[Pyserial ウェブサイト

  • ボードが継続的にリセットされる場合は、ターミナルで次のコマンドを入力して、フラッシュの消去を試してください。

    make erase_flash
  • idf_monitor.py を実行するときにエラーが表示された場合は、Python 2.7 を使用します。

  • ESP-IDF からの必須ライブラリは FreeRTOS に含まれています。外部でダウンロードする必要はありません。そのファイルにIDF_PATH環境変数が設定されている場合、FreeRTOS をビルドする前にクリアすることをお勧めします。

  • Window では、プロジェクトのビルドに 3 ~ 4 分かかる場合があります。ビルド時間を短縮するには、-j4スイッチをオンにします。

    make flash monitor -j4
  • デバイスが AWS IoT への接続に問題がある場合は、aws_clientcredential.h ファイルを開き、ファイル内で設定変数が正しく定義されていることを確認してください。clientcredentialMQTT_BROKER_ENDPOINT[]1234567890123-ats.iot.us-east-1.amazonaws.com のようになっているはずです。

  • ESP32 用の独自の CMake プロジェクトで FreeRTOS を使用する」の手順を実行していて、リンカーから未定義の参照エラーが返された場合は、通常、依存ライブラリまたはデモがないことを示します。これらを追加するには、標準の CMake 関数 target_link_libraries を使用して CMakeLists.txt ファイル (ルートディレクトリの下) を更新します。

  • 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

トラブルシューティング情報については、「」を参照してください。トラブルシューティングの開始方法

Debugging

Espressif ESP32-DevKitC と ESP-WROVER-KIT (ESP-IDF v4.2) のデバッグコード

このセクションでは、ESP-IDF v4.2を使用してEspressifハードウェアをデバッグする方法を説明します。JTAG to USB ケーブルが必要です。USB to 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」を参照してください。

ESP-WROVER-KIT で JTAG を有効にするには、次に示すように TMS、TDI、TCK、S_TDI のピンにジャンパーを配置します。


                                ジャンパ配置
Windows でのデバッグ (ESP-IDF v4.2)

Windows でのデバッグをセットアップするには

  1. FTDI C232HM-DDHSL-0 の USB 側をコンピュータに接続し、他方の側を Espressif ESP32-DevKitC と ESP-WROVER-KIT (ESP-IDF v4.2) のデバッグコード の説明に従って接続します。FTDI C232HM-DDHSL-0 デバイスは、デバイスマネージャ[]ユニバーサル・シリアル・バス・コントローラ

  2. ユニバーサルシリアルバスデバイスのリストの下で、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. ドロップダウンメニューで、[DDHSL-0

    4. ターゲットドライバーフィールドの緑の矢印の右側で [WinUSB] を選択します。

    5. ターゲットドライバーフィールドの下のリストで、矢印を選択してドライバのインストール。[Replace Driver (ドライバーの置換)] を選択します。

  7. コマンドプロンプトを開き、FreeRTOS ダウンロードディレクトリのルートに移動し、次のコマンドを実行します。

    idf.py openocd

    このコマンドプロンプトを開いたままにしておきます。

  8. 新しいコマンドプロンプトを開き、FreeRTOS ダウンロードディレクトリのルートに移動し、

    idf.py flash monitor
  9. 別のコマンドプロンプトを開き、FreeRTOS ダウンロードディレクトリのルートに移動し、ボードでデモの実行が開始されるまで待機します。このときに、

    idf.py gdb

    このプログラムは main 関数で停止する必要があります。

    注記

    ESP32 では、最大 2 個のブレークポイントがサポートされています。

macOS でのデバッグ (ESP-IDF v4.2)
  1. FTDI driver for macOS をダウンロードします。

  2. OpenOCD をダウンロードします。

  3. ダウンロードした .tar ファイルを抽出して、.bash_profile のパスを OCD_INSTALL_DIR/openocd-esp32/bin に設定します。

  4. 次のコマンドを使用してをインストールします。libusbmacOS で。

    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 で始まる行で指定されています。前のステップの system_profiler 出力の ID に一致するように 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 v4.2)
  1. OpenOCD をダウンロードします。tarball を抽出し、readme ファイルのインストール手順に従ってください。

  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 通信に使用されます。もう 1 つのインターフェイスは ESP32 のシリアルポート (UART) にルーティングされ、ESP32 のフラッシュメモリへのコードのアップロードに使用されます。

  5. ターミナルウィンドウで FreeRTOS ダウンロードディレクトリのルートに移動し、以下のコマンドを使用して OpenOCD を実行します。

    idf.py openocd
  6. 別のターミナルを開き、FreeRTOS ダウンロードディレクトリのルートに移動し、次のコマンドを実行します。

    idf.py flash monitor
  7. 別のターミナルを開き、FreeRTOS ダウンロードディレクトリのルートに移動して、次のコマンドを実行します。

    idf.py gdb

    main() でこのプログラムを停止する必要があります。