翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
EspressifDevKit ESP32-C および ESP-WROVER-KIT の開始方法
このリファレンスインテグレーションは、廃止された Amazon FreeRTOS リポジトリでホストされています。新しいプロジェクトを作成するときは、ここから開始することをお勧めします。廃止された Amazon-FreeRTOS リポジトリをベースにした既存の FreeRTOS プロジェクトがすでにある場合は、を参照してくださいアマゾン無料の GitHub リポジトリ移行ガイド。
FreeRTOS モジュラーライブラリとデモを独自の Espressif IDF プロジェクトに統合する方法については、ESP32-C3 プラットフォーム向けの特集リファレンス統合をご覧ください
このチュートリアルでは、ESP32-WROOM-32、ESP32-SOLO-1、または ESP-WROVERモジュールおよび ESP-WROVER-KIT-VB を搭載した EspressifDevKit ESP32-ESP32-WROOM-C の使用を開始するための手順について説明します。AWS パートナーデバイスカタログのパートナーから購入するには、次のリンクを使用します。
開発ボードのこれらのバージョンが FreeRTOS でサポートされています。
これらのボードの最新バージョンの詳細については、Espressif ウェブサイトの「DevKitESP32-C V4
現在、ESP32-WROVER-KIT および ESP DevKit C の FreeRTOS ポートは、対称型マルチプロセッシング (SMP) 機能をサポートしていません。
概要
このチュートリアルでは次のステップを説明します。
-
ボードをホストマシンに接続します。
-
マイクロコントローラーボード用の組み込みアプリケーションを開発およびデバッグするためのソフトウェアをホストマシンにインストールします。
-
FreeRTOS デモアプリケーションをバイナリイメージにクロスコンパイルします。
-
アプリケーションバイナリイメージをボードにロードし、アプリケーションを実行します。
-
モニタリングおよびデバッグの目的で、シリアル接続経由でボード上で実行されているアプリケーションに接続します。
前提条件
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 ユーザーにアタッチするには
-
[IAM console]
(IAM コンソール) に入ります。 -
ナビゲーションペインで [Users] (ユーザー) を選択します。
-
検索テキストボックスにユーザー名を入力し、リストから選択します。
-
[Add permissions] (許可の追加) を選択します。
-
[既存のポリシーを直接アタッチ] を選択します。
-
検索ボックスに「AmazonFreeRTOSFullAccess」と入力して一覧から選択し、[次へ:確認] を選択します。
-
[アクセス権限の追加] を選択します。
AWSIoTFullAccess ポリシーを IAM ユーザーにアタッチするには
-
[IAM console]
(IAM コンソール) に入ります。 -
ナビゲーションペインで [Users] (ユーザー) を選択します。
-
検索テキストボックスにユーザー名を入力し、リストから選択します。
-
[Add permissions] (許可の追加) を選択します。
-
[既存のポリシーを直接アタッチ] を選択します。
-
検索ボックスで AWSIoTFullAccess と入力してリストから選択し、[Next: Review] (次へ: レビュー) を選択します。
-
[Add permissions] (許可の追加) を選択します。
IAM アカウントとユーザーアカウントの詳細については、IAM ユーザーガイドを参照してください。
ポリシーの詳細については、IAM のアクセス許可とポリシーを参照してください。
開始方法
このチュートリアルの Linux コマンドでは、Bash シェルを使用する必要があります。
-
Espressif ハードウェアを設定します。
-
DevKitESP32-C 開発ボードハードウェアの設定の詳細については、DevKitESP32-C 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
-
macOS 用のツールチェーンの標準セットアップの前提条件 (ESP-IDF v4.2) の指示に従います
。 重要 次のステップの下にある「ESP-IDF の取得」の手順に到達したらそこで止まり、このページの手順に戻ります。
-
コマンドラインウィンドウを開きます。
-
FreeRTOS ダウンロードディレクトリに移動し、次のスクリプトを実行して、お使いのプラットフォーム用の espressif ツールチェーンをダウンロードしてインストールします。
vendors/espressif/esp-idf/install.sh
-
次のコマンドを使用して、ESP-IDF ツールチェーンツールをターミナルのパスに追加します。
source vendors/espressif/esp-idf/export.sh
Linux
-
Linux 用のツールチェーンの標準セットアップの前提条件 (ESP-IDF v4.2) の指示に従います
。 重要 次のステップの下にある「ESP-IDF の取得」の手順に到達したらそこで止まり、このページの手順に戻ります。
-
コマンドラインウィンドウを開きます。
-
FreeRTOS ダウンロードディレクトリに移動し、次のスクリプトを実行して、お使いのプラットフォーム用の Espressif ツールチェーンをダウンロードしてインストールします。
vendors/espressif/esp-idf/install.sh
-
次のコマンドを使用して、ESP-IDF ツールチェーンツールをターミナルのパスに追加します。
source vendors/espressif/esp-idf/export.sh
-
-
シリアル接続を確立します。
-
ホストマシンとDevKit ESP32-C の間にシリアル接続を確立するには、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クラウドに送信するメッセージをモニタリングすることができます。
AWS IoT MQTT クライアントで MQTT トピックをサブスクライブするには
-
AWS IoT コンソール
に移動します。 -
ナビゲーションペインで、[Test] (テスト) を選択し、次に [MQTT Test Client (MQTT Test
-
[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 ツールをターミナルのパスに追加します。
- ウィンドウズ (「コマンド」アプリ)
-
vendors\espressif\esp-idf\export.bat
- ウィンドウズ (「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 リファレンスの「プロジェクト設定
概要
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
EspressifDevKit ESP32-C および ESP-WROVER-KIT のデバッグコード (ESP-IDF v4.2)
このセクションでは、ESP-IDF v4.2 を使用して Espressif ハードウェアをデバッグする方法について説明します。JTAG to USB ケーブルが必要です。USB to MPSSE ケーブルを使用します (例: FTDI C232HM-DDHSL-0
- ESP-DevKit C 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 側をコンピュータに接続し、他方の側を EspressifDevKit ESP32-C および 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()
でこのプログラムを停止する必要があります。
-