(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
参考