ラズピコ2の特徴の一つである、FPUとGPUを活用するのにちょうど良さそうなのがARM系プロセッサ向けに用意されているCMSIS-DSP、ラズピコのハードにも最適化されているので、例えばArduinoライブラリよりもFFT処理が高速化できるし、MNISTで使っている事例もあります
ラズピコに比較しておよそ5倍程度の高速化というような情報もあります
以下、VScodeでラズピコ2の環境を用意したので、コードからCMSIS-DSPを使えるようにします
https://isehara-3lv.sakura.ne.jp/blog/2025/05/27/ラズピコ2の開発環境vscode-raspberry-pi-pico/
<実行環境>
ラズピコ2W + デバッグボード、M4 MacBook、VScode + Raspberry pi pico extension
参考になったのは、やはりRaspberryPI財団のページで、
https://forums.raspberrypi.com/viewtopic.php?t=365053
手順を述べると、
① ラズピコにカスタマイズされたスタティックライブラリを作成する
作成されるのは、libCMSISDSP.aという名称になります
② main.cからは①で作成したスタティックライブラリと、CMSIS関連ヘッダファイル群を呼び出せるようにinclucdeする
1-1 CMSIS-DSPのライブラリを作成するためのディレクトリ構成
ビルドの例は以下の通り、
mkdir build
cd build
cmake ..
make -j4
1-2 サンプルプログラムとCMSIS-DSPライブラリの組み込み
https://forums.raspberrypi.com/viewtopic.php?t=365053
にあるFFTを実行するサンプルプログラムをそのまま使用しました
“arm_math.h”がCMSIS-DSPを使用するための宣言です
VScodeで作成されたCMakeファイルに、以下の🔴部分の3行を追加します
これでRASPBERRY PI PICO PROJECTのCompile ProjectでUF2ファイルが作成されて、Flushすればラズピコ上で動作開始します
③ 実行結果
USBシリアルのポートは二つ見えますが、常時見えているのがデバッガー側、ラズピコ2側は瞬間でしか見えないので要注意、というかデバッガ使わないと見ることはできないと思う
コンソールに印字された結果(256個出てきますが、re/imの組み合わせなので実質128個、それの二乗平均しています)をコピーしてリニア軸で図にすると、
さらに、対数軸で見てみると、
それらしいグラフになっています
admin