Skip to main content

ネイティブファームウェアをフラッシュする方法

SenseCAP indicatorには2つのMCU、ESP32-S3とRP2040があります。このチュートリアルでは、開発者が始めるための包括的なガイドを提供します。これには、工場出荷時のネイティブファームウェアのフラッシュと、初期出荷デバイスの最新ファームウェアへの更新が含まれます。

ファームウェアの更新は、特に以下の2つのシナリオで適用されます:

  1. 2023年6月以前にOpenAIファームウェアなしの製品を購入し、ファームウェアバージョンが1.0.0の場合、OpenAI機能を含む最新ファームウェアをダウンロードして更新できます。最新ファームウェアはこちらからダウンロードできます。
  2. アプリケーションを開発し、カスタムファームウェアをフラッシュしたい場合は、以下で提供されるチュートリアルに従うことができます。

簡単に言うと、以下の理由でこのチュートリアルが必要です:

  1. ESP32-S3またはRP2040にフラッシュする必要があるファームウェアがある。
  2. コードを変更し、それをコンパイルしてデバイスにフラッシュする必要がある。

このチュートリアルに入りましょう。

準備

始めるために必要なのは、SenseCAP IndicatorとWindows/Mac/Linuxコンピューターだけです。

ネイティブファームウェアの取得

SenseCAP Indicatorのデフォルト出荷ファームウェアは、ESP32-S3とRP2040の両方で完全にオープンソースです。

標準ファームウェアを取得するには2つのオプションがあります:
  • ソースコード: フラッシュする前に、要件に応じてコードを変更するオプションがあります。コンパイルするためにツールチェーン(ESP-IDFArduino)が必要です。
  • ファームウェア: コードの変更やコンパイルを必要とせずに、事前にコンパイルされたバイナリファイルを直接フラッシュします。EsptoolFlash Download Toolsなどのツールを使用します。

ソースコード

ファームウェア

ESP32-S3

ESP-IDF

ESP-IDF(Espressif IoT Development Framework)は、ESP32およびESP8266シリーズのマイクロコントローラー専用のファームウェアとアプリケーションを設計するために、Espressif Systemsが提供するソフトウェア開発フレームワークです。詳細については、ESP-IDFプログラミングガイドを参照してください。

ソースコードをファームウェアにコンパイルすることを選択した場合、コンパイルプロセスを実行するためにESP-IDFが必要です。

注意

ESP-IDFのバージョンはv5.0以上である必要があります。古いバージョンを使用している場合は、最新バージョンに更新する必要があります。

新しいユーザーの場合、このビデオは以下の手順をよりよく理解するのに役立つかもしれません:

ツールチェーンのインストール

公式Espressifドキュメント:Windows用ツールチェーンの標準セットアップ

オプション1:オフラインインストーラーの使用

Windowsユーザーの場合、ESP-IDFオフラインインストーラーを直接ダウンロードするオプションがあります。直接ダウンロードリンクは次のとおりです:🖱️オフラインインストーラーv5.1.1をダウンロード

オプション2:推奨スクリプトの使用

コマンドプロンプトの使用に移動してください

プロジェクトのビルドとフラッシュ

ソースコードをファームウェアにコンパイルする場合は、コンパイルプロセスを実行するためにESP-IDFが必要になります。

プロジェクトをビルド、フラッシュ、モニターするには、以下のコマンドを実行してください:

cd  <your_sdk_path>/examples/indicator_basis/
idf.py -p PORT build flash monitor
tip

PORTを指定しない場合、IDFは利用可能なポートを自動的に選択します。

ここまでで、idf.py -p PORT flashコマンドを入力することで、ファームウェアがESP32-S3に正常にフラッシュされました。

Esptool

ESPtool - GitHubは、Pythonベースのオープンソースユーティリティで、Espressifチップ内のROMブートローダーとプラットフォーム非依存の方法で通信する機能を提供します。

Esptoolは、Pythonスクリプトの一部として使用できます。このガイドでは、Esptoolリリースページで利用可能なパッケージソフトウェアを使用します。お使いのコンピューターのオペレーティングシステムに対応するソフトウェアを選択してください。

フラッシュ用のEsptoolの使用

ESP32-S3マイクロコントローラーにファームウェアをフラッシュするためにEsptoolを効果的に活用する方法を示す2つのスクリプトが提供されています。

注意:

提供されているスクリプトはWindowsオペレーティングシステム向けに調整されていることにご注意ください。異なるオペレーティングシステムを使用している場合は、お使いの環境に合わせてスクリプトを適応させる必要があります。

merge.batスクリプトは、ブートローダー、パーティションテーブル、およびインジケーターベースバイナリを単一のファームウェアファイルに巧妙に統合するため、特に有用です。マージが完了すると、このファームウェアはflash.batスクリプトを使用してESP32-S3にシームレスにフラッシュできます。プロンプトが表示されたら、デバイスに対応するCOMポートを入力すると、フラッシュプロセスが開始されます。完全な操作は以下のように要約できます:

merge.bat
esptool.exe --chip esp32s3 ^
merge_bin -o sensecap_indicator_basis_v1.0.0.bin ^ # Target file name
--flash_mode dio ^
--flash_size 8MB ^
0x0 ../../build/bootloader/bootloader.bin ^
0x8000 ../../build/partition_table/partition-table.bin ^
0x10000 ../../build/indicator_basis.bin

または、ファイルをマージしてからフラッシュするのではなく、個別のバイナリファイルをフラッシュしたい場合は、just_flash.bat スクリプトを直接使用できます:

just_flash.bat
esptool.exe --chip esp32s3 --port COMx --baud 921600 write_flash -z ^
0x0 ../../build/bootloader/bootloader.bin ^
0x8000 ../../build/partition_table/partition-table.bin ^
0x10000 ../../build/indicator_basis.bin

And for a straightforward flashing process using the merged firmware:

flash.bat
esptool.exe --chip esp32s3 --port COMx --baud 921600 write_flash -z 0x0 indicator_basis_v1.0.0.bin

開始(0x0)アドレスに特に注意してください。特にバイナリをマージしない場合は注意が必要です。個別のバイナリファイルについては、個別バイナリファイル用Flash Download Toolsの手順を参照してください。これらのガイドラインに従うことで、エラーのないフラッシュが保証されます。

これらのスクリプトを利用するには、コードをプロジェクトフォルダ内のmerge.batflash.batという名前の別々のテキストファイルに保存してください。この整理方法により、アクセスと使用が簡単になります。

これらのスクリプトを使用することで、ファームウェアの準備とフラッシュの両方の段階を合理化し、よりスムーズで信頼性の高いプロセスに貢献します。

├── indicator_basis
│ ├── CMakeLists.txt
│ ├── build
│ ├── docs
│ ├── main
│ ├── partitions.csv
│ ├── sdkconfig
│ └── .defaults
│ └── flash.bat
│ └── merge.bat
  1. merge.batを使用してバイナリをマージします。
  2. flash.batを使用してマージされたファームウェアをフラッシュします。

ファームウェアのフラッシュ

ファームウェアのフラッシュには、提供されているflash.batスクリプトを使用できます。このスクリプトは、ESP32-S3マイクロコントローラーにファームウェアをフラッシュするプロセスを簡素化するように設計されています。

flash.batコードを表示
@echo off
setlocal
cd /d "%~dp0"
:: Set Chip
set chip=esp32s3
:: Set Baud
set baud=921600
:: List COM ports
echo Available ports and devices:
echo.
for /F "tokens=* delims=" %%A in ('wmic path Win32_PnPEntity get Name ^| findstr /C:"COM" ^| findstr /C:"CH340"') do (
echo %%A
)
:: Prompt for port
:chooseport
echo.
echo Please enter the COM port to use (e.g., COM5):
set /p port=
:: Check if chosen port is valid and contains "CH340"
for /F "tokens=* delims=" %%A in ('wmic path Win32_PnPEntity get Name ^| findstr /C:"%port%" ^| findstr /C:"CH340"') do (
set device=%%A
goto :flash
)
echo Port %port% not found
goto :chooseport
:flash:: Print chosen parameters
echo.
echo You have chosen:
echo Chip: %chip%
echo Port: %port% - %device%
echo Baud: %baud%
@REM echo Press any key to continue to...
@REM pause >nul
:: Run esptool for the single file
esptool.exe --chip %chip% --port %port% --baud %baud% write_flash -z 0x0 indicator_basis_v1.0.0.bin
if ERRORLEVEL 1 (
echo Flashing with the single file failed with error %ERRORLEVEL%.
goto :end
)
:: End of script
:end
endlocal

バイナリのマージ

提供された merge.bat スクリプトを使用して、必要なバイナリファイルを1つのファームウェアファイルにマージできます。このスクリプトはプロセスを簡素化し、フラッシュを成功させるための正しいマージを保証します。これにより、個別ファイルをフラッシュするのではなく、単一のbinファイルをフラッシュできます。

merge.batコードを表示
@echo off
SETLOCAL
SET CurrentDir=%cd%
SET ScriptDir=%~dp0
SET CurrentDir=%CurrentDir:~0,-1%
SET ScriptDir=%ScriptDir:~0,-1%
IF NOT "%CurrentDir%"=="%ScriptDir%" (
cd /d "%ScriptDir%"
)
esptool.exe --chip esp32s3 ^
merge_bin -o indicator_basis_v1.0.0.bin ^
--flash_mode dio ^
--flash_size 8MB ^
0x0 ../../build/bootloader/bootloader.bin ^
0x8000 ../../build/partition_table/partition-table.bin ^
0x10000 ../../build/indicator_basis.bin
ENDLOCAL

Flash Download Tools (Windows のみ)

Flash Download Tools は、ESP8266 および ESP32 シリーズのマイクロコントローラーにファームウェアをプログラムまたはフラッシュするために使用されます。ESP マイクロコントローラーにファームウェアを簡単にフラッシュできるグラフィカルユーザーインターフェース(GUI)を提供します。

プリコンパイル済みファームウェアをフラッシュする手順に従ってください:

ダウンロード: Flash Download Tools (Windows のみ)

  • ステップ 1: .exe ファイルをダブルクリックしてツールのメインインターフェースに入ります。

  • ステップ 2: 以下のオプションを選択します:

オプションパラメータ
Chip Type
ESP32-S3
WorkMode
Develop
LoadMode
UART
  • Step 3: USB type-CケーブルでSenseCAP Indicatorをラップトップに接続します。

  • Step 4: SPIダウンロードタブで「...」をクリックし、先ほどダウンロードしたファームウェアに移動します。

  • Step 5: SPIフラッシュを設定します:

オプションパラメータ
SPI SPEED
40MHz
SPI MODE
DIO
  • ステップ 6: ダウンロードパネルを設定します:
  • COM: デバイスマネージャーでポートを確認し、USB-SERIALが正しいものです。 (ここではCOM4を選択しました
  • Baud: 921600(推奨値)

次にSTARTをクリックして書き込みを開始します。

FINISHと表示されたら、ファームウェアの書き込みが完了しています。

個別バイナリファイル用のFlash Download Tools

前述のガイドでは、バイナリファイル「Default_Factory_Firmware_ESP32-S3.bin」は3つのバイナリを1つにマージしたものです。

しかし、ESP-IDFを使用してファームウェアをビルドしている場合、単一ファイルを直接書き込むとエラーが発生する可能性があります。代わりに、ビルドした3つの個別バイナリファイルを見つけて、以下のように正しいアドレス(独自のアドレスを使用できます)を指定する必要があります:

  • bootloader.bin ----> 0x0
  • partion-table.bin ----> 0x6800
  • termial_demo.bin ----> 0x10000

RP2040

Arduino IDEによる書き込み

RP2040開発ツールはArduinoを活用してコーディング体験を向上させます。

Arduino IDEはArduinoボード用のコーディング無料ソフトウェアです。ユーザーフレンドリーなインターフェースで、コードを簡単に書いてアップロードできます。C++のシンプル版をベースにしており、ライブラリと例を提供するため、初心者に最適です。

ダウンロード:

  • ステップ 1: Arduino IDEをインストール

  • ステップ 2: Raspberry Pi Picoボードを追加

Arduino IDEを開き、Arduino IDE > Preferencesをクリックし、以下のURLをAdditional Boards Manager URLsにコピーします:

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Tools > Board > Board Manager をクリックします。

「indicator」を検索し、Board Manager で「Raspberry Pi Pico/RP2040」をインストールします。

  • ステップ 3: ライブラリを追加
参考ライブラリ

Arduino IDE では、Library Manager で検索できます。例えば Seeed_Arduino_AHT20 を検索してインストールします。

オフラインインストールのプレビューをクリック

オフライン でインストールするには、GitHub から repo zip をダウンロード し、Sketch -> Include Library -> Add .ZIP Library に移動して、ダウンロードしたライブラリを選択します。

  • ステップ 4: 付属の USB Type-C ケーブルでデバイスを PC に接続します。

  • ステップ 5: ボードとポートを選択

「Indicator」を検索し、Seeed INDICATOR RP2040 ボードを選択して、usbmodem シリアルポートを選択します。

  • ステップ 6: サンプルコードファイルを開く

File -> Openを選択し、サンプルコードファイル(.inoファイル)を選択します。

サンプルコードファイルを提供していますので、必要に応じてコードを修正できます。

  • ステップ 7: ファイルを検証してアップロードする

ここで、RP2040でのファームウェアのビルドとフラッシュ(ダウンロード)が完了しました。

.uf2ファイルのフラッシュ

  • ステップ1: デバイスをPCに接続

針を使ってこの内部ボタンを長押しし、付属のUSB Type-CケーブルでデバイスをPCに接続し、接続後にボタンを離します。

  • ステップ2: ファームウェアフラッシュ

接続が成功すると、PCにディスクが表示されます。

.uf2ファイルをディスクにコピーすると、ディスクがログアウトします。

アップグレードが自動的に実行されます。

ESP32とRP2040の通信プロトコル

ESP32とRP2040はシリアルポート通信を使用し、cobs通信プロトコルを使用します。デモで使用されるコマンドのリストは以下の通りです:

コマンド形式は、パケットタイプとパケットパラメータで構成されます。

リソース

SenseCAP Indicator ESP32 SDK

SenseCAP Indicator RP2040 Demo

FAQ

シリアルポートを区別する方法は?

デバイスマネージャーでポートを確認してください

  • "USB Serial Device(COMx)"または"USB 串行设备"はRP2040用です
  • "USB-SERIAL CH340"はESP32用です 簡単に言うと、CH340ポートはESP32用です。

最近の更新

  • 2023-11-17
    • パッチセクションを削除
  • 2023-08-25
    • パッチセクションをより明確にしました
  • 2023-07-25
    • Esptoolを使用したファームウェアフラッシュの内容を追加
  • 2023-05-29
    • パッチセクションを追加

技術サポート

SenseCAP Indicatorでお困りですか?サポートいたします!

Loading Comments...