0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

再配布可能な esp32 ファームウェアの書き込み環境を作る

0
Last updated at Posted at 2025-12-22

背景

ハードウェアの試験や製品の量産時など、開発環境を持たない方にファームを書き込んでもらう必要があります。
このような時に開発環境を導入してもらうのは、なかなか大変な作業ですし、容量も大きいです。

ここでは開発環境の導入をせずに、ファームを書き込める環境を作っていきます。
またここで作成する環境はファイルをコピーするだけで配布することができます。

環境、使用するツールについて

開発環境について

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

image.png

(2) python 環境を作成する

作業フォルダを作成します。作業フォルダに (1) をコピーし、展開します。
(1) のフォルダ名は python-3.12.1-embed-amd64 と長いため、python へ変更します。

image.png

作業後、zip ファイルを削除します。

(3) pth ファイルの編集

python/python312_.pth をエディタで開き、#import site のコメントを解除します。

image.png

(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. 書き込み方法

  1. PCとターゲットボードを接続する
  2. install.bat を実行する
  3. 書き込みが行われるので完了するまで待機する

4. 配布方法

作成した環境 (作業フォルダ) を zip などに圧縮し、配布します。

5. 新しいファームへ差し替える

既存の書き込み環境から bin フォルダの内容をすべて削除し、2-(2) を実施します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?