PlatformIOでM5Stack Core2のCore2_Factory_testをビルドしてみた
久しぶりに更新。
仕事と趣味が一緒だとブログに書く内容に困る・・・
M5Stack Core2を買ったのはいいがPlatformIOに登録されていなかったので自分で追加して出荷時のプログラム「Core2_Factory_test」をビルドしてみた
※この方法はPlatformIO公式でサポートされるまでの暫定的な対応ですべての動作を確認していませんので悪しからず
環境&必要なもの
- VSCode
- PlatformIO
- M5Core2 Library
GitHub - m5stack/M5Core2: M5Core2 Arduino Library - Core2_Factory_test
M5-ProductExampleCodes/Core/M5Core2/Arduino/Core2_Factory_test at master · m5stack/M5-ProductExampleCodes · GitHub - arduino-esp32
GitHub - espressif/arduino-esp32: Arduino core for the ESP32
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)