背景
ハードウェアの試験や製品の量産時など、開発環境を持たない方にファームを書き込んでもらう必要があります。
このような時に開発環境を導入してもらうのは、なかなか大変な作業ですし、容量も大きいです。
ここでは開発環境の導入をせずに、ファームを書き込める環境を作っていきます。
またここで作成する環境はファイルをコピーするだけで配布することができます。
環境、使用するツールについて
開発環境について
Windows です。ファームウェアの開発環境は esp-idf です。
※ 以前は platform-io を使用した arduino での開発でも使用していました。
使用するツールについて
python の embeddedable package を使用します。embeddable python はファイルのコピーだけで、現在の環境を別のPCへ複製することができます。
書き込みには esptool を使用します。
※ 作成した時期が数年前なのでこれらのバージョンが古いです。以下を参考に、適宜、変更してください。
https://docs.espressif.com/projects/esptool/en/latest/esp32/installation.html
作業工程
- 書き込み環境の作成
- batファイルなどファイルの配置
手順
1. 再配布可能な書き込み環境を作る
(1) python embeddable をダウンロードする
以下から、該当する python version の windows embeddable package をダウンロードします。
(ここでは 3.12.1 を使用しています)
Python Releases for Windows
(2) python 環境を作成する
作業フォルダを作成します。作業フォルダに (1) をコピーし、展開します。
(1) のフォルダ名は python-3.12.1-embed-amd64 と長いため、python へ変更します。
作業後、zip ファイルを削除します。
(3) pth ファイルの編集
python/python312_.pth をエディタで開き、#import site のコメントを解除します。
(4) pip をインストール
以下のスクリプトをファイルに保存し、作業フォルダ直下に配置します。
https://bootstrap.pypa.io/get-pip.py
作業フォルダにて以下を実行します。
$ ./python/python.exe get-pip.py
Collecting pip
Using cached pip-23.3.2-py3-none-any.whl.metadata (3.5 kB)
Collecting setuptools
Using cached setuptools-69.0.3-py3-none-any.whl.metadata (6.3 kB)
Collecting wheel
Using cached wheel-0.42.0-py3-none-any.whl.metadata (2.2 kB)
Using cached pip-23.3.2-py3-none-any.whl (2.1 MB)
Using cached setuptools-69.0.3-py3-none-any.whl (819 kB)
Using cached wheel-0.42.0-py3-none-any.whl (65 kB)
Installing collected packages: wheel, setuptools, pip
WARNING: The script wheel.exe is installed in 'C:\Users\kakiz\Documents\workspace-ympc\python-local-install\deploy\python\Scripts' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The scripts pip.exe, pip3.12.exe and pip3.exe are installed in 'C:\Users\kakiz\Documents\workspace-ympc\python-local-install\deploy\python\Scripts' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-23.3.2 setuptools-69.0.3 wheel-0.42.0
確認: 以下を実行し、pip のヘルプが表示されること。
$ ./python/python.exe -m pip
Commands:
install Install packages.
download Download packages.
uninstall Uninstall packages.
freeze Output installed packages in requirements format.
inspect Inspect the python environment.
list List installed packages.
show Show information about installed packages.
check Verify installed packages have compatible dependencies.
config Manage local and global configuration.
search Search PyPI for packages.
cache Inspect and manage pip's wheel cache.
index Inspect information available from package indexes.
wheel Build wheels from your requirements.
hash Compute hashes of package archives.
completion A helper command used for command completion.
debug Show information useful for debugging.
help Show help for commands.
作業後、get-pip.py を削除します。
(5) esptool をインストールする
作業フォルダにて以下を実行します。(esptool のバージョンは適宜、変更してください)
$ ./python/python.exe -m pip install esptool==4.7
確認: 以下を実行し、esptool のバージョンが出力されること
$ ./python/python.exe -m esptool version
esptool.py v4.7.0
4.7.0
ここまでで再配布可能な esptool の実行環境を作成できました。
2. ファームの書き込み用のファイルを配置する
作業者にコマンドを入力してもらうのは、はばかられますので、bat ファイルを用意してそれを実施してもらいます。
作業フォルダは以下の構成となります。
- install.bat
- bin フォルダ (ビルド成果物を配置する)
- python フォルダ (先で作成した python 環境)
(1) bat ファイルを作成する
作業フォルダにテキストファイルを作成し、名前は install.bat とします。
テキストエディタで install.bat を開き、以下を入力します。
※ esp32s3 の個所は使用するチップに合わせて変更してください
@echo off
cd /d %~dp0
cd .\bin
..\python\python.exe -m esptool --chip esp32s3 write_flash @flash_project_args
補足: esp-idf ではビルド時にファームウェアのバイナリファイルととともに以下のファイルが出力されています。
- flash_project_args
- flash_args.json
flash_project_args, flash_args.json は書き込み時に指定する引数と値が書かれています。書き込み時にこのファイルを引数で渡すことで、その内容が反映されます。
※ https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#flash-arguments
※ flash_project_args は esptool.py で使用し、flash_args.json は idf.py で使用します。
(2) bin フォルダへ成果物を配置する
作業フォルダに bin フォルダを作成します。bin フォルダへプロジェクトのbuildフォルダから以下をコピーします。
- bootloader/
- bootloader.bin だけ残して削除
- partitaion_table/
- partition-table.bin だけ残して削除
- flash_project_arg
- {ファームウェア}.bin
- プロジェクト名が名前になるらしい
- その他に書き込んでいるファイル
- OTA を使用する場合は、ota_data のファイルがあります (flash_project_args で確認できます)
作業フォルダのフォルダ構成は以下になります。
.
│ install.bat
│
├─bin
│ │ {ファームウェア}.bin
│ │ flash_project_args
│ │
│ ├─bootloader
│ │ bootloader.bin
│ │
│ └─partition_table
│ partition-table.bin
│
└─python
3. 書き込み方法
- PCとターゲットボードを接続する
- install.bat を実行する
- 書き込みが行われるので完了するまで待機する
4. 配布方法
作成した環境 (作業フォルダ) を zip などに圧縮し、配布します。
5. 新しいファームへ差し替える
既存の書き込み環境から bin フォルダの内容をすべて削除し、2-(2) を実施します。


