設定
ハードウェア向けのsdkconfigフラグメントと、VMごとのMRuby::CrossBuild設定ファイル。
ビルド設定には2つの層があります。ESP-IDF自体のハードウェア設定と、
PicoRuby/FemtoRuby自体のクロスコンパイル設定(build_config/)です。
ハードウェア設定(SDKCONFIG_DEFAULTS)
一部のボードでは、ESP-IDFの追加設定が必要です。各オプションのフラグメントファイルは
sdkconfigs/以下にあり、SDKCONFIG_DEFAULTS環境変数で必要な分だけセミコロン区切りで
組み合わせられます。
外部USB-UARTチップを持たないボード(USBコンソール)の場合:
$ export SDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfigs/usb_console"
USBコンソール+SPIRAMの場合:
$ export SDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfigs/usb_console;sdkconfigs/spiram"
これはターゲットのセットアップを実行する前に設定してください。
ESP-IDFがプロジェクトを構成するときにしか読み込まれません。後から変更した場合は、
ターゲットのセットアップ(例: rake setup_esp32)をやり直して強制的に再構成してください。
Dockerを使う場合は、docker:*タスクはシェル環境からこれを読み込みません。代わりに
プロジェクトルートの(gitignore済みの).envファイルに記述してください
(環境構築を参照)。
PicoRuby/FemtoRubyのビルド設定(build_config/)
components/picoruby-esp32/build_config/には、アーキテクチャ×VMの組み合わせごとに
4つのMRuby::CrossBuild設定ファイルがあります。
build_config/
├── xtensa-esp-picoruby.rb # ESP32, ESP32-S3 · PicoRuby (mruby)
├── xtensa-esp-femtoruby.rb # ESP32, ESP32-S3 · FemtoRuby (mruby/c)
├── riscv-esp-picoruby.rb # ESP32-C3/C6/H2/P4 · PicoRuby (mruby)
└── riscv-esp-femtoruby.rb # ESP32-C3/C6/H2/P4 · FemtoRuby (mruby/c)
components/picoruby-esp32/CMakeLists.txtが、PICORB_VM(rake picoruby:build /
rake femtoruby:buildで設定されます。ビルドを参照)と
対象のアーキテクチャ(CONFIG_IDF_TARGET)から、適切なファイルを自動的に選択します。
各ファイルはクロスツールチェーン(xtensa-*-elf-gccまたはriscv32-esp-elf-gcc)、
プリプロセッサ定義(MRB_*/MRBC_*系のチューニングフラグ、および
USE_WIFI環境変数が設定されている場合はそれも)、そして——ビルドをカスタマイズする上で
最も関係が深い——gemの一覧を設定します。
conf.gembox 'minimum'
conf.gembox 'core'
conf.gem core: 'picoruby-shell'
conf.gem core: 'picoruby-gpio'
# ...
mrbgemの追加・削除はここで行います。 自分のgemを組み込みたい場合は、ここに
conf.gem github: 'yourname/your-mrbgem'のような行を追加してから
(デバッグページのmrdebugの実例も参照)、再ビルドしてください。
もう2つのビルド時環境変数、
HEAP_SIZEとPICORB_TASK_STACK_SIZEは、 これらのRubyクロスビルド設定とは別の、周辺のC glueコードのビルドであるcomponents/picoruby-esp32/CMakeLists.txt側で読み込まれます。 詳細はメモリをチューニングするを参照してください。
このページの内容