Spresense お試し

今更ながら SONY Spresense です。秋月の Web をうろうろしていたら見つけました。発表は数年前でしたでしょうか。1個くらい買っておいてもいいかと思いショッピングカートに入れて購入。

開発環境は Arduino 環境と tool-chain を入れてコマンドラインからビルドするか Visual Studio Code を使った開発となります。私の場合は Visual Studio Code 少しわかる感じなので tool-chain でやることにしてチュートリアルをやり始めた所です。

普段使いの PC はデスクトップで Windows 11 です。SONY 開発者サイトによると、WIndows 11 の場合は wsl2 を使用するとありました。Virtual Box で Ubuntu 22.04 を入れているので、今更 wsl2 を入れてもディスクの容量食うだけなので、ビルド環境は Virtual Box の Linux でやりました。

チュートリアルの単純なアプリケーションなどはビルド出来て、ブートローダー経由の書き込みも出来て、サンプルプログラムの実行も出来てここまでは調子よかったです。問題は、デバッガです。Spresense の拡張基板には SWD デバッグ端子が付けられます。2×5 1.27mmピッチのピンヘッダです。ここにデバッガからのフラットケーブルを刺せば、Visual Studio Code からデバッグやら単純に書き込みをすればブートローダー経由の書き込みではなく、elf ファイルを直接流し込めます。逸れますが Raspberry Pi Pico なども uf2 ファイルを Pico をUSBストレージ状態にしてファイルを放り込んで書き込みますがやはり手間なのでデバッグ端子経由で elf ファイルを書き込むのをよくやっています。そういう意味でデバッガを使ってコンパイルされたファイルをインストールするのは大変便利です。

Spresense 開発環境で公式サポートされているデバッガは Keil ULINK2 と NXP LPC-Link2 です。 LPC-Link2 は持っているのでいいのですが、今となってはどちらも新規購入は出来ません。ここら辺は公式としても見直してほしいところですね。

んで、その LPC-Link2 でのアプリケーションの書き込みは、私の所の固有の問題かもしれませんが、Virtual Box の ubuntu では LPC-Link2 が使用できませんでした。LPCScrypt でファームを更新しても変化なし。udev の rules 見ても問題なし。ファームの更新は出来るから壊れてないわなと思いつつも進展なし。

vmware workstation player 17 を試しに入れて、ubuntu を入れた環境では LPC-Link2 による書き込みは可能でした。ただ、vmware player の仮想マシン起動中に CTRL-G でキーボード・マウスを vmware player 側にしていないと、 ubuntu 起動後キーボード入力が出来なくなるというワケワカラン事象が発生します。そこさえ辛抱すれば LPC-Link2、PicoProbe 両方動くので良いです。

PicoProbe という言葉が出てきましたが、PicoProbe も SWD デバッガなので 2×5 コネクタを付けて Spresense ボードに接続することが出来ます。これは Virtual Box / vmware workstation player 17 両方デバッガを認識して書き込みに成功しています。

ついでの確認で windows11 wsl2 環境では、openocd 立ち上がるのですが、その後エラーで失敗します。これは、LPC-Link2, PicoProbe 両方で発生しました。wsl2 で起動した openocd は Windows の USB に接続されているデバッガを使いますが、wsl2 で何か設定必要だったかなぁ。Microsoft Ignite に、「USB デバイスを接続する」 という題名で、wsl 関連の記事が出てたりもするので、何か必要な気もします。

古いノートPCに入れた ubuntu 22.04 環境は LPC-Link2 ・ PicoProbe での書き込みに成功しています。実機は悩むことなく動くので Linux 入れてるマシンをお持ちの方は素直にそれを使うのがいいと思います。

今後役に立つかもしれないので、↑の写真の PicoProbe 部分だけ切り出した基板を作ってもらうことにしました。

こうやってチュートリアルやる前に燃え尽きてしまった状況です。

nuttx asmp サンプルをデバッガで書くと動かず、ブートローダーで書くと動くという事象も確認はしているのですが、ここら辺は書き込むファイル抜けとか思うのでそのうち掲示板でも見てみようと思うところです。今のところ hello world しかできていなくて gps などの exampes が全く手つかずの状況。

公式が用意・確認した gcc / openocd などを使うように開発環境がまとまられているのは良いです。Web サイトもひつこいくらいに説明は入っているので見やすさは別にして良いです。nuttx なんで printf デバッグでええやんという感じはするのですが、まぁデバッガも使えるならちょっとつないでみようとやり出してハマった結果、これ以上はお腹いっぱいになって動けなくなったパターンでした。