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

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

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

重要

このリファレンス統合は、廃止された Amazon-FreeRTOS リポジトリでホストされます。新しいプロジェクトを作成するときは、ここから始めることをお勧めします。廃止された Amazon-FreeRTOS リポジトリに基づいて既存の FreeRTOS プロジェクトがある場合は、「」を参照してくださいAmazon-FreeRTOS Github リポジトリ移行ガイド

注記

独自の Espressif IDFプロジェクト内で無料のRTOSモジュラーライブラリとデモを統合する方法については、ESP32「-C3 プラットフォーム の注目のリファレンス統合」を参照してください。

このチュートリアルに従って、ESP32-ESP32-32、WROOM--ESP32SOLO1、または - モジュールと を搭載した Espressif ESP-DevKitWROVERC の使用を開始します ESP-WROVER-KIT-VB。Partner AWS Device カタログでパートナーから購入するには、次のリンクを使用します。

これらのバージョンの開発ボードは、無料 でサポートされていますRTOS。

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

注記

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

概要

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

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

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

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

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

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

前提条件

Espressif ボードで無料RTOSの使用を開始する前に、 AWS アカウントとアクセス許可を設定する必要があります。

にサインアップする AWS アカウント

がない場合は AWS アカウント、次の手順を実行して作成します。

にサインアップするには AWS アカウント
  1. https://portal.aws.amazon.com/billing/サインアップ を開きます。

  2. オンラインの手順に従います。

    サインアップ手順の一環として、通話呼び出しを受け取り、電話キーパッドで検証コードを入力するように求められます。

    にサインアップすると AWS アカウント、 AWS アカウントのルートユーザー が作成されます。ルートユーザーには、アカウントのすべての AWS のサービス とリソースへのアクセス権があります。セキュリティのベストプラクティスとして、ユーザーに管理アクセスを割り当て、ルートユーザーのみを使用してルートユーザーアクセスが必要なタスクを実行してください。

AWS は、サインアッププロセスが完了した後に確認 E メールを送信します。https://aws.amazon.com/ に移動し、マイアカウント を選択すると、いつでも現在のアカウントアクティビティを表示し、アカウントを管理できます。

管理アクセスを持つユーザーを作成する

にサインアップしたら AWS アカウント、 のセキュリティを確保し AWS アカウントのルートユーザー、 を有効にして管理ユーザーを作成し AWS IAM Identity Center、日常的なタスクにルートユーザーを使用しないようにします。

のセキュリティ保護 AWS アカウントのルートユーザー
  1. ルートユーザーを選択し、 AWS アカウント E メールアドレスを入力して、アカウント所有者AWS Management Consoleとして にサインインします。次のページでパスワードを入力します。

    ルートユーザーを使用してサインインする方法については、AWS サインイン ユーザーガイドルートユーザーとしてサインインするを参照してください。

  2. ルートユーザーの多要素認証 (MFA) を有効にします。

    手順については、「 ユーザーガイド」の AWS アカウント 「ルートユーザー (コンソール) の仮想MFAデバイスの有効化」を参照してください。 IAM

管理アクセスを持つユーザーを作成する
  1. IAM Identity Center を有効にします。

    手順については、「AWS IAM Identity Center ユーザーガイド」の「AWS IAM Identity Centerの有効化」を参照してください。

  2. IAM Identity Center で、ユーザーに管理アクセスを許可します。

    を ID ソース IAM アイデンティティセンターディレクトリ として使用する方法のチュートリアルについては、 AWS IAM Identity Center ユーザーガイド「デフォルトを使用してユーザーアクセスを設定する IAM アイデンティティセンターディレクトリ」を参照してください。

管理アクセス権を持つユーザーとしてサインインする
  • IAM Identity Center ユーザーでサインインするには、IAMIdentity Center ユーザーの作成時に E メールアドレスにURL送信されたサインインを使用します。

    IAM Identity Center ユーザーを使用してサインインする方法については、AWS サインイン 「 ユーザーガイド」の AWS 「 アクセスポータルへのサインイン」を参照してください。

追加のユーザーにアクセス権を割り当てる
  1. IAM Identity Center で、最小権限のアクセス許可を適用するベストプラクティスに従うアクセス許可セットを作成します。

    手順については、「AWS IAM Identity Center ユーザーガイド」の「権限設定を作成する」を参照してください。

  2. グループにユーザーを割り当て、そのグループにシングルサインオンアクセス権を割り当てます。

    手順については、「AWS IAM Identity Center ユーザーガイド」の「グループの参加」を参照してください。

アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。

使用を開始する

注記

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

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

    重要

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

  2. から Amazon FreeRTOS をダウンロードしますGitHub。(手順については、README.md ファイルを参照してください。)

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

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

    Windows

    1. ESP- IDFの Universal Online Installer for Windows をダウンロードします。

    2. 汎用オンラインインストーラを実行します。

    3. ESPIDF「」のステップに移動したら、「既存の ESP-IDF ディレクトリを使用する」を選択し、「既存の ESP-IDF ディレクトリを選択」を「」に設定しますfreertos/vendors/espressif/esp-idf

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

    macOS

    1. macOS のツールチェーンの標準セットアップの前提条件 (ESP-IDF v4.2) の手順に従います。

      重要

      Next Steps の「Get ESP-IDF」手順に到達したら、停止してからこのページの手順に戻ります。

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

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

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

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

    Linux

    1. Linux のツールチェーンの標準セットアップの前提条件 (ESP-IDF v4.2) の指示に従います。

      重要

      Next Steps の「Get ESP-IDF」手順に達したら、停止してからこのページの手順に戻ります。

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

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

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

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

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

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

    2. を使用してシリアル接続を確立するESP32ステップに従います。

    3. シリアル接続を確立したら、ボードとの接続用のシリアルポートをメモしておきます。デモをフラッシュするにはこれが必要です。

無料RTOSデモアプリケーションを設定する

このチュートリアルでは、無料RTOS設定ファイルは にあります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.xCMD」アプリ ( ESP-IDF ツールチェーンのインストール時にこのオプションを含めた場合) を開くか、「コマンドプロンプト」アプリを開きます。

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

    python --version

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

  3. AWS IoT コマンドを実行するには、 AWS コマンドラインインターフェイス (CLI) が必要です。Windows を実行している場合は、 easy_install awscli コマンドを使用して「Command」またはESP「-IDF 4.xCMD」アプリに AWS CLIをインストールします。

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

  4. 実行

    aws configure

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

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

    • Windows では、「Command」またはESP「-IDF 4.xCMD」アプリで を実行します。

      pip install boto3 --user
      注記

      詳細については、Boto3 ドキュメントを参照してください。

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

      pip install tornado nose --user

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

      pip install boto3 --user

    FreeRTOS には、 に接続するための Espressif ボードのセットアップを容易にするSetupAWS.pyスクリプトが含まれています AWS IoT。このスクリプトを設定するには、freertos/tools/aws_config_quick_start/configure.json を開いて以下の属性を設定します。

    afr_source_dir

    コンピュータの freertos ディレクトリへの完全なパス。このパスの指定にスラッシュを使用していることを確認します。

    thing_name

    ボードを表す AWS IoT モノに割り当てる名前。

    wifi_ssid

    SSID Wi-Fi ネットワークの 。

    wifi_password

    Wi-Fi ネットワークのパスワード。

    wifi_security

    Wi-Fi ネットワークのセキュリティタイプ。

    次のセキュリティタイプが有効です。

    • eWiFiSecurityOpen (オープン、セキュリティなし)

    • eWiFiSecurityWEP (WEP セキュリティ)

    • eWiFiSecurityWPA (WPA セキュリティ)

    • eWiFiSecurityWPA2 (WPA2 セキュリティ)

  6. 設定スクリプトを実行します。

    1. macOS または Linux を実行している場合、ターミナルプロンプトを開きます。Windows を実行している場合は、ESP「-IDF 4.xCMD」または「Command」アプリを開きます。

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

      python SetupAWS.py setup

      スクリプトは、次を実行します。

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

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

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

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

      注記

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

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

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

無料RTOSデモプロジェクトを実行する前に、 AWS IoT コンソールでMQTTクライアントを設定して、デバイスが AWS クラウドに送信するメッセージをモニタリングできます。

クライアントでMQTTトピックをサブスクライブするには AWS IoT MQTT
  1. AWS IoT コンソールに移動します。

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

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

デバイス上でデモプロジェクトが正常に実行されると、「Hello World!」が 購読しているトピックに複数回送信されたことを確認できます。

idf.py スクリプトを使用して無料RTOSデモプロジェクトを構築、フラッシュ、実行する

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

注記

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

idf.py -p /dev/cu.usbserial-00101301B flash
Windows、Linux、macOS (ESP-IDF v4.2) でビルドとフラッシュが無料RTOS
  1. 無料RTOSダウンロードディレクトリのルートに移動します。

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

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

    (これはアプリを開いた時点で既に完了しています。)

    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

でビルドおよびフラッシュフリーRTOS CMake

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

プロジェクトを構築してフラッシュするには
  1. コマンドラインウィンドウで、無料RTOSダウンロードディレクトリのルートに移動します。

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

    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 全体で無料RTOSデモプロジェクトを実行するには、iOS または Android モバイルデバイスで無料RTOS Bluetooth Low Energy SDK モバイルデモアプリケーションを実行する必要があります。

無料RTOS Bluetooth Low Energy モバイルSDKデモアプリケーションを設定するには
  1. の手順に従ってFreeRTOS Bluetooth デバイス用の Mobile SDK、ホストコンピュータにモバイルプラットフォームSDK用の をダウンロードしてインストールします。

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

ボードで Bluetooth Low Energy MQTT経由で デモを実行する方法については、「」を参照してくださいMQTT over Bluetooth Low Energy

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

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

独自のCMakeプロジェクトで FreeRTOS を消費する場合は、サブディレクトリとして設定し、アプリケーションと一緒に構築できます。まず、 から無料RTOSのコピーを取得しますGitHub。それを、次のコマンドを使用して Git サブモジュールとして設定することもできます。これにより、将来の更新が容易になります。

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

新しいバージョンがリリースされた場合、これらのコマンドを使用してローカルコピーを更新できます。

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

プロジェクトのディレクトリ構造が次のものであると仮定します。

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

次に、無料 でアプリケーションを構築するために使用できる最上位CMakeLists.txtファイルの例を示します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_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)

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

無料で設定を上書きするRTOS

現在、無料RTOSソースツリーの外部で設定を再定義するための明確に定義されたアプローチはありません。デフォルトでは、 CMakeは freertos/vendors/espressif/boards/esp32/aws_demos/config_files/および freertos/demos/include/ ディレクトリを検索します。ただし、回避策を使用して、最初に他のディレクトリを検索するようにコンパイラに指示できます。例えば、無料RTOS設定用の別のフォルダを追加できます。

- 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- に独自の sdkconfig を提供するIDF

独自の を指定する場合は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リファレンス」の「プロジェクト設定」を参照してください。正常にコンパイルした後に問題が発生した場合は、そのページの「廃止されたオプションとその置き換え」セクションを参照してください。

[概要]

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

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

トラブルシューティング

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

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

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

  • JTAG ハードウェアOCDベースのデバッグが必要な場合は、Espressif ウェブサイトのJTAG「デバッグ」を参照してください。

  • macOS で pip を使用して pyserial をインストールできない場合、pyserial ウェブサイト からダウンロードします。

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

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

  • ESP-IDF に必要なライブラリは無料 に含まれているためRTOS、外部からダウンロードする必要はありません。IDF_PATH 環境変数が設定されている場合は、無料 を構築する前に環境変数をクリアすることをお勧めします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 ケーブルへの が必要です。から MPSSE ケーブル (CFTDIC232HM-DDHSL-0 など) USBには を使用します。

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 ケーブル接続と機械的詳細」セクションを参照してください。

JTAG で を有効にするには ESP-WROVER-KIT、ここに示すようにTMS、、、TDOTDITCK、、および 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 デバイスは、ユニバーサルシリアルバスコントローラー の下の Device Manager に表示されます。

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

    注記

    デバイスはUSBシリアルポート としてリストされている場合があります。

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

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

    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
  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. コマンドプロンプトを開き、無料RTOSダウンロードディレクトリのルートに移動し、次のコマンドを実行します。

    idf.py openocd

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

  8. 新しいコマンドプロンプトを開き、無料RTOSダウンロードディレクトリのルートに移動し、 を実行します。

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

    idf.py gdb

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

    注記

    は、最大 2 つのブレークポイントESP32をサポートします。

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

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

  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. 10.9 より後のバージョンの macOS を実行している場合は、次のコマンドを使用して 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出力IDsから と一致するIDsように を変更します。

  10. ターミナルウィンドウを開き、無料RTOSダウンロードディレクトリのルートに移動し、次のコマンドを使用して を開く を実行しますOCD。

    idf.py openocd

    ターミナルウィンドウは開いたままにします。

  11. 新しいターミナルを開き、次のコマンドを使用してFTDIシリアルポートドライバーをロードします。

    sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
  12. 無料RTOSダウンロードディレクトリのルートに移動し、 を実行します。

    idf.py flash monitor
  13. 別の新しいターミナルを開き、無料RTOSダウンロードディレクトリのルートに移動し、 を実行します。

    idf.py gdb

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

Linux でのデバッグ (ESP-IDF v4.2)
  1. Open OCDをダウンロードします。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. ターミナルウィンドウで、無料RTOSダウンロードディレクトリのルートに移動し、次のコマンドを使用して を開く を実行しますOCD。

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

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

    idf.py gdb

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