5
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?

AtomVM: Elixir 用 main.avm の書き込み位置

Last updated at Posted at 2025-12-15

はじめに

AtomVM 上で Elixir アプリ(main.avm)を動かすとき、パーティションテーブルと書き込みオフセット(flash_offset)を把握しておく必要があります。

それらがよく分からず何回かハマりました。

main.avm の書き込みに成功したあとに、AtomVM が別の場所を読みに行き、結果として何故かアプリが起動しないという状態になります。

同じことで時間を溶かさないためにメモしておきます。

piyopiyo-board-2025-12.png

※ 写真はイメージです

対象環境

  • マイコン
    • ESP32-S3
  • ホスト PC
    • Debian 系 Linux
  • 主なソフトウェア
    • AtomVM 0.7.0-dev(開発版)
    • ESP-IDF v5.5

結論

見るべきポイントは 2 つです。

  • idf.py partition-tablemain.avm の オフセット を確認
  • Elixir 側(mix.exs)の flash_offset を、その オフセット と一致させる

ESP32 側

Elixir 対応イメージをビルドする場合は、
公式に従って sdkconfig.defaults ファイルで partitions-elixir.csv を指定します。

sdkconfig.defaults
+ CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-elixir.csv"

Elixir側

Elixir 側では mix.exsflash_offset を指定する場所があります。

パーティションテーブルを確認する

AtomVM の ESP32 プラットフォームのディレクトリで確認します。

cd ~/Projects/atomvm/AtomVM/src/platforms/esp32
source ~/esp/esp-idf/export.sh

idf.py partition-table

手元の構成(Elixir 用)ではこんな感じになってました。

*******************************************************************************
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs,data,nvs,0x9000,24K,
phy_init,data,phy,0xf000,4K,
factory,app,factory,0x10000,1792K,
boot.avm,data,phy,0x1d0000,512K,
main.avm,data,phy,0x250000,1M,
*******************************************************************************

公式リポジトリにお手本(?)も見つかりました。

オフセットがズレたときの直し方

どこかで手順を間違ったのか
idf.py partition-table の表示で main.avm のオフセットが想定と違う場合がありました。

自分は次の流れで修正することができました。

cd ~/Projects/atomvm/AtomVM/src/platforms/esp32

idf.py fullclean # もしくは rm -rf build
idf.py reconfigure
idf.py partition-table

:tada::tada::tada:

おわりに

AtomVM(Elixir)でアプリを書き込むときは、以下の 2 つを合わせるということを覚えておきましょう。

  • idf.py partition-tablemain.avm のオフセット
  • Elixir 側の オフセット(flash_offset)

🎌 🎌 🎌

5
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
5
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?