翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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
注記
現在、ESP32-WROVER-KIT および ESP DevKitC の無料RTOSポートは対称マルチプロセッシング (SMP) 機能をサポートしていません。
概要
このチュートリアルでは次のステップを説明します。
-
ボードをホストマシンに接続します。
-
マイクロコントローラーボード用の組み込みアプリケーションを開発およびデバッグするためのソフトウェアをホストマシンにインストールします。
-
無料RTOSデモアプリケーションをバイナリイメージにクロスコンパイルします。
-
アプリケーションバイナリイメージをボードにロードし、アプリケーションを実行します。
-
モニタリングおよびデバッグの目的で、シリアル接続経由でボード上で実行されているアプリケーションに接続します。
前提条件
Espressif ボードで無料RTOSの使用を開始する前に、 AWS アカウントとアクセス許可を設定する必要があります。
にサインアップする AWS アカウント
がない場合は AWS アカウント、次の手順を実行して作成します。
にサインアップするには AWS アカウント
https://portal.aws.amazon.com/billing/サインアップ
を開きます。 オンラインの手順に従います。
サインアップ手順の一環として、通話呼び出しを受け取り、電話キーパッドで検証コードを入力するように求められます。
にサインアップすると AWS アカウント、 AWS アカウントのルートユーザー が作成されます。ルートユーザーには、アカウントのすべての AWS のサービス とリソースへのアクセス権があります。セキュリティのベストプラクティスとして、ユーザーに管理アクセスを割り当て、ルートユーザーのみを使用してルートユーザーアクセスが必要なタスクを実行してください。
AWS は、サインアッププロセスが完了した後に確認 E メールを送信します。https://aws.amazon.com/
管理アクセスを持つユーザーを作成する
にサインアップしたら AWS アカウント、 のセキュリティを確保し AWS アカウントのルートユーザー、 を有効にして管理ユーザーを作成し AWS IAM Identity Center、日常的なタスクにルートユーザーを使用しないようにします。
のセキュリティ保護 AWS アカウントのルートユーザー
-
ルートユーザーを選択し、 AWS アカウント E メールアドレスを入力して、アカウント所有者AWS Management Console
として にサインインします。次のページでパスワードを入力します。 ルートユーザーを使用してサインインする方法については、AWS サインイン ユーザーガイドのルートユーザーとしてサインインするを参照してください。
-
ルートユーザーの多要素認証 (MFA) を有効にします。
手順については、「 ユーザーガイド」の AWS アカウント 「ルートユーザー (コンソール) の仮想MFAデバイスの有効化」を参照してください。 IAM
管理アクセスを持つユーザーを作成する
-
IAM Identity Center を有効にします。
手順については、「AWS IAM Identity Center ユーザーガイド」の「AWS IAM Identity Centerの有効化」を参照してください。
-
IAM Identity Center で、ユーザーに管理アクセスを許可します。
を ID ソース IAM アイデンティティセンターディレクトリ として使用する方法のチュートリアルについては、 AWS IAM Identity Center ユーザーガイドの「デフォルトを使用してユーザーアクセスを設定する IAM アイデンティティセンターディレクトリ」を参照してください。
管理アクセス権を持つユーザーとしてサインインする
-
IAM Identity Center ユーザーでサインインするには、IAMIdentity Center ユーザーの作成時に E メールアドレスにURL送信されたサインインを使用します。
IAM Identity Center ユーザーを使用してサインインする方法については、AWS サインイン 「 ユーザーガイド」の AWS 「 アクセスポータルへのサインイン」を参照してください。
追加のユーザーにアクセス権を割り当てる
アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。
-
のユーザーとグループ AWS IAM Identity Center:
アクセス許可セットを作成します。「AWS IAM Identity Center ユーザーガイド」の「権限設定を作成する」の手順に従ってください。
-
ID プロバイダーIAMを介して で管理されるユーザー:
ID フェデレーションのロールを作成します。IAM 「 ユーザーガイド」の「サードパーティー ID プロバイダー (フェデレーション) のロールを作成する」の手順に従います。
-
IAM ユーザー:
-
ユーザーが担当できるロールを作成します。「 ユーザーガイド」のIAM「ユーザーのロールを作成する」の指示に従います。 IAM
-
(お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加する。IAM ユーザーガイドの「ユーザー (コンソール) へのアクセス許可の追加」の指示に従います。
-
使用を開始する
注記
このチュートリアルの Linux コマンドでは、Bash シェルを使用する必要があります。
-
Espressif ハードウェアを設定します。
-
ESP32-DevKitC 開発ボードハードウェアのセットアップについては、「 ESP32-DevKitC V4 入門ガイド
」を参照してください。 -
開発ボードハードウェアのセットアップ ESP-WROVER-KITについては、 ESP-WROVER-KITV4.1 入門ガイド
」を参照してください。
重要
Espressif ガイドの開始方法セクションに到達したらそこで止まり、このページの手順に戻ります。
-
-
から Amazon FreeRTOS をダウンロードしますGitHub
。(手順については、README.md ファイルを参照してください。) -
開発環境をセットアップします。
ボードと通信するには、ツールチェーンをインストールする必要があります。Espressif は、ボード用のソフトウェアを開発するための ESP-IDF を提供します。ESP-IDF には独自のバージョンの FreeRTOS Kernel がコンポーネントとして統合されているため、Amazon FreeRTOS には、FreeRTOS Kernel が削除された ESP-IDF v4.2 のカスタムバージョンが含まれています。これにより、コンパイル時にファイルが重複する問題が修正されます。Amazon Free に含まれる ESP-IDF v4.2 のカスタムバージョンを使用するにはRTOS、ホストマシンのオペレーティングシステムに関する以下の手順に従ってください。
Windows
-
ESP- IDFの Universal Online Installer
for Windows をダウンロードします。 -
汎用オンラインインストーラを実行します。
-
ESPIDF「」のステップに移動したら、「既存の ESP-IDF ディレクトリを使用する」を選択し、「既存の ESP-IDF ディレクトリを選択」を「」に設定します
。freertos
/vendors/espressif/esp-idf -
インストールを完了します。
macOS
-
macOS のツールチェーンの標準セットアップの前提条件 (ESP-IDF v4.2)
の手順に従います。 重要
Next Steps の「Get ESP-IDF」手順に到達したら、停止してからこのページの手順に戻ります。
-
コマンドラインウィンドウを開きます。
-
無料RTOSダウンロードディレクトリに移動し、次のスクリプトを実行して、プラットフォームの espressif ツールチェーンをダウンロードしてインストールします。
vendors/espressif/esp-idf/install.sh
-
次のコマンドを使用して、 ESP-IDF ツールチェーンツールをターミナルのパスに追加します。
source vendors/espressif/esp-idf/export.sh
Linux
-
Linux のツールチェーンの標準セットアップの前提条件 (ESP-IDF v4.2)
の指示に従います。 重要
Next Steps の「Get ESP-IDF」手順に達したら、停止してからこのページの手順に戻ります。
-
コマンドラインウィンドウを開きます。
-
無料RTOSダウンロードディレクトリに移動し、次のスクリプトを実行して、プラットフォームの Espressif ツールチェーンをダウンロードしてインストールします。
vendors/espressif/esp-idf/install.sh
-
次のコマンドを使用して、 ESP-IDF ツールチェーンツールをターミナルのパスに追加します。
source vendors/espressif/esp-idf/export.sh
-
-
シリアル接続を確立します。
-
ホストマシンと ESP32-DevKitC の間にシリアル接続を確立するには、UARTブリッジVCPドライバーUSBに CP210x をインストールする必要があります。これらのドライバーは 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 IoT コマンドを実行するには、 AWS コマンドラインインターフェイス (CLI) が必要です。Windows を実行している場合は、
easy_install awscli
コマンドを使用して「Command」またはESP「-IDF 4.xCMD」アプリに AWS CLIをインストールします。macOS または Linux を実行している場合は、「 のインストール AWS CLI」を参照してください。
-
実行
aws configure
AWS アクセスキー ID、シークレットアクセスキー、およびデフォルトの AWS リージョンを使用して AWS CLIを設定します。詳細については、「 の設定 AWS CLI」を参照してください。
-
次のコマンドを使用して、 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.jsonafr_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 セキュリティ)
-
-
-
設定スクリプトを実行します。
-
macOS または Linux を実行している場合、ターミナルプロンプトを開きます。Windows を実行している場合は、ESP「-IDF 4.xCMD」または「Command」アプリを開きます。
-
ディレクトリに移動して、以下を実行します。freertos
/tools/aws_config_quick_startpython 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_startREADME.md
」を参照してください。 -
-
クラウドでのMQTTメッセージのモニタリング
無料RTOSデモプロジェクトを実行する前に、 AWS IoT コンソールでMQTTクライアントを設定して、デバイスが AWS クラウドに送信するメッセージをモニタリングできます。
クライアントでMQTTトピックをサブスクライブするには AWS IoT MQTT
-
AWS IoT コンソール
に移動します。 -
ナビゲーションペインで、テスト を選択し、MQTTテストクライアント を選択します。
-
[Subscription topic] (トピックのサブスクリプション) で
と入力し、[Subscribe to topic] (トピックへのサブスクライブ) を選択します。your-thing-name
/example/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
-
無料RTOSダウンロードディレクトリのルートに移動します。
-
コマンドラインウィンドウで、次のコマンドを入力して、ターミナルの に ESP-IDF ツールを追加しますPATH。
- Windows (「コマンド」アプリ)
-
vendors\espressif\esp-idf\export.bat
- Windows (ESP「-IDF 4.xCMD」アプリ)
-
(これはアプリを開いた時点で既に完了しています。)
- 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
でビルドおよびフラッシュフリーRTOS CMake
コードを構築および実行IDFSDKするために が提供するidf.py
スクリプトに加えて、 を使用してプロジェクトを構築することもできますCMake。現在、Unix Makefiles または Ninja ビルドシステムのいずれかがサポートされています。
プロジェクトを構築してフラッシュするには
-
コマンドラインウィンドウで、無料RTOSダウンロードディレクトリのルートに移動します。
-
次のスクリプトを実行して、シェルの に ESP-IDF ツールを追加します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
Bluetooth Low Energy デモを実行する
FreeRTOS はBluetooth Low Energy ライブラリ接続をサポートしています。
Bluetooth Low Energy 全体で無料RTOSデモプロジェクトを実行するには、iOS または Android モバイルデバイスで無料RTOS Bluetooth Low Energy SDK モバイルデモアプリケーションを実行する必要があります。
無料RTOS Bluetooth Low Energy モバイルSDKデモアプリケーションを設定するには
-
の手順に従ってFreeRTOS Bluetooth デバイス用の Mobile SDK、ホストコンピュータにモバイルプラットフォームSDK用の をダウンロードしてインストールします。
-
モバイルデバイスにデモモバイルアプリケーションをセットアップするには、「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 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_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- に独自の 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 など
- 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 でのデバッグをセットアップするには
-
「」の説明に従って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シリアルポート としてリストされている場合があります。
プロパティウィンドウで [Details] (詳細) タブを選択して、デバイスのプロパティを表示します。デバイスがリストされていない場合は、C232HM -DDHSL-0 FTDI 用の Windows ドライバー
をインストールします。 -
詳細 タブで、プロパティ を選択し、ハードウェア 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
-
OpenOCD for Windows
をダウンロードします。 -
ファイルを
C:\
に解凍して、システムパスにC:\openocd-esp32\bin
を追加します。 -
OpenOCD には libusb が必要ですが、Windows にはデフォルトではインストールされません。libusb をインストールするには次のステップを実行します。
-
zadig.exe
をダウンロードします。 -
zadig.exe
を実行します。[Options] (オプション) メニューから、[List All Devices] (すべてのデバイスをリストする) を選択します。 -
ドロップダウンメニューから、C232HM -DDHSL-0 を選択します。
-
ターゲットドライバーフィールドの緑色の矢印の右側で、WinUSB を選択します。
-
ターゲットドライバーフィールドの下のリストで、矢印を選択して [Install Driver] (ドライバーのインストール) を選択します。[Replace Driver] (ドライバーの置換) を選択します。
-
-
コマンドプロンプトを開き、無料RTOSダウンロードディレクトリのルートに移動し、次のコマンドを実行します。
idf.py openocd
このコマンドプロンプトを開いたままにしておきます。
-
新しいコマンドプロンプトを開き、無料RTOSダウンロードディレクトリのルートに移動し、 を実行します。
idf.py flash monitor
-
別のコマンドプロンプトを開き、無料RTOSダウンロードディレクトリのルートに移動し、デモがボードで実行され始めるまで待ちます。このときに、以下を実行します。
idf.py gdb
このプログラムは
main
関数で停止する必要があります。注記
は、最大 2 つのブレークポイントESP32をサポートします。
-
- macOS でのデバッグ (ESP-IDF v4.2)
-
-
FTDI macOS のドライバー
をダウンロードします。 -
Open OCD
をダウンロードします。 -
ダウンロードした .tar ファイルを抽出して、
.bash_profile
のパスをOCD_INSTALL_DIR/openocd-esp32/bin
に設定します。 -
次のコマンドを使用して macOS に
libusb
をインストールします。brew install libusb
-
次のコマンドを使用してシリアルポートドライバーをアンロードします。
sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
-
次のコマンドを使用してシリアルポートドライバーをアンロードします。
sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
-
10.9 より後のバージョンの macOS を実行している場合は、次のコマンドを使用して 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
で始まる行で指定されています。前のステップのsystem_profiler
出力IDsから と一致するIDsように を変更します。 -
ターミナルウィンドウを開き、無料RTOSダウンロードディレクトリのルートに移動し、次のコマンドを使用して を開く を実行します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 を抽出し、readme ファイルのインストール手順に従ってください。 -
次のコマンドを使用して 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、通信に使用されます。もう 1 つのインターフェイスは ESP32のシリアルポート (UART) にルーティングされ、 ESP32のフラッシュメモリにコードをアップロードするために使用されます。 -
ターミナルウィンドウで、無料RTOSダウンロードディレクトリのルートに移動し、次のコマンドを使用して を開く を実行しますOCD。
idf.py openocd
-
別のターミナルを開き、無料RTOSダウンロードディレクトリのルートに移動し、次のコマンドを実行します。
idf.py flash monitor
-
別のターミナルを開き、無料RTOSダウンロードディレクトリのルートに移動し、次のコマンドを実行します。
idf.py gdb
main()
でこのプログラムを停止する必要があります。
-