Espressif ESP32-DevKitC と ESP-WROVER-KIT の開始方法
このチュートリアルでは、ESP32-WROOM-32、ESP32-SOLO-1、または ESP-WROVER モジュール、および ESP-WROVER-KIT-VB
を搭載した Espressif ESP32-DevKitC の使用を開始するための手順について説明します。AWS Partner Device catalog のパートナーから購入するには、ESP32-WROOM-32 DevKitC
現在、ESP32-WROVER-KIT および ESP DevKitC の Amazon FreeRTOS ポートは、以下の機能をサポートしていません。
-
対称型マルチプロセッシング (SMP)。
概要
このチュートリアルには、使用開始のための以下の手順が含まれています。
-
ボードをホストマシンに接続します。
-
マイクロコントローラーボード用の組み込みアプリケーションを開発およびデバッグするためのソフトウェアをホストマシンにインストールします。
-
Amazon FreeRTOS デモアプリケーションをバイナリイメージにクロスコンパイルします。
-
アプリケーションバイナリイメージをボードにロードし、アプリケーションを実行します。
-
モニタリングおよびデバッグの目的で、シリアル接続経由で、ボード上で実行されているアプリケーションに接続します。
前提条件
Espressif ボードで Amazon FreeRTOS を使い始める前に、AWS アカウントとアクセス許可を設定する必要があります。
AWS アカウントを作成するには、「AWS アカウントの作成とアクティベート
IAM ユーザーを AWS アカウントに追加するには、「IAM ユーザーガイド」を参照してください。AWS IoT および Amazon FreeRTOS に IAM ユーザーアカウントのアクセスを付与するには、IAM ユーザーアカウントに以下の IAM ポリシーをアタッチします。
-
AmazonFreeRTOSFullAccess
-
AWSIoTFullAccess
AmazonFreeRTOSFullAccess ポリシーを IAM ユーザーにアタッチするには
-
IAM コンソール
を参照し、ナビゲーションペインから [Users (ユーザー)] を選択します。 -
検索テキストボックスにユーザー名を入力し、リストから選択します。
-
[Add permissions (アクセス許可を追加する)] を選択します。
-
[Attach existing policies directly (既存のポリシーを直接アタッチする)] を選択します。
-
検索ボックスで「
AmazonFreeRTOSFullAccess
」と入力してリストから選択し、[Next: Review (次へ: レビュー)] を選択します。 -
[Add permissions (アクセス許可を追加する)] を選択します。
AWSIoTFullAccess ポリシーを IAM ユーザーにアタッチするには
-
IAM コンソール
を参照し、ナビゲーションペインから [Users (ユーザー)] を選択します。 -
検索テキストボックスにユーザー名を入力し、リストから選択します。
-
[Add permissions (アクセス許可を追加する)] を選択します。
-
[Attach existing policies directly (既存のポリシーを直接アタッチする)] を選択します。
-
検索ボックスで「
AWSIoTFullAccess
」と入力してリストから選択し、[Next: Review (次へ: レビュー)] を選択します。 -
[Add permissions (アクセス許可を追加する)] を選択します。
IAM およびユーザーアカウントの詳細については、IAM ユーザーガイド を参照してください。
ポリシーの詳細については、「IAM アクセス権限とポリシー」を参照してください。
Espressif ハードウェアの設定
ESP32-DevKitC 開発ボードハードウェアの設定の詳細については、ESP32-DevKitC 入門ガイド
ESP-WROVER-KIT 開発ボードハードウェアの設定の詳細については、ESP-WROVER-KIT 入門ガイド
Espressif ガイドの「開始方法」に進まないでください。代わりに、次のステップを実行します。
開発環境の設定
ボードと通信するには、ツールチェーンをダウンロードしてインストールする必要があります。
ツールチェーンの設定
ツールチェーンを設定するには、ホストマシンのオペレーティングシステムの指示に従ってください。
[次のステップ] の下にある「ESP-IDF の取得」の手順に到達したら、停止してこのページの手順に戻ります。以前に「ESP-IDF の取得」の指示に従って ESP-IDF をインストールした場合は、続行する前にシステムから
IDF_PATH
環境変数を必ずクリアしてください。
ESP-IDF のバージョン 3.3 (Amazon FreeRTOS で使用されるバージョン) では、ESP32 コンパイラの最新バージョンがサポートされていません。ESP-IDF のバージョン 3.3 と互換性のあるコンパイラを使用する必要があります (上記のリンクを参照)。コンパイラのバージョンを確認するには、「xtensa-esp32-elf-gcc-version」を実行します。
CMake をインストールする
CMake ビルドシステムは、このデバイスの Amazon FreeRTOS デモとテストアプリケーションをビルドするために必要です。Amazon FreeRTOS では、バージョン 3.13 以降がサポートされています。
CMake.org
Amazon FreeRTOS で CMake の使用に関する詳細については、「Amazon FreeRTOS による CMake の使用」を参照してください。
シリアル接続の確立
ホストマシンと ESP32-DevKitC の間にシリアル接続を確立するには、CP210x USB を UART Bridge VCP ドライバーにインストールする必要があります。これらのドライバーは
Silicon Labs
ホストマシンと ESP32-WROVER-KIT の間にシリアル接続を確立するには、一部の FTDI 仮想 COM ポートドライバーをインストールする必要があります。これらのドライバーは
FTDI
詳細については、「ESP32 とのシリアル接続を確立する
Amazon FreeRTOS をダウンロードして設定する
環境をセットアップすると、GitHub
Amazon FreeRTOS デモアプリケーションを設定する
-
macOS または Linux を実行している場合、ターミナルプロンプトを開きます。Windows を実行している場合は、mingw32.exe を開きます。
-
Python 2.7.10 以降がインストールされていることを確認するには、python --version を実行します。インストールされているバージョンが表示されます。Python 2.7.10 以降がインストールされていない場合は、Python ウェブサイト
からインストールできます。 -
AWS IoT コマンドを実行するには AWS CLI が必要です。Windows を実行している場合は、easy_install awscli を使用して mingw32 環境に AWS CLI をインストールします。
macOS または Linux を実行している場合は、「AWS コマンドラインインターフェイスのインストール」を参照してください。
-
aws configure を実行し、AWS アクセスキー ID、シークレットアクセスキー、およびデフォルトのリージョン名を使用して AWS CLI を設定します。詳細については、「AWS CLI の設定」を参照してください。
-
次のコマンドを使用して、AWS SDK for Python (boto3) をインストールします。
-
Windows では、mingw32 環境で、easy_install boto3 を実行します。
-
macOS または Linux で、pip install tornado nose --user、pip install boto3 --user の順に実行します。
-
Amazon FreeRTOS には、AWS IoT に接続するための Espressif ボードのセットアップを容易にする SetupAWS.py
スクリプトが含まれています。このスクリプトを設定するには、
を開いて次の属性を設定します。
<amazon-freertos>
/tools/aws_config_quick_start/configure.json
afr_source_dir
-
コンピュータの
<amazon-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 を実行している場合は、mingw32.exe を開きます。
-
ディレクトリに移動して、python SetupAWS.py setup を実行します。<amazon-freertos>
/tools/aws_config_quick_start
スクリプトでは次のことが実行されます。
-
IoT のモノ、証明書およびポリシーを作成します。
-
証明書に IoT ポリシーを、AWS IoT のモノに証明書をアタッチします。
-
AWS IoT エンドポイント、Wi-Fi SSID、および認証情報を
aws_clientcredential.h
ファイルに追加します。 -
証明書とプライベートキーをフォーマットして
aws_clientcredential.h
ヘッダーファイルに書き込みます。
SetupAWS.py
の詳細については、
ディレクトリにある README.md を参照してください。
<amazon-freertos>
/tools/aws_config_quick_start
Amazon FreeRTOS デモプロジェクトをビルド、フラッシュ、および実行する
CMake を使用してビルドファイルを生成し、Make を使用してアプリケーションバイナリをビルドし、Espressif の IDF ユーティリティを使用してボードをフラッシュできます。
Amazon FreeRTOS をビルドする
(Windows を使用している場合は、次のセクションを参照してください)
CMake を使用してビルドファイルを生成してから、Make を使用してアプリケーションをビルドします。
CMake を使用してデモアプリケーションのビルドファイルを生成するには
-
ディレクトリを Amazon FreeRTOS ダウンロードディレクトリのルートに変更します。
-
ビルドファイルを生成するには、次のコマンドを使用します。
cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -S . -B
your-build-directory
注記 デバッグ用にアプリケーションをビルドする場合は、このコマンドに
-DCMAKE_BUILD_TYPE=Debug
フラグを追加します。テストアプリケーションのビルドファイルを生成する場合は、
-DAFR_ENABLE_TESTS=1
フラグを追加します。Lightweight IP (LwIP) のサポートを追加する場合は、
-DAFR_ESP_LWIP=1
フラグを追加します。
Make を使用してアプリケーションをビルドするには
-
ディレクトリを
build
ディレクトリに変更します。 -
Make を使用してアプリケーションをビルドするには、次のコマンドを使用します。
make all -j4
注記 aws_demos
プロジェクトとaws_tests
プロジェクトを切り替えるたびに、cmake コマンドでビルドファイルを生成する必要があります。
Windows で Amazon FreeRTOS をビルドする
Windows では、CMake に対してビルドジェネレータを指定する必要があります。指定しない場合、CMake はデフォルトを Visual Studio に使用します。Ninja ビルドシステムは Windows、Linux、および MacOS で機能するため、Expressif では Ninja ビルドシステムが公式に推奨されます。CMake コマンドは、cmd あるいは powershell などのネイティブの Windows 環境で実行する必要があります。MSYS2 や WSL などの仮想 Linux 環境で CMake コマンドを実行することはサポートされていません。
CMake を使用してビルドファイルを生成してから、Make を使用してアプリケーションをビルドします。
CMake を使用してデモアプリケーションのビルドファイルを生成するには
-
ディレクトリを Amazon FreeRTOS ダウンロードディレクトリのルートに変更します。
-
ビルドファイルを生成するには、次のコマンドを使用します。
cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -GNinja -S . -B
your-build-directory
注記 デバッグ用にアプリケーションをビルドする場合は、このコマンドに
-DCMAKE_BUILD_TYPE=Debug
フラグを追加します。テストアプリケーションのビルドファイルを生成する場合は、
-DAFR_ENABLE_TESTS=1
フラグを追加します。
アプリケーションを構築するには
-
ディレクトリを
build
ディレクトリに変更します。 -
Ninja を呼び出してアプリケーションを構築します。
ninja
または、一般的な CMake インターフェイスを使用してアプリケーションを構築します。
cmake --build
your-build-directory
注記 aws_demos
プロジェクトとaws_tests
プロジェクトを切り替えるたびに、cmake コマンドでビルドファイルを生成する必要があります。
Amazon FreeRTOS をフラッシュおよび実行する
Espressif の IDF ユーティリティ (
) を使用して、ボードをフラッシュし、アプリケーションを実行し、ログを表示します。
<amazon-freertos>
/vendors/espressif/esp-idf/tools/idf.py
ボードのフラッシュを消去するには、
ディレクトリに移動し、次のコマンドを使用します。
<amazon-freertos>
./vendors/espressif/esp-idf/tools/idf.py erase_flash -B build
アプリケーションバイナリをボードにフラッシュするには、make
を使用します。
make flash
また、次のように IDF スクリプトを使用してボードをフラッシュすることもできます。
./vendors/espressif/esp-idf/tools/idf.py flash -B build
モニタリングするには、次のコマンドを使用します。
./vendors/espressif/esp-idf/tools/idf.py monitor -p /dev/ttyUSB1 -B build
これらのコマンドを組み合わせることができます。次に例を示します。
./vendors/espressif/esp-idf/tools/idf.py erase_flash flash monitor -p /dev/ttyUSB1 -B build
クラウド上の MQTT メッセージのモニタリング
デバイスが AWS クラウドに送信するメッセージをモニタリングするには、AWS IoT コンソールで MQTT クライアントを使用します。
AWS IoT MQTT クライアントで MQTT トピックをサブスクライブするには
-
AWS IoT コンソール
にサインインします。 -
ナビゲーションペインで、[Test (テスト)] を選択して MQTT クライアントを開きます。
-
[Subscription topic (トピックのサブスクリプション)] で「
iotdemo/#
」と入力し、[Subscribe to topic (トピックへのサブスクライブ)] を選択します。
Bluetooth Low-Energy デモを実行する
Amazon FreeRTOS は、Bluetooth Low Energy 接続をサポートしています。
Bluetooth Low Energy で Amazon FreeRTOS デモプロジェクトを実行するには、iOS または Android のモバイルデバイスで Amazon FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーションを実行する必要があります。
Amazon FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーションをセットアップするには
-
モバイルプラットフォーム用の SDK をホストコンピュータにダウンロードしてインストールするには、「Amazon FreeRTOS Bluetooth デバイス用の Mobile SDK」の手順に従います。
-
モバイルデバイスでデモモバイルアプリケーションを設定するには、「Amazon FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション」の手順に従います。
ボードで MQTT over Bluetooth Low Energy デモを実行する方法については、「MQTT over Bluetooth Low Energy デモアプリケーション」を参照してください。
ボードで Wi-Fi プロビジョニングデモを実行する方法については、「Wi-Fi プロビジョニングデモアプリケーション」を参照してください。
ESP32 用の独自の CMake プロジェクトで Amazon FreeRTOS を使用する
あなた自身の CMake プロジェクトで Amazon FreeRTOS を消費したい場合は、それをサブディレクトリとして設定し、アプリケーションと一緒にビルドすることができます。まず、GitHub
git submodule add -b release https://github.com/aws/amazon-freertos.git amazon-freertos
新しいバージョンがリリースされた場合、これらのコマンドを使用してローカルコピーを更新できます。
# Pull the latest changes from the remote tracking branch.
git submodule update --remote -- amazon-freertos
# Commit the submodule change because it is pointing to a different revision now.
git add amazon-freertos
git commit -m "Update Amazon FreeRTOS to a new release"
プロジェクトのディレクトリ構造が次のものであると仮定します。
- amazon-freertos (the copy that you obtained from GitHub or the AWS IoT console) - src - main.c (your application code) - CMakeLists.txt
以下に、Amazon FreeRTOS を使用してアプリケーションを構築するために使用できる最上位 CMakeLists.txt
ファイルの例を示します。
cmake_minimum_required(VERSION 3.13) project(freertos_examples) add_executable(my_app src/main.c) # Tell IDF build to link against this target. set(IDF_PROJECT_EXECUTABLE my_app) # Add amazon freertos as a subdirectory. AFR_BOARD tells which board to target. set(AFR_BOARD espressif.esp32_devkitc CACHE INTERNAL "") add_subdirectory(amazon-freertos) # Link against the mqtt library so that we can use it. Dependencies are transitively # linked. target_link_libraries(my_app PRIVATE AFR::mqtt)
プロジェクトをビルドするには、次の CMake コマンドを実行します。ESP32 コンパイラが PATH 環境変数にあることを確認してください。
cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=amazon-freertos/tools/cmake/toolchains/xtensa-esp32.cmake -GNinja cmake --build build
アプリケーションをボードにフラッシュするには、
cmake --build build --target flash
Amazon FreeRTOS からコンポーネントを使用する
CMake を実行した後、サマリー出力で使用可能なすべてのコンポーネントを見つけることができます。次のように表示されます。
====================Configuration for Amazon FreeRTOS==================== Version: 201910.00 Git version: 201910.00-388-gcb3612cb7 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 Amazon FreeRTOS modules: Modules to build: ble, ble_hal, ble_wifi_provisioning, common, crypto, defender, dev_mode_key_provisioning, freertos_plus_tcp, greengrass, https, kernel, mqtt, ota, pkcs11, pkcs11_implementation, platform, secure_sockets, serializer, shadow, tls, wifi Enabled by user: ble, ble_hal, ble_wifi_provisioning, defender, greengrass, https, mqtt, ota, pkcs11, pkcs11_implementation, platform, secure_sockets, shadow, wifi Enabled by dependency: common, crypto, demo_base, dev_mode_key_provisioning, freertos, freertos_plus_tcp, kernel, pkcs11_mbedtls, secure_sockets_freertos_plus_tcp, serializer, tls, utils 3rdparty dependencies: http_parser, jsmn, mbedtls, pkcs11, tinycbor Available demos: demo_ble, demo_ble_numeric_comparison, demo_defender, demo_greengrass_connectivity, demo_https, demo_mqtt, demo_ota, demo_shadow, demo_tcp, demo_wifi_provisioning Available tests: =========================================================================
「構築するモジュール」リストから任意のコンポーネントを参照できます。それらをアプリケーションにリンクするには、名前の前に AFR::
名前空間を置きます。たとえば AFR::mqtt
、AFR::ota
などです。
ESP-IDF へのカスタムコンポーネントの追加
ESP-IDF ビルド環境にさらにコンポーネントを追加できます。たとえば、foo
というコンポーネントを追加し、プロジェクトは次のようになります。
- amazon-freertos - components - foo - include - foo.h - src - foo.c - CMakeLists.txt - src - main.c - CMakeLists.txt
次に、コンポーネントの CMakeLists.txt ファイルの例を示します。
# include paths of this components. set(COMPONENT_ADD_INCLUDEDIRS include) # source files of this components. set(COMPONENT_SRCDIRS src) # Alternatively, use COMPONENT_SRCS to specify source files explicitly # set(COMPONENT_SRCS src/
foo.c
) # add this components, this will define a CMake library target. register_component()
標準の CMake 関数 target_link_libraries
を使用して依存関係を指定することもできます。コンポーネントのターゲット名は、ESP-IDF で定義された変数 COMPONENT_TARGET
に格納されていることに注意してください。
# add this component, this will define a CMake library target.
register_component()
# standard CMake function can be used to specify dependencies. ${COMPONENT_TARGET} is defined
# from esp-idf when you call register_component, by default it's idf_component_<folder_name>.
target_link_libraries(${COMPONENT_TARGET} PRIVATE AFR::mqtt)
ESP コンポーネントの場合、これは 2 つの変数 COMPONENT_REQUIRES
と COMPONENT_PRIV_REQUIRES
を設定することによって行われます。ESP-IDF Programming Guide の「When Writing a Component
# If the dependencies are from ESP-IDF, use these 2 variables. Note these need to be
# set before calling register_component().
set(COMPONENT_REQUIRES log)
set(COMPONENT_PRIV_REQUIRES lwip)
次に、最上位レベルの CMakeLists.txt
ファイルで、これらのコンポーネントを検索する場所を ESP-IDF に指示します。add_subdirectory(amazon-freertos)
の前の任意の場所に次の行を挿入します。
# Add some extra components. IDF_EXTRA_COMPONENT_DIRS is an variable used by ESP-IDF # to collect extra components. get_filename_component( EXTRA_COMPONENT_DIRS "components/
foo
" ABSOLUTE ) list(APPEND IDF_EXTRA_COMPONENT_DIRS ${EXTRA_COMPONENT_DIRS})
このコンポーネントは、デフォルトでアプリケーションコードに自動的にリンクされるようになりました。ヘッダーファイルを含めて、定義する関数を呼び出すことができるはずです。
Amazon FreeRTOS の構成を上書きする
現在、Amazon FreeRTOS ソースツリーの外で構成を再定義するための明確なアプローチはありません。デフォルトでは、CMake は
ディレクトリと <amazon-freertos>
/vendors/espressif/boards/esp32/aws_demos/config_files/
ディレクトリを探します。ただし、回避策を使用して、最初に他のディレクトリを検索するようにコンパイラに指示できます。たとえば、Amazon FreeRTOS 構成用に別のフォルダを追加できます。
<amazon-freertos>
/demos/include/
- amazon-freertos - amazon-freertos-configs - aws_clientcredential.h - aws_clientcredential_keys.h - iot_mqtt_agent_config.h - iot_config.h - components - src - CMakeLists.txt
amazon-freertos-configs
の下にあるファイルは、
ディレクトリと <amazon-freertos>
/vendors/espressif/boards/esp32/aws_demos/config_files/
ディレクトリからコピーされます。次に、最上位レベルの <amazon-freertos>
/demos/include/iCMakeLists.txt
ファイルで、コンパイラがこのディレクトリを最初に検索するように、この行を add_subdirectory(amazon-freertos)
の前に追加します。
include_directories(BEFORE amazon-freertos-configs)
ESP-IDF 用の独自の sdkconfig を提供する
独自の sdkconfig.default
を提供したい場合は、コマンドラインから CMake 変数 IDF_SDKCONFIG_DEFAULTS
を設定することができます。
cmake -S . -B build -DIDF_SDKCONFIG_DEFAULTS=
<path_to_your_sdkconfig_defaults>
-DCMAKE_TOOLCHAIN_FILE=amazon-freertos/tools/cmake/toolchains/xtensa-esp32.cmake -GNinja
独自の sdkconfig.default
ファイルの場所を指定しない場合、Amazon FreeRTOS は
にあるデフォルトのファイルを使用します。
<amazon-freertos>
/vendors/espressif/boards/esp32/aws_demos/sdkconfig.defaults
概要
foo
という名前のコンポーネントを持つプロジェクトがあり、いくつかの設定を上書きする場合、最上位レベルの CMakeLists.txt
ファイルの完全な例を次に示します。
cmake_minimum_required(VERSION 3.13) project(freertos_examples) add_executable(my_app 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 an variable used by ESP-IDF # to collect extra components. get_filename_component( EXTRA_COMPONENT_DIRS "components/
foo
" ABSOLUTE ) list(APPEND IDF_EXTRA_COMPONENT_DIRS ${EXTRA_COMPONENT_DIRS}) # Override the configurations for Amazon FreeRTOS. include_directories(BEFORE amazon-freertos-configs) # Add amazon freertos as a subdirectory. AFR_BOARD tells which board to target. set(AFR_BOARD espressif.esp32_devkitc CACHE INTERNAL "") add_subdirectory(amazon-freertos) # Link against the mqtt library so that we can use it. Dependencies are transitively # linked. target_link_libraries(my_app PRIVATE AFR::mqtt)
トラブルシューティング
-
macOS を使用していてオペレーティングシステムが ESP-WROVER-KIT を認識しない場合は、D2XX ドライバーがインストールされていないことを確認してください。ドライバーをアンインストールするには、FTDI Drivers Installation Guide for macOS X
の手順に従います。 -
ESP-IDF によって提供された (および make monitor を使用して呼び出された) モニタユーティリティを使用して、アドレスをデコードできます。そのため、アプリケーションがクラッシュした場合に意味のあるバックトレースを取得するのに役立ちます。詳細については、Espressif のウェブサイトにある Automatically Decoding Addresses
を参照してください。 -
GDBstub を gdb との通信用に有効にすることができます。特別な JTAG ハードウェアは必要ありません。詳細については、Espressif のウェブサイトにある Launch GDB for GDBStub
を参照してください。 -
JTAG ハードウェアベースのデバッグが必要な場合に OpenOCD ベースの環境をセットアップする方法の詳細については、Espressif ウェブサイト
の「ESP32 向けの JTAG のデバッグ」を参照してください。 -
macOS で
pip
を使用してpyserial
をインストールできない場合、pyserial ウェブサイトからダウンロードします。 -
ボードが継続的にリセットされる場合は、ターミナルで次のコマンドを入力して、フラッシュの消去を試してください。
make erase_flash
-
idf_monitor.py
を実行するときにエラーが表示された場合は、Python 2.7 を使用します。 -
ESP-IDF からの必須ライブラリは Amazon FreeRTOS に含まれています。外部でダウンロードする必要はありません。
IDF_PATH
環境変数が設定されている場合、Amazon FreeRTOS をビルドする前にクリアすることをお勧めします。 -
Window では、プロジェクトのビルドに 3 ~ 4 分かかる場合があります。ビルド時間を減らすために、make コマンドで
-j4
スイッチを使用できます。make flash monitor -j4
-
デバイスが AWS IoT への接続に問題がある場合は、
aws_clientcredential.h
ファイルを開き、ファイル内で設定変数が正しく定義されていることを確認してください。clientcredentialMQTT_BROKER_ENDPOINT[]
は
のようになっているはずです。1234567890123
-ats.iot.us-east-1
.amazonaws.com
Amazon FreeRTOS の開始方法に関する一般的なトラブルシューティングについては、「トラブルシューティングの開始方法」を参照してください。
Espressif ESP32-DevKitC および ESP-WROVER-KIT のデバッグコード
JTAG to USB ケーブルが必要です。USB to MPSSE を使用します (例: FTDI C232HM-DDHSL-0
ESP-DevKitC JTAG セットアップ
FTDI C232HM-DDHSL-0 ケーブルの場合、これらは ESP32 DevkitC への接続です。
C232HM-DDHSL-0 配線色 | ESP32 GPIO ピン | JTAG 通知名 |
---|---|---|
茶色 (ピン 5) |
IO14 |
TMS |
黄色 (ピン 3) |
IO12 |
TDI |
黒 (ピン 10) |
GND |
GND |
オレンジ (ピン 2) |
IO13 |
TCK |
緑 (ピン 4) |
IO15 |
TDO |
ESP-WROVER-KIT JTAG セットアップ
FTDI C232HM-DDHSL-0 ケーブルの場合、これらは ESP32-WROVER-KIT への接続です。
C232HM-DDHSL-0 配線色 | ESP32 GPIO ピン | JTAG 通知名 |
---|---|---|
茶色 (ピン 5) |
IO14 |
TMS |
黄色 (ピン 3) |
IO12 |
TDI |
オレンジ (ピン 2) |
IO13 |
TCK |
緑 (ピン 4) |
IO15 |
TDO |
これらのテーブルは、FTDI C232HM-DDHSL-0 データシート
ESP-WROVER-KIT で JTAG を有効にするには、次に示すように TMS、TDO、TDI、TCK、S_TDI のピンにジャンパーを配置します。
Windows でのデバッグ
Windows でのデバッグをセットアップするには
-
FTDI C232HM-DDHSL-0 の USB 側をコンピュータに接続し、他方の側を Espressif ESP32-DevKitC および ESP-WROVER-KIT のデバッグコード の説明に従って接続します。FTDI C232HM-DDHSL-0 デバイスは、[Universal Serial Bus Controllers (ユニバーサルシリアルバスコントローラー)] の下にある [Device Manager (デバイスマネージャ)] に表示されます。
-
ユニバーサルシリアルバスデバイスのリストの下で、[C232HM-DDHSL-0] デバイスを右クリックし、[プロパティ] を選択します。
注記 このデバイスは、[USB Serial Port (USB シリアルポート)] として表示される場合があります。
プロパティウィンドウで [Details (詳細)] タブを選択して、デバイスのプロパティを表示します。デバイスが表示されない場合は、Windows driver for FTDI C232HM-DDHSL-0
をインストールします。 -
[Details (詳細)] タブで、[Property (プロパティ)] を選択し、[Hardware IDs (ハードウェア ID)] を選択します。[値] フィールドに、次のような内容が表示されます。
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 (ドライバーの置換)] を選択します。
-
-
コマンドプロンプトを開き、
projects/espressif/esp32/make/aws_demos
に移動して以下を実行します。ESP32-WROOM-32 および ESP32-WROVER の場合
openocd.exe -f esp32_devkitj_v1.cfg -f esp-wroom-32.cfg
ESP32-SOLO-1 の場合
openocd.exe -f esp32_devkitj_v1.cfg -f esp-solo-1.cfg
このコマンドプロンプトを開いたままにしておきます。
-
新しいコマンドプロンプトを開き、
msys32
ディレクトリに移動してmingw32.exe
を実行します。mingw32 ターミナルで、projects/espressif/esp32/make/aws_demos
に移動して make flash monitor を実行します。 -
別の mingw32 ターミナルを開き、
projects/espressif/esp32/make/aws_demos
に移動し、ボードでデモの実行が開始されるまで待機します。このときに、xtensa-esp32-elf-gdb -x gdbinit build/aws_demos.elf
を実行します。このプログラムはmain
関数で停止する必要があります。
ESP32 では、最大 2 個のブレークポイントがサポートされています。
macOS でのデバッグ
-
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
-
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 を変更します。 -
ターミナルウィンドウを開き、
projects/espressif/esp32/make/aws_demos
に移動して、以下のコマンドを使用して OpenOCD を実行します。ESP32-WROOM-32 および ESP32-WROVER の場合
openocd -f esp32_devkitj_v1.cfg -f esp-wroom-32.cfg
ESP32-SOLO-1 の場合
openocd -f esp32_devkitj_v1.cfg -f esp-solo-1.cfg
-
新しいターミナルを開き、次のコマンドを使用して FTDI シリアルポートドライバーをロードします。
sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
-
projects/espressif/esp32/make/aws_demos
に移動して、以下のコマンドを実行します。make flash monitor
-
別の新しいターミナルを開き、
projects/espressif/esp32/make/aws_demos
に移動して、次のコマンドを実行します。xtensa-esp32-elf-gdb -x gdbinit build/aws_demos.elf
main()
でこのプログラムを停止する必要があります。
Linux でのデバッグ
-
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 のフラッシュメモリにアップロードするために使用されます。 -
ターミナルウィンドウで
projects/espressif/esp32/make/aws_demos
に移動して、以下のコマンドを使用して OpenOCD を実行します。ESP32-WROOM-32 および ESP32-WROVER の場合
openocd -f esp32_devkitj_v1.cfg -f esp-wroom-32.cfg
ESP32-SOLO-1 の場合
openocd -f esp32_devkitj_v1.cfg -f esp-solo-1.cfg
-
別のターミナルを開き、
projects/espressif/esp32/make/aws_demos
に移動して次のコマンドを実行します。make flash monitor
-
別のターミナルを開き、
projects/espressif/esp32/make/aws_demos
に移動して次のコマンドを実行します。xtensa-esp32-elf-gdb -x gdbinit build/aws_demos.elf
main()
でこのプログラムを停止する必要があります。