日曜技術者のメモ

趣味でやった事のメモ書きです。

PlatformIOでM5Stack Core2のCore2_Factory_testをビルドしてみた

久しぶりに更新。
仕事と趣味が一緒だとブログに書く内容に困る・・・

M5Stack Core2を買ったのはいいがPlatformIOに登録されていなかったので自分で追加して出荷時のプログラム「Core2_Factory_test」をビルドしてみた
※この方法はPlatformIO公式でサポートされるまでの暫定的な対応ですべての動作を確認していませんので悪しからず

環境&必要なもの

M5Core2を追加

board追加

以下ファイルを追加
m5stack-fire.jsonを参考にCore2向けに改変

C:\Users\<ユーザー名>\.platformio\platforms\espressif32\boards\m5stack-core2_tmp.json

{
  "build": {
    "arduino":{
      "ldscript": "esp32_out.ld"
    },
    "core": "esp32",
    "extra_flags": "-DARDUINO_M5STACK_CORE2 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue",
    "f_cpu": "240000000L",
    "f_flash": "40000000L",
    "flash_mode": "dio",
    "mcu": "esp32",
    "partitions": "default_16MB.csv",
    "variant": "m5stack_core2"
  },
  "connectivity": [
    "wifi",
    "bluetooth",
    "ethernet",
    "can"
  ],
  "frameworks": [
    "arduino",
    "espidf"
  ],
  "name": "M5Stack Core2 tmp",
  "upload": {
    "flash_size": "16MB",
    "maximum_ram_size": 6553600,
    "maximum_size": 16777216,
    "require_upload_port": true,
    "speed": 460800
  },
  "url": "http://www.m5stack.com",
  "vendor": "M5Stack"
}

-DARDUINO_M5STACK_CORE2は適当に定義。これでいいかは不明・・・
-DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issueはPSRAMを使う設定。
これがないとCore2_Factory_test起動時のPSRAMチェックで失敗する

platformioのドキュメントに記載されているPSRAM設定と同じくplatformio.iniに追加でもOK https://docs.platformio.org/en/latest/platforms/espressif32.html

"variant": "m5stack_core2"はpins_arduino.hの指定。 arduino-esp32のvariantsフォルダにあるm5stack_core2フォルダに名前を合わせる
"name": "M5Stack Core2 tmp",は適当。
正式版がリリースされても問題無いように名前を適当に変えておく。

pins_arduino.hを追加

jsonを追加するとPlatformIOでM5Stack Core2 tmpが追加されるがpins_arduino.hが無くビルドエラーになる
これはPlatformIOで自動ダウンロードされるEspressif 32のバージョン(現時点で2.0.0)が古くCore2が登録されてないから

※Core2は今までのM5stackとピンの割り当てが異なっているので使いまわせない

追加する方法は2つあってどっちでも動作した

1.手動で追加

公式のarduino-esp32からpins_arduino.hを入手する。

arduino-esp32/pins_arduino.h at master · espressif/arduino-esp32 · GitHub

入手したら↓に保存する。(m5stack_core2フォルダは新規作成する)
C:\Users\<ユーザー名>\.platformio\packages\framework-arduinoespressif32\variants\m5stack_core2

2.自動ダウンロード

プロジェクト作成後platfornio.iniに以下を追加

platform_packages =
    platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git

これで最新のarduino-esp32が使える
※(https://docs.platformio.org/en/latest/platforms/espressif32.html)参照

M5Core2 Library追加

プロジェクト作成後platfornio.iniに以下を追加

lib_deps = 
    https://github.com/m5stack/M5Core2.git

Core2_Factory_testビルド

後はCore2_Factory_testをダウンロードしてPlatofromIO上でImport Arduino ProjectやNew Projectでsrcフォルダにファイルコピー等をしてビルドすれば書き込める
その際ボード選択をM5Stack Core2 tmpにする事や上記したplatform.iniの修正を忘れない事

ビルド結果。16MFlashなのでかなり余裕がある

Building in release mode
Retrieving maximum program size .pio\build\m5stack-core2_tmp\firmware.elf
Checking size .pio\build\m5stack-core2_tmp\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   0.8% (used 50716 bytes from 6553600 bytes)
Flash: [==        ]  21.9% (used 1434446 bytes from 6553600 bytes)