[ESP32]Arduino IDE で ESP-IDF の sdkconfig を変更する方法

ESP-IDF

Arduino IDE で ESP-IDF の sdkconfig を変更する方法

はじめに

Aruduino IDE では、ビルド済SDKをしようしているため、ESP-IDFの設定変更はAruduino IDE ではできません。ESP-IDFを取得し、設定変更したあとにビルドしてSDKを作成する必要があります。

Windowsでもビルドする方法があると思いますが、マニュアルにある通りLinux(Ubuntu)上で実施します。ただし、LinuxPC を用意するのが難しい人もいると思いますので、仮想Linuxを構築するとこから始めます。

開発環境

OS : Windows 11 Pro
ESP32:ESP-WROOM-32
統合開発環境 : Arduino IDE 2.1.0
Arduino core for the ESP32:1.0.6
使用ライブラリ:なし

作業内容

仮想Linux(Ubuntu)構築

1番構築が簡単なWindows標準のLinux環境である、「Windows Subsystem for Linux」(WSL)を使用します。

Windows11では、コマンドプロンプトを起動して下記のコマンドを実行するだけです。

wsl --install

Windwos10を使用している場合は、少し手順が違います。
(手元にWindows10がないので省略します。)

[username] と [password] を入力してインストール完了です。

コマンドプロンプトのタブ右側にある新しいタグ作成から「Ubuntu」を選択します。

しばらく待つとUbuntuが起動して操作できるようになります。

Arduino core for the ESP32 ビルド

これからUbuntu側で以降のコマンドを実行していきます。
全ソースファイルをダウンロードしてビルドするため、しばらく時間がかかります。
(筆者の環境で10分~20分程度)

WSLでは、/mnt/ 以下にWindowsファイルシステムをマウントしていますが、Windowsファイルシステム上でビルドを実施しないでください。WSLはWinsowsシステムではファイルアクセスが遅いため、恐ろしく時間がかかります。

ビルド準備

ビルドに必要なパッケージをインストールします。

sudo apt update
sudo apt-get install git wget curl libssl-dev libncurses-dev flex bison gperf python3 python3-pip python3-setuptools python3-serial python3-click python3-cryptography python3-future python3-pyparsing python3-pyelftools cmake ninja-build ccache jq
ソースファイル取得
esp32-arduino-lib-builder

まず、「esp32-arduino-lib-builder」という、ESP-IDF とその他のコンポーネントをビルドする環境を git から入手します。

git clone https://github.com/espressif/esp32-arduino-lib-builder
cd esp32-arduino-lib-builder
git switch release/v3.3

今回は、「Arduino core for the ESP32:1.0.6」の環境を構築しますので、「esp32-arduino-lib-builder」は v3.3 を使用します。

※「Arduino core for the ESP32:2.0.0」以降の環境を構築する場合は手順が異なります。

「esp32-arduino-lib-builder」は、初期状態では ESP-IDF やその他のコンポーネントを最新の状態で取得しようとします。
「Arduino core for the ESP32:1.0.6」の環境を構築するには、各バージョンを合わせる必要があるため、自動的に最新を取得するコードをコメントアウトしておきます。

vim build.sh

 50 # update components from git
 51 #./tools/update-components.sh
 52 #if [ $? -ne 0 ]; then exit 1; fi

「build.sh」の50行目から52行目の箇所です。

これで、自動的に取得しないようになったため、手動で ESP-IDFArduino core for the ESP32 を含むコンポーネントを取得していきます。

ESP-IDF

「Arduino core for the ESP32:1.0.6」に対応した「ESP-IDF v3.3.5」を取得します。

git clone -b v3.3.5 --recursive https://github.com/espressif/esp-idf.git
git -C ./esp-idf/ reset --hard  85c43024c

念のため、配布されている状態と同じコミットの状態にしておきます。

Arduino core for the ESP32

「Arduino core for the ESP32 : 1.0.6」を取得します。

git clone -b 1.0.6 --recursive https://github.com/espressif/arduino-esp32 ./components/arduino
git -C ./components/arduino reset --hard 46d5afb

念のため、配布されている状態と同じコミットの状態にしておきます。

esp32-camera

esp32-camera コンポーネントを取得します。

git clone -b v2.0.0 --recursive https://github.com/espressif/esp32-camera ./components/esp32-camera

配布されているものに含まれる esp32-camera のコミットがわからなかったので、だいたいのバージョンで合わせています。

esp-face

esp32-face コンポーネントを取得します。

git clone -b v1.0.0 --recursive https://github.com/espressif/esp-face.git ./components/esp-face

配布されているものに含まれる esp32-camera のコミットがわからなかったので、だいたいのバージョンで合わせています。

ビルド

環境は用意できましたのでビルドします。

./build.sh

「out」というディレクトリが作成されていれば成功です。

farmsoft@XXXX:~/esp32-arduino-lib-builder$ ls
Makefile   build     components  esp-idf  out        sdkconfig.old  xtensa-esp32-elf
README.md  build.sh  dist        main     sdkconfig  tools
sdkconfig 設定変更

ここからが、sdkconfig の設定変更です。
1度ビルド環境ができれば、次回からはここから作業をすれば大丈夫です。

vim sdkconfig

変更したい設定箇所を修正します。
このバージョンでは、「idf.py menuconfig」は使用できません。

例えば、「CONFIG_APP_ROLLBACK_ENABLE」を有効にする場合は、82行目の設定に「y」を追加します。

 82 CONFIG_APP_ROLLBACK_ENABLE=y

そして、設定を反映させます。

. ./esp-idf/export.sh
./tools/build-bootloaders.sh

すると、変更した設定によっては、その他の関係のある設定をどうするか聞かれる場合がありますので、[N/y/?] で回答します。

Enable app rollback support (APP_ROLLBACK_ENABLE) [Y/n/?] y
  Enable app anti-rollback support (APP_ANTI_ROLLBACK) [N/y/?] (NEW) n

これで、「out」ディレクトリ以下に反映されました。

Arduino IDE へ反映

作成したファイルをWinsowsの Arduino IDE へ反映します。上書きして大丈夫です。
「xxxxxxxx」は、ご自身の環境に合わせて変更してください。

 cp -r ./out/tools/sdk /mnt/c/Users/xxxxxxxx/AppData/Local/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/
 cp -r ./sdkconfig /mnt/c/Users/xxxxxxxx/AppData/Local/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/

「./out/tools/sdk/sdkconfig」は、設定変更後に置き換えられていないため、現在の設定がWindows側でもわかるように、変更後のsdkconfig を Arduino IDE 側にコピーしています。

仮想Linux(Ubuntu)側

/home/xxxxxxxx/esp32-arduino-lib-builder/out/tools/sdk

Windwos側

C:\Users\xxxxxxxx\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\tools\sdk\

これで、終了となります。

おわりに

ESP-IDF の sdkconfig を変更したい場合、Arduino IDE の開発環境はやっかいです。
どうしても Arduino IDE で開発していて、sdkconfig も変更したくなったのですが、あまり情報が出回ってなくて少し苦戦しました。

1度環境を作っておけば、次からは少し楽になりますが、とっつきやすいという理由で Arduino IDE を使用しているのに、複雑な気分です。

コメント

タイトルとURLをコピーしました