6
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: 最新のソースコードからビルド (2025年12月)

Last updated at Posted at 2025-12-08

はじめに

AtomVM を最新のソースコードからビルドする手順をまとめておきたいと思います。

piyopiyo-board-2025-12.png

※ 写真はイメージです

対象環境

今回試したときの環境は次のとおりです。

  • マイコン
    • Seeed Studio XIAO ESP32-S3(オンボード LED は GPIO 21)
  • ホスト PC
    • Debian 系 Linux(LMDE7)
  • 主なソフトウェア
    • Elixir 1.17(Erlang/OTP 27)
    • AtomVM 0.7.0-dev+git.6ef74599
    • Python 3.14.1
    • ESP-IDF v5.5
    • esptool 5.1.0
    • picocom 3.1

手順の全体像

やることをざっくり並べると、以下のとおりです。

  1. AtomVM・ESP-IDF・esptool の準備
  2. Elixir コアライブラリ生成
  3. ESP32-S3 向け AtomVM をビルド
  4. ESP32-S3 に AtomVM を書き込み

順に見ていきます。

AtomVM と ESP-IDF の準備

ホスト環境に必要なツールをインストール

まずは、AtomVM のビルドや ESP32-S3 への書き込みに必要なツールを揃えます。

# Elixir と Python は任意の方法でインストールされている前提
elixir --version
python3 --version

sudo apt install git wget flex bison gperf cmake ninja-build \
  ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

AtomVMで使えるツールのバージョンについては以下の資料で確認してください。

ESP-IDF を使うために必要なツールについては以下の資料を確認してください。

AtomVM のソースコードを取得

# AtomVMのソースコードの保存場所は任意
mkdir -p $HOME/Projects/atomvm
cd $HOME/Projects/atomvm

git clone https://github.com/atomvm/AtomVM

以降は、$HOME/Projects/atomvm/AtomVM をAtomVM のソースコードのルートディレクトリとします。

ESP-IDF(ESP32-S3 用)をインストール

執筆時点では AtomVM の公式サポートは v5.4 までなのですが、手元では v5.5 で動作を確認。

# esp-idfのソースコードの保存場所は任意
mkdir -p $HOME/esp
cd $HOME/esp

git clone --branch v5.5 --recursive https://github.com/espressif/esp-idf.git
cd esp-idf

# esp32s3 向けツール群をインストール
./install.sh esp32s3

idf.py --version

詳しくは公式ドキュメントを参照してください。

esptool のインストール

pip install esptool
esptool version

詳しくは公式ドキュメントを参照してください。

Elixir コアライブラリ生成

ESP32 用の完全なイメージを作るためには、先にホスト PC 上で Generic UNIX 版 AtomVM をビルドしておく必要があります。

cd "$HOME/Projects/atomvm/AtomVM"

mkdir -p build
cd build

cmake ..
make -j"$(nproc)"

# 任意だが、atomvm コマンドをインストールしておくと便利らしい
sudo make install
which atomvm

ビルド完了後、次のようなファイルが生成されているはずです。

ls build/libs/esp32boot
# esp32boot.avm
# elixir_esp32boot.avm
# ...

詳しくは公式ドキュメントを参照してください。

ESP32-S3 向け AtomVM をビルド

ESP32 プラットフォーム用ディレクトリに移動

cd $HOME/Projects/atomvm/AtomVM/src/platforms/esp32

ESP-IDF 環境を読み込む

source $HOME/esp/esp-idf/export.sh

Elixir 用パーティションテーブルを指定

Elixir 用のパーティションレイアウトを使うため、sdkconfig.defaultspartitions-elixir.csv を指定します。

CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-elixir.csv"

これで、boot.avm / main.avm などが Elixir 向けの構成になります。

ESP32-S3 向けにビルド

ESP-IDF は機種ごとに target 名が異なります。
AtomVM のドキュメントでは esp32 を例にしていますが、ESP32-S3 を使う場合は esp32s3 を指定してください。

idf.py set-target esp32s3
idf.py reconfigure
idf.py build

ここまでで

  • ESP32-S3 向け AtomVM 本体
  • Elixir / Erlang コアライブラリを含むビルド成果物
  • 各種補助スクリプト(mkimage.sh / flashimage.sh など)

がそろった状態になります。

Release イメージを生成

ESP32-S3 に書き込むための「ひとまとめのイメージ」を mkimage.sh で作成します。

./build/mkimage.sh --boot ../../../build/libs/esp32boot/elixir_esp32boot.avm

elixir_esp32boot.avm を取り込んだ、Elixir 対応の Release イメージが生成されます。

ls -lh build/atomvm-esp32*
# build/atomvm-esp32s3-xxxxxx.img  のようなファイルができているはず

ESP32-S3 に AtomVM を書き込み

フラッシュ全消去

esptool --chip auto --port /dev/ttyACM0 erase-flash

Release イメージを書き込む

mkimage.sh が生成したイメージを、flashimage.sh でまとめて書き込みます。

./build/flashimage.sh -p /dev/ttyACM0

flashimage.sh の中では esptool.py が呼ばれ、
適切なオフセットに bootloader / パーティションテーブル / AtomVM 本体 / Elixir コアライブラリが書き込まれます。

ここまで終わると、XIAO ESP32-S3 上に AtomVM 本体と Elixir 標準ライブラリ入りの boot.avm がそろった状態になっています。

おわりに

AtomVM をソースコードからビルドする手順をまとめました。

ソースコードからビルドできるようになることで、
用途にあわせた独自イメージが作成できるようになります。

:tada::tada::tada:

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