Amazon FreeRTOS
ユーザーガイド

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

ESP32-DevKitC および ESP-WROVER KIT は、両方とも Amazon FreeRTOS でサポートされています。お客様の持っている開発モジュールをチェックするには、ESP32 Modules and Boards を参照してください。

注記

現在、ESP32-WROVER-KIT および ESP DevKitC 用の Amazon FreeRTOS ポートは、以下をサポートしていません。

  • Lightweight IP。

  • 対称型マルチプロセッシング (SMP)。

Espressif ハードウェアのセットアップ

ESP 32-DevKitC 開発ボードについては、Getting Started with the ESP32-DevKitC development board を参照してください。

ESP-WROVER-KIT 開発ボードについては、Getting Started with the ESP-WROVER-KIT development board を参照してください。

環境をセットアップする

シリアル接続の確立

ESP32-DevKitC とのシリアル接続を確立するには、CP210x USB to UART Bridge VCP ドライバをインストールする必要があります。Windows 10 を実行している場合は、CP210x USB to UART Bridge ドライバの v6.7.5 をインストールします。以前のバージョンの Windows を実行している場合は、ダウンロードのリストに示されているバージョンをインストールします。

ESP32-WROVER-KIT とのシリアル接続を確立するには、いくつかの FTDI 仮想 COM ポートドライバをインストールする必要があります。詳細については、Establishing a Serial Connection with ESP32 を参照してください。

ホスト OS に基づいて設定したシリアルポートを書き留めます。ビルドプロセス中に必要になります。

ツールチェーンの設定

以下のリンクの実行時には、Espressif から ESP-IDF ライブラリをインストールしないでください。すでに Amazon FreeRTOS にはこのライブラリが含まれています。さらに、IDF_PATH 環境変数が設定されていないことを確認します。

Amazon FreeRTOS をダウンロードして設定する

環境をセットアップすると、Amazon FreeRTOS をダウンロードできるようになります。

Amazon FreeRTOS のダウンロード

GitHub から Amazon FreeRTOS リポジトリを複製します。

注記

The maximum length of a file path on Microsoft Windows is 260 characters. The longest path in the Amazon FreeRTOS download is 122 characters. To accommodate the files in the Amazon FreeRTOS projects, make sure that the path to the AmazonFreeRTOS directory is fewer than 98 characters long. For example, C:\Users\Username\Dev\AmazonFreeRTOS works, but C:\Users\Username\Documents\Development\Projects\AmazonFreeRTOS causes build failures.

In this tutorial, the path to the AmazonFreeRTOS directory is referred to as BASE_FOLDER.

プロジェクトの設定

  1. macOS または Linux を実行している場合、ターミナルプロンプトを開きます。Windows を実行している場合は、mingw32.exe を開きます。

  2. Python 2.7.10 以降をインストールします。

  3. Windows を実行している場合は、easy_install awscli を使用して mingw32 環境に AWS CLI をインストールします。

    macOS または Linux を実行している場合は、システムに AWS CLI がインストールされていることを確認します。詳細については、「AWS コマンドラインインターフェイスのインストール」を参照してください。

  4. aws configure を実行して AWS CLI を設定します。詳細については、「AWS CLI の設定」を参照してください。

  5. boto3 Python モジュールをインストールするには、次のコマンドを使用します。

    • Windows の mingw32 環境では、easy_install boto3 を使用します。

    • macOS や Linux では、pip install boto3 を使用します。

Amazon FreeRTOS には、Espressif ボードのセットアップを容易にするスクリプトが含まれています。Espressif のスクリプトを設定するには、<BASE_FOLDER>/tools/aws_config_quick_start/configure.json を開いて次の属性を設定します。

afr_source_dir

Amazon FreeRTOS の完全なパスをコンピュータにダウンロードします。

thing_name

ボードを表す IoT モノの名前。

wifi_ssid

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

wifi_password

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

wifi_security

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

有効なセキュリティタイプは以下の通りです。

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

  • eWiFiSecurityWEP (WEP セキュリティ)

  • eWiFiSecurityWPA (WPA セキュリティ)

  • eWiFiSecurityWPA2 (WPA2 セキュリティ)

設定スクリプトを実行するには

  1. macOS または Linux を実行している場合、ターミナルプロンプトを開きます。Windows を実行している場合は、mingw32.exe を開きます。

  2. <BASE_FOLDER>/tools/aws_config_quick_start ディレクトリに移動して、次のコマンドを実行してください。

    python SetupAWS.py setup

このスクリプトは、IoT モノ、証明書、およびポリシーを作成します。これにより、IoT ポリシーが証明書に、証明書が IoT モノにアタッチされます。また、aws_clientcredential.h ファイルに AWS IoT エンドポイント、Wi-Fi SSID、認証情報を入力します。最後に、証明書とプライベートキーをフォーマットして aws_clientcredential.h ヘッダーファイルに書き込みます。スクリプトの詳細については、<BASE_FOLDER>/tools/aws_config_quick_start ディレクトリにある README.md を参照してください。

Amazon FreeRTOS サンプルをビルドおよび実行する

デモアプリケーションをボードにフラッシュするには

  1. コンピュータにボードを接続します。

  2. macOS または Linux でターミナルを開きます。Windows では、mingw32.exe (mysys ツールチェーンからダウンロードされたもの) を開きます。

  3. <BASE_FOLDER>/demos/espressif/esp32_devkitc_esp_wrover_kit/make に移動して、以下のコマンドを入力します。

    make menuconfig

    Espressif IoT 開発設定メニューで、[Serial flasher config (シリアルフラッシャー設定)]、[Default serial port (デフォルトのシリアルポート)] の順に移動し、シリアルポートを設定します。

    Windows では、シリアルポートに COM1 のような名前があります。macOS では、/dev/cu で始まります。Linux では、/dev/tty で始まります。

    ここで設定したシリアルポートは、ボードにデモアプリケーションを記述するために使用されます。

    ハードウェアに応じて、最大 921600 までデフォルトのボーレートを増やすことができます。これにより、ボードをフラッシュさせるのに必要な時間を短縮できます。ボーレートを増やすには、[Serial flash config (シリアルフラッシュの設定)] を選択し、[Default baud rate (デフォルトボーレート)] を選択します。

    選択を確定するには、ENTER を選択します。設定を保存するには、[Save (保存)]、[Exit (終了)] の順に選択します。

ファームウェア (ブートローダーとパーティションテーブルを含む) をビルドしてフラッシュし、シリアルコンソール出力をモニタリングするには、コマンドプロンプトを開きます。<BASE_FOLDER>\demos\espressif\esp32_devkitc_esp_wrover_kit/make に移動して、以下のコマンドを実行します。

make flash monitor

コンパイル出力の終了時には、次のようなテキストが表示されます。

I (31) boot: ESP-IDF v3.1-dev-322-gf307f41-dirty 2nd stage bootloader I (31) boot: compile time 11:30:50 I (34) boot: Enabling RNG early entropy source... I (37) boot: SPI Speed : 40MHz I (41) boot: SPI Mode : DIO I (45) boot: SPI Flash Size : 4MB I (49) boot: Partition Table: I (53) boot: ## Label Usage Type ST Offset Length I (60) boot: 0 nvs WiFi data 01 02 00009000 00006000 I (68) boot: 1 phy_init RF data 01 01 0000f000 00001000 I (75) boot: 2 factory factory app 00 00 00010000 00100000 I (82) boot: 3 storage Unknown data 01 82 00110000 00010000 I (90) boot: End of partition table I (94) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x12710 ( 75536) map I (129) esp_image: segment 1: paddr=0x00022738 vaddr=0x3ffb0000 size=0x0240c ( 9228) load I (133) esp_image: segment 2: paddr=0x00024b4c vaddr=0x40080000 size=0x00400 ( 1024) load 0x40080000: _iram_start at BASE_FOLDER/AmazonFreeRTOS-Espressif/lib/FreeRTOS/portable/GCC/Xtensa_ESP32/xtensa_vectors.S:1685 I (136) esp_image: segment 3: paddr=0x00024f54 vaddr=0x40080400 size=0x0b0bc ( 45244) load I (164) esp_image: segment 4: paddr=0x00030018 vaddr=0x400d0018 size=0x6d454 (447572) map 0x400d0018: _stext at ??:? I (319) esp_image: segment 5: paddr=0x0009d474 vaddr=0x4008b4bc size=0x02d44 ( 11588) load 0x4008b4bc: xStreamBufferSend at BASE_FOLDER/AmazonFreeRTOS-Espressif/lib/FreeRTOS/stream_buffer.c:636 I (324) esp_image: segment 6: paddr=0x000a01c0 vaddr=0x400c0000 size=0x00000 ( 0) load I (334) boot: Loaded app from partition at offset 0x10000 I (334) boot: Disabling RNG early entropy source... I (338) cpu_start: Pro cpu up. I (341) cpu_start: Single core mode I (346) heap_init: Initializing. RAM available for dynamic allocation: I (353) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM I (359) heap_init: At 3FFC0420 len 0001FBE0 (126 KiB): DRAM I (365) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM I (371) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM I (378) heap_init: At 4008E200 len 00011E00 (71 KiB): IRAM I (384) cpu_start: Pro cpu start user code I (66) cpu_start: Starting scheduler on PRO CPU. I (96) wifi: wifi firmware version: f79168c I (96) wifi: config NVS flash: enabled I (96) wifi: config nano formating: disabled I (106) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE I (106) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE I (136) wifi: Init dynamic tx buffer num: 32 I (136) wifi: Init data frame dynamic rx buffer num: 32 I (136) wifi: Init management frame dynamic rx buffer num: 32 I (136) wifi: wifi driver task: 3ffc5ec4, prio:23, stack:4096 I (146) wifi: Init static rx buffer num: 10 I (146) wifi: Init dynamic rx buffer num: 32 I (156) wifi: wifi power manager task: 0x3ffcc248 prio: 21 stack: 2560 0 7 [Tmr Svc] WiFi module initialized. Connecting to AP Guest... W (166) phy_init: failed to load RF calibration data (0x1102), falling back to full calibration I (396) phy: phy_version: 383.0, 79a622c, Jan 30 2018, 15:38:06, 0, 2 I (406) wifi: mode : sta (30:ae:a4:4b:3d:64) I (406) WIFI: SYSTEM_EVENT_STA_START I (526) wifi: n:1 0, o:1 0, ap:255 255, sta:1 0, prof:1 I (526) wifi: state: init -> auth (b0) I (536) wifi: state: auth -> assoc (0) I (536) wifi: state: assoc -> run (10) I (536) wifi: connected with Guest, channel 1 I (536) WIFI: SYSTEM_EVENT_STA_CONNECTED I (3536) wifi: pm start, type:0 1 826 [IP-task] vDHCPProcess: offer c0a8520bip I (8356) event: sta ip: 192.168.82.11, mask: 255.255.224.0, gw: 192.168.64.1 I (8356) WIFI: SYSTEM_EVENT_STA_GOT_IP 2 827 [IP-task] vDHCPProcess: offer c0a8520bip 3 828 [Tmr Svc] WiFi Connected to AP. Creating tasks which use network... 4 828 [Tmr Svc] Creating MQTT Echo Task... 5 829 [MQTTEcho] MQTT echo attempting to connect to a14o5vz6c0ikzv.iot.us-west-2.amazonaws.com. 6 829 [MQTTEcho] Sending command to MQTT task. 7 830 [MQTT] Received message 10000 from queue. 8 2030 [IP-task] Socket sending wakeup to MQTT task. I (20416) PKCS11: Initializing SPIFFS W (20416) SPIFFS: mount failed, -10025. formatting... I (20956) PKCS11: Partition size: total: 52961, used: 0 9 2596 [MQTT] Received message 0 from queue. 10 2601 [IP-task] Socket sending wakeup to MQTT task. 11 2601 [MQTT] Received message 0 from queue. 12 2607 [IP-task] Socket sending wakeup to MQTT task. 13 2607 [MQTT] Received message 0 from queue. 14 2607 [MQTT] MQTT Connect was accepted. Connection established. 15 2607 [MQTT] Notifying task. 16 2608 [MQTTEcho] Command sent to MQTT task passed. 17 2608 [MQTTEcho] MQTT echo connected. 18 2608 [MQTTEcho] MQTT echo test echoing task created. 19 2608 [MQTTEcho] Sending command to MQTT task. 20 2609 [MQTT] Received message 20000 from queue. 21 2610 [IP-task] Socket sending wakeup to MQTT task. 22 2611 [MQTT] Received message 0 from queue. 23 2612 [IP-task] Socket sending wakeup to MQTT task. 24 2612 [MQTT] Received message 0 from queue. 25 2612 [MQTT] MQTT Subscribe was accepted. Subscribed. 26 2612 [MQTT] Notifying task. 27 2613 [MQTTEcho] Command sent to MQTT task passed. 28 2613 [MQTTEcho] MQTT Echo demo subscribed to freertos/demos/echo 29 2613 [MQTTEcho] Sending command to MQTT task. 30 2614 [MQTT] Received message 30000 from queue. 31 2619 [IP-task] Socket sending wakeup to MQTT task. 32 2619 [MQTT] Received message 0 from queue. 33 2620 [IP-task] Socket sending wakeup to MQTT task. 34 2620 [MQTT] Received message 0 from queue. 35 2620 [MQTT] MQTT Publish was successful. 36 2620 [MQTT] Notifying task. 37 2620 [MQTTEcho] Command sent to MQTT task passed. 38 2620 [MQTTEcho] Echo successfully published 'Hello World 0' 39 2624 [IP-task] Socket sending wakeup to MQTT task. 40 2624 [MQTT] Received message 0 from queue. 41 2624 [Echoing] Sending command to MQTT task. 42 2624 [MQTT] Received message 40000 from queue. 43 2625 [IP-task] Socket sending wakeup to MQTT task. 44 2625 [MQTT] Received message 0 from queue. 45 2626 [IP-task] Socket sending wakeup to MQTT task. 46 2626 [MQTT] Received message 0 from queue. 47 2628 [IP-task] Socket sending wakeup to MQTT task. 48 2628 [MQTT] Received message 0 from queue. 49 2628 [MQTT] MQTT Publish was successful. 50 2628 [MQTT] Notifying task. 51 2628 [Echoing] Command sent to MQTT task passed. 52 2630 [Echoing] Message returned with ACK: 'Hello World 0 ACK' *** Similar output deleted for brevity *** 317 7692 [IP-task] Socket sending wakeup to MQTT task. 318 7692 [MQTT] Received message 0 from queue. 319 7698 [IP-task] Socket sending wakeup to MQTT task. 320 7698 [MQTT] Received message 0 from queue. 321 8162 [MQTTEcho] Sending command to MQTT task. 322 8162 [MQTT] Received message 190000 from queue. 323 8163 [IP-task] Socket sending wakeup to MQTT task. 324 8163 [MQTT] Received message 0 from queue. 325 8164 [IP-task] Socket sending wakeup to MQTT task. 326 8164 [MQTT] Received message 0 from queue. 327 8164 [MQTT] MQTT Publish was successful. 328 8164 [MQTT] Notifying task. 329 8165 [MQTTEcho] Command sent to MQTT task passed. 330 8165 [MQTTEcho] Echo successfully published 'Hello World 11' 331 8167 [IP-task] Socket sending wakeup to MQTT task. 332 8167 [MQTT] Received message 0 from queue. 333 8168 [Echoing] Sending command to MQTT task. 334 8169 [MQTT] Received message 1a0000 from queue. 335 8170 [IP-task] Socket sending wakeup to MQTT task. 336 8170 [MQTT] Received message 0 from queue. 337 8171 [IP-task] Socket sending wakeup to MQTT task. 338 8171 [MQTT] Received message 0 from queue. 339 8171 [MQTT] MQTT Publish was successful. 340 8171 [MQTT] Notifying task. 341 8172 [Echoing] Command sent to MQTT task passed. 342 8173 [Echoing] Message returned with ACK: 'Hello World 11 ACK' 343 8174 [IP-task] Socket sending wakeup to MQTT task. 344 8174 [MQTT] Received message 0 from queue. 345 8179 [IP-task] Socket sending wakeup to MQTT task. 346 8179 [MQTT] Received message 0 from queue. 347 8665 [MQTTEcho] Sending command to MQTT task. 348 8665 [MQTT] Received message 1b0000 from queue. 349 8665 [MQTT] About to close socket. 350 8666 [IP-task] Socket sending wakeup to MQTT task. 351 8667 [MQTT] Socket closed. 352 8667 [MQTT] Stack high watermark for MQTT task: 2792 353 8667 [MQTT] Notifying task. 354 8667 [MQTT] Received message 0 from queue. 355 8668 [MQTTEcho] Command sent to MQTT task passed. 356 8668 [MQTTEcho] MQTT echo demo finished.

Bluetooth Low-Energy デモを実行する

Amazon FreeRTOS の Bluetooth Low Energy サポートは、パブリックベータリリースに含まれています。BLE デモは変更されることがあります。

Amazon FreeRTOS は、Bluetooth Low Energy (BLE) 接続をサポートしています。BLE を備えた Amazon FreeRTOS は、GitHub からダウンロードできます。

ボードで MQTT over BLE デモを実行する方法については、MQTT over BLE demo application (MQTT over BLE デモアプリケーション) を参照してください。

ボードで Wi-Fi プロビジョニングデモを実行する方法については、「Wi-Fi Provisioning demo application (Wi-Fi プロビジョニングデモアプリケーション)」を参照してください。

トラブルシューティング

  • Mac を使用していて ESP-WROVER-KIT が認識されない場合、D2XX ドライバがインストールされていないことを確認してください。ドライバをアンインストールするには、FTDI Drivers Installation Guide for macOS X の手順に従います。

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

  • GDBstub を gdb との通信用に有効にすることができます。特別な JTAG ハードウェアは必要ありません。詳細については、Launch GDB for GDBStub を参照してください。

  • JTAG ハードウェアベースのデバッグが必要な場合に OpenOCD ベースの環境をセットアップする方法の詳細については、JTAG Debugging を選択します。

  • 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

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 datasheet から開発されました。詳細については、データシートの C232HM MPSSE Cable Connection and Mechanical Details を参照してください。

ESP-WROVER-KIT で JTAG を有効にするには、次に示すように TMS、TDO、TDI、TCK、S_TDI のピンにジャンパーを配置します。

Windows でのデバッグ

Windows でのデバッグをセットアップするには

  1. FTDI C232HM-DDHSL-0 の USB 側をコンピュータに接続し、他方の側を Espressif ESP32-DevKitC および ESP-WROVER-KIT のデバッグコード の説明に従って接続します。FTDI C232HM-DDHSL-0 デバイスは、[Universal Serial Bus Controllers (ユニバーサルシリアルバスコントローラー)] の下にある [Device Manager (デバイスマネージャ)] に表示されます。

  2. USB コントローラーのリストから C232HM-DDHSL-0 デバイス (製造元は FTDI) を右クリックし、[Properties (プロパティ)] を選択します。プロパティウィンドウで [Details (詳細)] タブを選択して、デバイスのプロパティを表示します。デバイスが表示されない場合は、Windows driver for FTDI C232HM-DDHSL-0 をインストールします。

  3. [Device Manager (デバイスマネージャ)] に表示されるベンダー ID と製品 ID が demos\espressif\esp32_devkitc_esp_wrover_kit\esp32_devkitj_v1.cfg の ID と一致することを確認します。ID は ftdi_vid_pid で始まる行で指定されており、その後に ベンダー ID と製品 ID が続きます。

    ftdi_vid_pid 0x0403 0x6014
  4. OpenOCD for Windows をダウンロードします。

  5. ファイルを C:\ に解凍して、システムパスに C:\openocd-esp32\bin を追加します。

  6. OpenOCD には libusb が必要です。これは、Windows にデフォルトではインストールされません。以下の方法でインストールします。

    1. zadig.exe をダウンロードします。

    2. zadig.exe を実行します。[Options (オプション)] メニューから、[List All Devices (すべてのデバイスをリストする)] を選択します。

    3. ドロップダウンメニューから [C232HM-DDHSL-0] を選択します。

    4. ターゲットドライバボックスの緑の矢印の右側で [WinUSB] を選択します。

    5. ターゲットドライバボックスの下のドロップダウンボックスから、矢印を選択して [Install Driver (ドライバのインストール)] を選択します。[Replace Driver (ドライバの置換)] を選択します。

  7. コマンドプロンプトを開き、<BASE_FOLDER>\demos\espressif\esp32_devkitc_esp_wrover_kit\make に移動して以下を実行します。

    openocd.exe -f esp32_devkitj_v1.cfg -f esp-wroom-32.cfg

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

  8. 新しいコマンドプロンプトを開き、msys32 ディレクトリに移動して mingw32.exe を実行します。mingw32 ターミナルで、<BASE_FOLDER>\demos\espressif\esp32_devkitc_esp_wrover_kit\make に移動して make flash monitor を実行します。

  9. 別の mingw32 ターミナルを開き、<BASE_FOLDER>\demos\espressif\esp32_devkitc_esp_wrover_kit\make に移動して xtensa-esp32-elf-gdb -x gdbinit build/aws_demos.elf を実行します。このプログラムは main 関数で停止する必要があります。

注記

ESP32 では、最大 2 個のブレークポイントがサポートされています。

macOS でのデバッグ

  1. FTDI driver for macOS をダウンロードします。

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

  3. ダウンロードした .tar ファイルを抽出して、.bash_profile のパスを <OCD_INSTALL_DIR>/openocd-esp32/bin に設定します。

  4. 次のコマンドを使用して macOS に libusb をインストールします。

    brew install libusb
  5. 次のコマンドを使用してシリアルポートドライバをアンロードします。

    sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
  6. macOS 10.9 以降のバージョンを実行している場合は、次のコマンドを使用して Apple の FTDI ドライバをアンロードします。

    sudo kextunload -b com.apple.driver.AppleUSBFTDI
  7. 次のコマンドを使用して FTDI ケーブルの製品 ID とベンダー ID を取得します。アタッチされた USB デバイスが表示されます。

    system_profiler SPUSBDataType

    system_profiler からの出力は次のようになります。

    C232HM-DDHSL-0: Product ID: 0x6014 Vendor ID: 0x0403 (Future Technology Devices International Limited)
  8. ベンダーおよび製品 ID が demos/espressif/esp32_devkitc_esp_wrover_kit/esp32_devkitj_v1.cfg の ID と同じであることを確認します。ID は ftdi_vid_pid で始まる行で指定されており、その後に ベンダー ID と製品 ID が続きます。

    ftdi_vid_pid 0x0403 0x6014
  9. ターミナルウィンドウを開き、<BASE_FOLDER>/demos/espressif/esp32_devkitc_esp_wrover_kit/make に移動して、以下のコマンドを使用して OpenOCD を実行します。

    openocd -f esp32_devkitj_v1.cfg -f esp-wroom-32.cfg
  10. 新しいターミナルを開き、次のコマンドを使用して FTDI シリアルポートドライバをロードします。

    sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
  11. <BASE_FOLDER>>/demos/espressif/esp32_devkitc_esp_wrover_kit/make に移動して、以下のコマンドを実行します。

    make flash monitor
  12. 別の新しいターミナルを開き、<BASE_FOLDER>/demos/espressif/esp32_devkitc_esp_wrover_kit/make に移動して、次のコマンドを実行します。

    xtensa-esp32-elf-gdb -x gdbinit build/aws_demos.elf

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

Linux でのデバッグ

  1. OpenOCD をダウンロードします。tarball を抽出し、readme ファイルのインストール手順に従ってください。

  2. 次のコマンドを使用して Linux に libusb をインストールします。

    sudo apt-get install libusb-1.0
  3. ターミナルを開いて ls -l /dev/ttyUSB* と入力し、コンピュータに接続されているすべての USB デバイスを一覧表示します。これにより、ボードの USB ポートがオペレーティングシステムによって認識されているかどうかを確認できます。次のような出力が表示されます。

    $ls -l /dev/ttyUSB* crw-rw---- 1 root dialout 188, 0 Jul 10 19:04 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 Jul 10 19:04 /dev/ttyUSB1
  4. サインオフしてからサインインし、ボードの電源を入れ直して変更を有効にします。ターミナルプロンプトで、USB デバイスを一覧表示します。グループ所有者が dialout から plugdev に変化していることを確認します。

    $ls -l /dev/ttyUSB* crw-rw---- 1 root plugdev 188, 0 Jul 10 19:04 /dev/ttyUSB0 crw-rw---- 1 root plugdev 188, 1 Jul 10 19:04 /dev/ttyUSB1

    数の少ない番号を持つ /dev/ttyUSBn インターフェイスは、JTAG 通信に使用されます。もう 1 つのインターフェイスは ESP32 のシリアルポート (UART) にルーティングされ、コードを ESP32 のフラッシュメモリにアップロードするために使用されます。

  5. ターミナルウィンドウで <BASE_FOLDER>/demos/espressif/ esp32_devkitc_esp_wrover_kit/make に移動して、以下のコマンドを使用して OpenOCD を実行します。

    openocd -f esp32_devkitj_v1.cfg -f esp-wroom-32.cfg
  6. 別のターミナルを開き、<BASE_FOLDER>/demos/espressif/ esp32_devkitc_esp_wrover_kit/make に移動して次のコマンドを実行します。

    make flash monitor
  7. 別のターミナルを開き、<BASE_FOLDER>/demos/espressif/ esp32_devkitc_esp_wrover_kit/make に移動して次のコマンドを実行します。

    xtensa-esp32-elf-gdb -x gdbinit build/aws_demos.elf

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