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

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

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

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

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

これらのボードの最新バージョンの詳細については、「」を参照してください。ESP32-DevKitC V4またはESP-WROVER-KIT v4.1エスプレッシフのウェブサイトで。

注記

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

概要

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

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

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

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

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

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

前提条件

Espressif ボードで FreeRTOS を使い始める前に、AWS アカウントとアクセス許可を設定する必要があります。アカウントを作成するには、「AWS アカウントの作成とアクティベート」を参照してください。

AWS Identity and Access Management (IAM) ユーザーをアカウントに追加する方法については、IAM ユーザーガイドを参照してください。IAM ユーザーアカウントに AWS IoT と FreeRTOS へのアクセス権を付与するには、以下の IAM ポリシーを IAM ユーザーアカウントにアタッチします。

  • AmazonFreeRTOSFullAccess

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

  • AWSIoTFullAccess

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

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

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

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

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

  4. [Add permissions] (許可の追加) を選択します。

  5. [既存のポリシーを直接アタッチ] を選択します。

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

  7. [アクセス権限の追加] を選択します。

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

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

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

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

  4. [Add permissions] (許可の追加) を選択します。

  5. [既存のポリシーを直接アタッチ] を選択します。

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

  7. [Add permissions] (許可の追加) を選択します。

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

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

使用開始

注記

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

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

    重要

    Espressif ガイドの開始方法セクションに到達したらそこで止まり、このページの手順に戻ります。

  2. Amazon FreeRTOS をダウンロードする

    Amazon FreeRTOS は以下のいずれかからダウンロードできます。

    • GitHub

      (手順については、「」を参照してください。README.mdファイル。)

    • FreeRTOS コンソール

      (適切なものを選択します。設定そしてハードウェアプラットフォームあなたのデバイスに合う、例えば」に接続します。AWSIoT-ESP32-DevKitC「。)

  3. 開発環境をセットアップする

    ボードと通信するには、ツールチェーンをインストールする必要があります。Espressif は、ボード用のソフトウェアを開発するための ESP-IDF を提供しています。ESP-IDF にはコンポーネントとして統合された FreeRTOS カーネルの独自のバージョンがあるため、Amazon FreeRTOS には、FreeRTOS カーネルが削除された ESP-IDF v4.2 のカスタムバージョンが含まれています。これにより、コンパイル時にファイルが重複する問題が修正されます。Amazon FreeRTOS に含まれる ESP-IDF v4.2 のカスタムバージョンを使用するには、ホストマシンのオペレーティングシステムに応じて以下の手順に従ってください。

    Windows

    1. ESP-IDFのダウンロードユニバーサルオンラインインストーラfor Windows。

    2. を実行ユニバーサルオンラインインストーラ

    3. ステップに着いたらESP-IDFをダウンロードまたは使用する、選択既存の ESP-IDF ディレクトリを使用するそしてセットする既存の ESP-IDF ディレクトリを選択してくださいfreertos/vendors/espressif/esp-idf

    4. インストールを完了します。

    macOS

    1. 「」の指示に従います。macOS 用のツールチェーンの標準セットアップの前提条件 (ESP-IDF v4.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 v4.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 の間にシリアル接続を確立するにはDevKitC、CP210x USB to UART Bridge 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 IoT コマンドを実行するために、AWS コマンドラインインターフェイス (CLI) が必要です。Windows を実行している場合は、easy_install awscliコマンドを使用して、AWS「コマンド」または「ESP-IDF 4.x CMD」アプリの CLI。

    macOS や Linux を実行している場合は、AWS CLI のインストールを参照してください。

  4. 実行

    aws configure

    次に AWS アクセスキー ID 、シークレットアクセスキー、およびデフォルトの AWS リージョンを使用して AWS CLI を設定します。詳細については、AWS CLI の設定を参照してください。

  5. 次のコマンドを使用して、AWS SDK for Python (Boto3) をインストールします。

    • Windowsでは、「コマンド」または「ESP-IDF 4.x CMD」アプリで、次のコマンドを実行します。

      easy_install boto3
    • macOS または Linux の場合、以下を実行します。

      pip install tornado nose --user

      続いて以下を実行します。

      pip install boto3 --user

    FreeRTOS には、AWS IoT に接続するための Espressif ボードのセットアップを容易にする SetupAWS.py スクリプトが含まれています。このスクリプトを設定するには、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 を実行している場合は、「ESP-IDF 4.x CMD」または「コマンド」アプリを開きます。

    2. freertos/tools/aws_config_quick_start ディレクトリに移動して、以下を実行します。

      python SetupAWS.py setup

      スクリプトは次のことを実行します。

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

      • 証明書に IoT ポリシーを、AWS IoT のモノに証明書をアタッチします。

      • aws_clientcredential.h エンドポイント、Wi-Fi SSID、および認証情報を AWS IoT ファイルに追加します。

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

      注記

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

      SetupAWS.py の詳細については、freertos/tools/aws_config_quick_start ディレクトリにある「README.md」を参照してください。

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

FreeRTOS デモプロジェクトを実行する前にで MQTT クライアントをセットアップできます。AWS IoTデバイスがに送信するメッセージをモニタリングするには、コンソールでAWSCloud。

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

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

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

  3. [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 ダウンロードディレクトリのルートに移動します。

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

    Windows (「コマンド」アプリ)
    vendors\espressif\esp-idf\export.bat
    ウィンドウズ (「ESP-IDF 4.x CMD」アプリ)

    (これは、アプリを開いたときに既に行われています。)

    Linux/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 Makefiles または Ninja ビルドシステムのいずれかがサポートされています。

プロジェクトを構築してフラッシュするには

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

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

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

    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
  4. プロジェクトをビルドします。

    Unix Makefiles を使用
    make -C ./YOUR_BUILD_DIRECTORY -j8
    Ninja を使用
    ninja -C ./YOUR_BUILD_DIRECTORY -j8
  5. フラッシュを消去してから、ボードをフラッシュします。

    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

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 Bluetooth デバイス用の 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

以下に、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, 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_mqttAFR::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 にあるデフォルトのファイルが使用されます。

詳細については、次を参照してください。Project configurationEspressif で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 ドライバーがインストールされていないことを確認してください。ドライバーをアンインストールするには、FTDI Drivers Installation Guide for macOS X の手順に従います。

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

  • GDBstub を gdb との通信用に有効にすることができます。特別な JTAG ハードウェアは必要ありません。詳細については、Espressif ウェブサイトの GDBStub を使用して GDB を起動するを参照してください。

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

  • macOS で pip を使用して 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 のようになっているはずです。

  • 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、TDO、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 デバイスは、[Universal Serial Bus Controllers] (ユニバーサルシリアルバスコントローラー) の [Device Manager] (デバイスマネージャー) に表示されます。

  2. ユニバーサルシリアルバスデバイスのリストで、[C232HM-DDHSL-0] デバイスを右クリックし、[Properties] (プロパティ) を選択します。

    注記

    このデバイスは、[USB Serial Port] (USB シリアルポート) として表示される場合があります。

    プロパティウィンドウで [Details] (詳細) タブを選択して、デバイスのプロパティを表示します。デバイスが表示されない場合は、Windows driver for FTDI C232HM-DDHSL-0 をインストールします。

  3. [Details] (詳細) タブで、[Property] (プロパティ) を選択し、[Hardware IDs] (ハードウェア ID) を選択します。[Value] (値) フィールドに、次のような内容が表示されます。

    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] を選択します。

    5. ターゲットドライバーフィールドの下のリストで、矢印を選択して [Install Driver] (ドライバーのインストール) を選択します。[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. 次のコマンドを使用して 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 で始まる行で指定されています。前のステップの 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 デバイスを一覧表示します。グループ所有者が 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 通信に使用されます。もう 1 つのインターフェイスは ESP32 のシリアルポート (UART) にルーティングされ、コードを ESP32 のフラッシュメモリにアップロードするために使用されます。

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

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

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

    idf.py gdb

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