翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Espressif ESP32-DevKitC と ESP-WROVER-KIT の開始方法
重要
このリファレンス統合は、非推奨の Amazon-FreeRTOS リポジトリでホストされています。新しいプロジェクトを作成するときは、ここから始めることをお勧めします。現在非推奨の Amazon-FreeRTOS リポジトリをベースにした既存の FreeRTOS プロジェクトが既にある場合は、「Amazon FreeRTOS Github リポジトリ移行ガイド」を参照してください。
注記
独自の Espressif IDF プロジェクト内で FreeRTOS モジュラーライブラリとデモを統合する方法の詳細については、ESP32-C3 プラットフォーム向けの注目のリファレンス統合
このチュートリアルに従って、ESP32-ESP32-WROOM-32, ESP32-SOLO-1-DevKitC の使用を開始します。パートナーデバイスカタログで AWS パートナーから購入するには、次のリンクを使用します。
開発ボードのこれらのバージョンが FreeRTOS でサポートされています。
これらのボードの最新バージョンの詳細については、Espressif ウェブサイトのESP32-DevKitC V4
注記
現在、ESP32-WROVER-KIT および ESP DevKitC の FreeRTOS ポートは、対称マルチプロセッシング (SMP) 機能をサポートしていません。
概要
このチュートリアルでは次のステップを説明します。
-
ボードをホストマシンに接続します。
-
マイクロコントローラーボード用の組み込みアプリケーションを開発およびデバッグするためのソフトウェアをホストマシンにインストールします。
-
FreeRTOS デモアプリケーションをバイナリイメージにクロスコンパイルします。
-
アプリケーションバイナリイメージをボードにロードし、アプリケーションを実行します。
-
モニタリングおよびデバッグの目的で、シリアル接続経由でボード上で実行されているアプリケーションに接続します。
前提条件
Espressif ボードで FreeRTOS の使用を開始する前に、 AWS アカウントとアクセス許可を設定する必要があります。
にサインアップする AWS アカウント
がない場合は AWS アカウント、次の手順を実行して作成します。
にサインアップするには AWS アカウント
オンラインの手順に従います。
サインアップ手順の一環として、通話呼び出しを受け取り、電話キーパッドで検証コードを入力するように求められます。
にサインアップすると AWS アカウント、 AWS アカウントのルートユーザーが作成されます。ルートユーザーには、アカウントのすべての AWS サービス とリソースへのアクセス権があります。セキュリティのベストプラクティスとして、ユーザーに管理アクセスを割り当て、ルートユーザーのみを使用してルートユーザーアクセスが必要なタスクを実行してください。
AWS サインアッププロセスが完了すると、 から確認メールが送信されます。https://aws.amazon.com/
管理アクセスを持つユーザーを作成する
にサインアップしたら AWS アカウント、 を保護し AWS アカウントのルートユーザー、 を有効にして AWS IAM Identity Center、日常的なタスクにルートユーザーを使用しないように管理ユーザーを作成します。
のセキュリティ保護 AWS アカウントのルートユーザー
-
ルートユーザーを選択し、 AWS アカウント E メールアドレスを入力して、アカウント所有者AWS Management Console
として にサインインします。次のページでパスワードを入力します。 ルートユーザーを使用してサインインする方法については、AWS サインイン ユーザーガイドの「ルートユーザーとしてサインインする」を参照してください。
-
ルートユーザーの多要素認証 (MFA) を有効にします。
手順については、「IAM ユーザーガイド」の AWS アカウント 「ルートユーザーの仮想 MFA デバイスを有効にする (コンソール)」を参照してください。
管理アクセスを持つユーザーを作成する
-
IAM アイデンティティセンターを有効にします。
手順については、「AWS IAM Identity Center ユーザーガイド」の「AWS IAM Identity Centerの有効化」を参照してください。
-
IAM アイデンティティセンターで、ユーザーに管理アクセスを付与します。
を ID ソース IAM アイデンティティセンターディレクトリ として使用する方法のチュートリアルについては、「 ユーザーガイド」の「デフォルト でユーザーアクセス IAM アイデンティティセンターディレクトリを設定するAWS IAM Identity Center 」を参照してください。
管理アクセス権を持つユーザーとしてサインインする
-
IAM アイデンティティセンターのユーザーとしてサインインするには、IAM アイデンティティセンターのユーザーの作成時に E メールアドレスに送信されたサインイン URL を使用します。
IAM Identity Center ユーザーを使用してサインインする方法については、「 AWS サインイン ユーザーガイド」の AWS 「 アクセスポータルにサインインする」を参照してください。
追加のユーザーにアクセス権を割り当てる
アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。
-
のユーザーとグループ AWS IAM Identity Center:
アクセス許可セットを作成します。「AWS IAM Identity Center ユーザーガイド」の「権限設定を作成する」の手順に従ってください。
-
IAM 内で、ID プロバイダーによって管理されているユーザー:
ID フェデレーションのロールを作成します。詳細については、「IAM ユーザーガイド」の「サードパーティー ID プロバイダー (フェデレーション) 用のロールの作成」を参照してください。
-
IAM ユーザー:
-
ユーザーが担当できるロールを作成します。手順については、「IAM ユーザーガイド」の「IAM ユーザー用ロールの作成」を参照してください。
-
(お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加する。詳細については、「IAM ユーザーガイド」の「ユーザー (コンソール) へのアクセス権限の追加」を参照してください。
-
使用を開始する
注記
このチュートリアルの Linux コマンドでは、Bash シェルを使用する必要があります。
-
Espressif ハードウェアを設定します。
-
ESP32-DevKitC 開発ボードハードウェアの設定については、ESP32-DevKitC V4 入門ガイド
を参照してください。 -
ESP-WROVER-KIT 開発ボードハードウェアの設定の詳細については、ESP-WROVER-KIT V4.1 入門ガイド
を参照してください。
重要
Espressif ガイドの開始方法セクションに到達したらそこで止まり、このページの手順に戻ります。
-
-
から Amazon FreeRTOS をダウンロードしますGitHub
。(手順については、README.md ファイルを参照してください。) -
開発環境をセットアップします。
ボードと通信するには、ツールチェーンをインストールする必要があります。Espressif には、ボード用のソフトウェアを開発するための ESP-IDF が用意されています。ESP-IDF には独自のバージョンの FreeRTOS カーネルがコンポーネントとして統合されているため、Amazon FreeRTOS には、FreeRTOS カーネルが除去された、カスタムバージョンの ESP-IDF v4.2 が含まれています。これにより、コンパイル時にファイルが重複する問題が修正されます。Amazon FreeRTOS に含まれているカスタムバージョンの ESP-IDF v4.2 を使用するには、ホストマシンのオペレーティングシステムに応じて以下の手順を実行します。
Windows
-
ESP-IDF の Windows 用の汎用オンラインインストーラ
をダウンロードします。 -
汎用オンラインインストーラを実行します。
-
ESP-IDF をダウンロードまたは使用する手順に進んだら、[既存の ESP-IDF ディレクトリを使用] を選択し、[既存の ESP-IDF ディレクトリを選択] を
に設定します。freertos
/vendors/espressif/esp-idf -
インストールを完了します。
macOS
-
「Standard Setup of Toolchain prerequisites (ESP-IDF v4.2) for macOS
」の手順を実行します。 重要
次のステップの下にある「ESP-IDF の取得」の手順に到達したらそこで止まり、このページの手順に戻ります。
-
コマンドラインウィンドウを開きます。
-
FreeRTOS ダウンロードディレクトリに移動し、次のスクリプトを実行して、お使いのプラットフォーム用の espressif ツールチェーンをダウンロードしてインストールします。
vendors/espressif/esp-idf/install.sh
-
次のコマンドを使用して、ESP-IDF ツールチェーンツールをターミナルのパスに追加します。
source vendors/espressif/esp-idf/export.sh
Linux
-
「Standard Setup of Toolchain prerequisites (ESP-IDF v4.2) for Linux
」の手順を実行します。 重要
次のステップの下にある「ESP-IDF の取得」の手順に到達したらそこで止まり、このページの手順に戻ります。
-
コマンドラインウィンドウを開きます。
-
FreeRTOS ダウンロードディレクトリに移動し、次のスクリプトを実行して、お使いのプラットフォーム用の espressif ツールチェーンをダウンロードしてインストールします。
vendors/espressif/esp-idf/install.sh
-
次のコマンドを使用して、ESP-IDF ツールチェーンツールをターミナルのパスに追加します。
source vendors/espressif/esp-idf/export.sh
-
-
シリアル接続を確立します。
-
ホストマシンと ESP32-DevKitC の間にシリアル接続を確立するには、CP210x USB を UART Bridge VCP ドライバーにインストールする必要があります。これらのドライバーは Silicon Labs
からダウンロードできます。 ホストマシンと ESP32-WROVER-KIT の間にシリアル接続を確立するには、FTDI 仮想 COM ポートドライバーをインストールする必要があります。このドライバーは FTDI
からダウンロードできます。 -
ESP32 でシリアル接続を確立する
ステップを実行します。 -
シリアル接続を確立したら、ボードとの接続用のシリアルポートをメモしておきます。デモをフラッシュするにはこれが必要です。
-
FreeRTOS デモアプリケーションを設定する
このチュートリアルでは、FreeRTOS 設定ファイルは
にあります。(例えば、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.x CMD」アプリ (ESP-IDF ツールチェーンのインストール時にこのオプションを含めた場合) または「コマンドプロンプト」アプリ (オプションを含めなかった場合) を開きます。
-
Python3 がインストールされていることを確認するには、以下を実行します。
python --version
インストールされているバージョンが表示されます。Python 3.0.1 以降がインストールされていない場合は、Python
ウェブサイトからインストールできます。 -
AWS IoT コマンドを実行するには、 AWS コマンドラインインターフェイス (CLI) が必要です。Windows を実行している場合は、
easy_install awscli
コマンドを使用して、「コマンド」または「ESP-IDF 4.x CMD」アプリケーションに AWS CLI をインストールします。macOS または Linux を実行している場合は、「 AWS CLI のインストール」を参照してください。
-
実行
aws configure
および アクセス AWS キー ID、シークレットアクセスキー、およびデフォルトの AWS リージョンを使用して AWS CLI を設定します。詳細については、AWS CLI の設定を参照してください。
-
AWS SDK for Python (boto3) をインストールするには、次のコマンドを使用します。
-
Windows の場合、「コマンド」または「ESP-IDF 4.x CMD」アプリで、以下を実行します。
pip install boto3 --user
注記
詳細については、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.jsonafr_source_dir
-
コンピュータの
ディレクトリへの完全なパス。このパスの指定にスラッシュを使用していることを確認します。freertos
thing_name
-
ボードを表す AWS IoT モノに割り当てる名前。
wifi_ssid
-
Wi-Fi ネットワークの SSID。
wifi_password
-
Wi-Fi ネットワークのパスワード。
wifi_security
-
Wi-Fi ネットワークのセキュリティタイプ。
次のセキュリティタイプが有効です。
-
eWiFiSecurityOpen
(オープン、セキュリティなし) -
eWiFiSecurityWEP
(WEP セキュリティ) -
eWiFiSecurityWPA
(WPA セキュリティ) -
eWiFiSecurityWPA2
(WPA2 セキュリティ)
-
-
-
設定スクリプトを実行します。
-
macOS または Linux を実行している場合、ターミナルプロンプトを開きます。Windows を実行している場合は、「ESP-IDF 4.x CMD」アプリまたは「コマンド」アプリを開きます。
-
ディレクトリに移動して、以下を実行します。freertos
/tools/aws_config_quick_startpython 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_startREADME.md
」を参照してください。 -
-
クラウドの MQTT メッセージのモニタリング
FreeRTOS デモプロジェクトを実行する前に、 AWS IoT コンソールで MQTT クライアントを設定して、デバイスが AWS クラウドに送信するメッセージをモニタリングできます。
MQTT クライアントで MQTT AWS IoT トピックをサブスクライブするには
-
AWS IoT コンソール
に移動します。 -
ナビゲーションペインで、[テスト] を選択し、次に [MQTT テストクライアント] を選択します。
-
[Subscription topic] (トピックのサブスクリプション) で
と入力し、[Subscribe to topic] (トピックへのサブスクライブ) を選択します。your-thing-name
/example/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)
-
FreeRTOS ダウンロードディレクトリのルートに移動します。
-
コマンドラインウィンドウで、次のコマンドを入力し、ESP-IDF ツールをターミナルのパスに追加します。
- Windows (「コマンド」アプリ)
-
vendors\espressif\esp-idf\export.bat
- Windows (「ESP-IDF 4.x CMD」アプリ)
-
(これはアプリを開いた時点で既に完了しています。)
- Linux/macOS
-
source vendors/espressif/esp-idf/export.sh
-
次のコマンドを使用して
build
ディレクトリで cmake を設定し、ファームウェアイメージを構築します。idf.py -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 build
次のような出力が表示されます。
Running cmake in directory /path/to/hello_world/build Executing "cmake -G Ninja --warn-uninitialized /path/to/hello_world"... Warn about uninitialized values. -- Found Git: /usr/bin/git (found version "2.17.0") -- Building empty aws_iot component due to configuration -- Component names: ... -- Component paths: ... ... (more lines of build system output) [527/527] Generating hello-world.bin esptool.py v2.3.1 Project build complete. To flash, run this command: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x10000 build/hello-world.bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin or run 'idf.py -p PORT flash'
エラーが起きなければ、構築によってファームウェアバイナリの .bin ファイルが生成されます。
-
次のコマンドを使用して、開発ボードのフラッシュメモリを消去します。
idf.py erase_flash
-
idf.py
スクリプトを使用して、アプリケーションバイナリをボードにフラッシュします。idf.py flash
-
次のコマンドを使用して、ボードのシリアルポートからの出力をモニタリングします。
idf.py monitor
注記
以下の例のように、これらのコマンドを組み合わせることができます。
idf.py erase_flash flash monitor
特定のホストマシンのセットアップでは、次の例のように、ボードをフラッシュするときにポートを指定する必要があります。
idf.py erase_flash flash monitor -p /dev/ttyUSB1
CMake で FreeRTOS を構築してフラッシュする
コードを構築して実行するために IDF SDK によって提供される idf.py
スクリプトに加えて、CMake を使用してプロジェクトを構築することもできます。現在、Unix Makefiles または Ninja ビルドシステムのいずれかがサポートされています。
プロジェクトを構築してフラッシュするには
-
コマンドラインウィンドウで、FreeRTOS ダウンロードディレクトリのルートに移動します。
-
次のスクリプトを実行して、ESP-IDF ツールをシェルのパスに追加します。
- 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 で FreeRTOS デモプロジェクトを実行するには、iOS または Android のモバイルデバイスで FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーションを実行する必要があります。
FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーションをセットアップするには
-
モバイルプラットフォーム用の SDK をホストコンピュータにダウンロードしてインストールするには、「FreeRTOS Bluetooth デバイス用の Mobile SDK」の手順に従います。
-
モバイルデバイスにデモモバイルアプリケーションをセットアップするには、「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
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_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
)
このコンポーネントは、デフォルトでアプリケーションコードに自動的にリンクされるようになりました。ヘッダーファイルを含めて、定義する関数を呼び出せるようになりました。
FreeRTOS の設定を上書きする
現在、FreeRTOS ソースツリーの外で構成を再定義するための明確なアプローチはありません。デフォルトでは、CMake による検索対象は
ディレクトリと freertos
/vendors/espressif/boards/esp32/aws_demos/config_files/
ディレクトリです。ただし、回避策を使用して、最初に他のディレクトリを検索するようにコンパイラに指示できます。例えば、FreeRTOS 設定用に別のフォルダを追加できます。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-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
詳細については、「Espressif API Reference」の「Project Configuration
[概要]
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
トラブルシューティングの詳細については、「トラブルシューティングの開始方法」を参照してください。
デバッグ
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 でのデバッグをセットアップするには
-
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] (デバイスマネージャー) に表示されます。
-
ユニバーサルシリアルバスデバイスのリストで、[C232HM-DDHSL-0] デバイスを右クリックし、[Properties] (プロパティ) を選択します。
注記
このデバイスは、[USB Serial Port] (USB シリアルポート) として表示される場合があります。
プロパティウィンドウで [Details] (詳細) タブを選択して、デバイスのプロパティを表示します。デバイスが表示されない場合は、Windows driver for FTDI C232HM-DDHSL-0
をインストールします。 -
[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
-
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] (ドライバーの置換) を選択します。
-
-
コマンドプロンプトを開き、FreeRTOS ダウンロードディレクトリのルートに移動し、次のコマンドを実行します。
idf.py openocd
このコマンドプロンプトを開いたままにしておきます。
-
新しいコマンドプロンプトを開き、FreeRTOS ダウンロードディレクトリのルートに移動して以下を実行します。
idf.py flash monitor
-
別のコマンドプロンプトを開き、FreeRTOS ダウンロードディレクトリのルートに移動し、ボードでデモの実行が開始されるまで待ちます。このときに、以下を実行します。
idf.py gdb
このプログラムは
main
関数で停止する必要があります。注記
ESP32 では、最大 2 個のブレークポイントがサポートされています。
-
- macOS (ESP-IDF v4.2) でのデバッグ
-
-
FTDI driver for macOS
をダウンロードします。 -
OpenOCD
をダウンロードします。 -
ダウンロードした .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
-
macOS 10.9 以降のバージョンを実行している場合は、次のコマンドを使用して Apple の FTDI ドライバーをアンロードします。
sudo kextunload -b com.apple.driver.AppleUSBFTDI
-
次のコマンドを使用して FTDI ケーブルの製品 ID とベンダー ID を取得します。アタッチされた USB デバイスが表示されます。
system_profiler SPUSBDataType
system_profiler
からの出力は次のようになります。DEVICE: Product ID: product-ID Vendor ID: vendor-ID (Future Technology Devices International Limited)
-
projects/espressif/esp32/make/aws_demos/esp32_devkitj_v1.cfg
ファイルを開きます。デバイスのベンダー ID および製品 ID はftdi_vid_pid
で始まる行で指定されています。前のステップのsystem_profiler
出力の ID に一致するように ID を変更します。 -
ターミナルウィンドウを開き、FreeRTOS ダウンロードディレクトリのルートに移動して、以下のコマンドを使用して OpenOCD を実行します。
idf.py openocd
ターミナルウィンドウは開いたままにします。
-
新しいターミナルを開き、次のコマンドを使用して FTDI シリアルポートドライバーをロードします。
sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
-
FreeRTOS ダウンロードディレクトリのルートに移動し、以下を実行します。
idf.py flash monitor
-
別の新しいターミナルを開き、FreeRTOS のダウンロードディレクトリのルートに移動し、以下を実行します。
idf.py gdb
main
でこのプログラムを停止する必要があります。
-
- Linux でのデバッグ (ESP-IDF v4.2)
-
-
OpenOCD
をダウンロードします。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 のフラッシュメモリにアップロードするために使用されます。 -
ターミナルウィンドウで FreeRTOS ダウンロードディレクトリのルートに移動して、以下のコマンドを使用して OpenOCD を実行します。
idf.py openocd
-
別のターミナルを開き、FreeRTOS ダウンロードディレクトリのルートに移動し、以下のコマンドを実行します。
idf.py flash monitor
-
別のターミナルを開き、FreeRTOS ダウンロードディレクトリのルートに移動し、以下のコマンドを実行します。
idf.py gdb
main()
でこのプログラムを停止する必要があります。
-