(1) PlatformIOの導入
(2) Spresenseのパッケージをインストール
- 「QUICK ACCESS」→「Miscellaneous」→「PlatfromIO Core CLI」をクリック。
- TERMINALが開いて pio コマンドのヘルプが表示される。
- TERMINALで下記コマンドを実行。
pio pkg install -g -p https://github.com/maxgerhardt/platform-sonyspresense.git
(3) プロジェクトの作成
- 「PROJECT TASKS」→「Create New Project」をクリック。
- 「Board」で「Spresense (1.5MB RAM, 768k Flash)(Sony)」を検索して選択。
- 「Finish」をクリックでプロジェクトが作成される。初回は時間がかかる。
- platformio.ini は下記のようになる。
[env:spresense] platform = sonyspresense board = spresense framework = arduino
(4) マルチコアを利用する場合
- platformio.ini を下記のように修正する。
[env] platform = sonyspresense board = spresense framework = arduino [env:spresense_mainCore] build_src_filter = +<main/> [env:spresense_subCore1] build_flags = -DPIO_FRAMEWORK_ARDUINO_CORE_SUB_CORE_1 build_src_filter = +<sub1/>
- src フォルダの下に main フォルダと sub1 フォルダを作成する。
- main フォルダと sub1 フォルダの下にそれぞれのソースファイルを作成する。
(5) メインコア/サブコアの環境切り替えとビルド&書き込み
- 下部のバーにある、プロジェクト環境切り替えボタン(フォルダのアイコン?)をクリックすると、env:spresense_mainCore か env:spresense_subCore1かを選択できる。
- メインコア/サブコアそれぞれに切り替えてビルドとアップロードをおこなう。
- ところが書き込み時に下記のエラーが発生する。
if isinstance(callback, collections.Callable): AttributeError: module 'collections' has no attribute 'Callable'
(5+) エラーの原因と解決
- 原因はPythonのバージョン問題。 (python 3.9以前に書かれた flash_writer.py が python 3.11.7 環境でエラーになっている。)
- flash_writer はPythonスクリプト以外にOSごとのバイナリもあるのでそちらを使うように upload_command を platform.io に追記する。
- 下記はWindowsの場合。${platformio.packages_dir} の実際のパスは C:\Users\ユーザ名\.platformio\packages\
[env] platform = sonyspresense board = spresense framework = arduino upload_command = ${platformio.packages_dir}/tool-spresense/flash_writer/windows/flash_writer -s -c $UPLOAD_PORT -b $UPLOAD_SPEED -d -n -s $SOURCE
(6) Library Dependency Finder の設定
- 条件付きコンパイルするようなソースの場合、ライブラリの依存関係が正しく認識されないことがある。
- 例えば、ssprocLib ライブラリのサンプルスケッチである YuruHorn_SubCore1 をビルドすると下記のようなエラーが出る。
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf LDF Modes: Finder ~ chain, Compatibility ~ soft Scanning dependencies... (中略) |-- Sound Signal Processing Library for Spresense @ 1.3.0 (中略) .platformio\packages\framework-arduinosonyspresense\libraries\File\src\File.cpp:35: File.h:24:2: error: #error "File library is NOT supported by SubCore."
- Library Dependency Finder に条件付きコンパイルを考慮するよう platform.io に下記の指定を追加するとビルドが通る。
lib_ldf_mode = chain+
- 詳しくはこちらを参照 → Library Dependency Finder (LDF)
(7) その他の設定
メモリサイズの設定などは下記を参照。
参考