最新のESP32でLinuxを起動、資料のないCLICを手探りで解析して移植

マイコンで通常のLinuxが動かない理由は、MMU(メモリー管理ユニット)を持たないことにある。プログラムごとに独立したメモリー空間を割り当てるこの回路を、Linuxは前提とする。Espressifが2026年7月27日に量産を始めたESP32-S31は、そのMMUを備える。

GrieferPig氏がS31にLinux 6.12を移植した成果を公開した。2026年7月29日にはWi-FiとBluetooth、Buildrootへの対応を加えた最新版を出している。動かしたのはESP32-S31-WROOM-3を載せたコアボードで、エミュレーターではなく実機で起動し、Wi-FiとUSB、Ethernet、SDMMCが動く。2つあるコアの片方でLinuxを走らせ、もう片方でEspressif純正のesp-hostedを動かしてWi-FiとBluetoothのファームウェアを支える構成を採る。

性能はCoreMarkで約950だった。同氏はこれを、性能の高いマイコンの部類には入るがF1C200Sのような低価格MPUの1300には届かない水準だとする。使えるメモリーは現行モジュールで16MBにとどまり、しかもこの数字は、カーネルの一部をフラッシュ上で直接実行するXIPに切り替えてRAMを空けた後のものだ。32MBのモジュールが出れば実用に近づくが、その頃には安価なARM系MPUを選んだ方がいいかもしれないとも書いている。

移植で最も手を焼いたのは、資料のない割り込みコントローラーだった。S31はESP32-P4と同じくCLICを使うが、Linuxが想定するのはPLICなので専用のドライバーを書く必要がある。CLICには公開された文書も実装例も存在せず、Espressif独自の設計と挙動を多く含む。同氏は初期にレジスタを手探りで調べ、ESP-IDF公式リポジトリのレジスタ記述そのものが挙動を誤っていると突き止めた。スーパーバイザーモードもESP-IDFでの使用例が皆無で、CSRの用途はESP32-P4の技術資料からの推測で埋めた。移植はS31の技術リファレンスマニュアル公開前に進めたものだと断っている。

完成度はまだ低い。リポジトリの進捗表では大半の項目が「未テスト」で、GPIOやI2C、I2S、SPIは未実装のままだ。同氏も、原因の分からない不具合や奇妙な挙動を覚悟してほしいと書いている。

それでもS31への評価は高い。CPUアーキテクチャは継ぎはぎだが機能の面では傑作で、将来ESP32-S3を置き換えうるチップだと見る。初代ESP32で抱えていたメモリーや消費電力、ネイティブUSBの悩みをS31が解決したとして、同じチップを触る人からの検証結果や不具合の報告を求めている。

関連情報

fabsceneの更新情報はXで配信中です

この記事の感想・意見をSNSで共有しよう
  • URLをコピーしました!

最新記事

YouTube / PodCast

【PR】読んで役立つ注目記事

目次