IDEでのマルチコアプログラミング環境が誕生しました。変更さいごにマルチコアプログラミングSPRESENSEは6つのCPUを搭載しております。IDE環境でのプログラミング詳細は以下の公式のドキュメントの記載の通りです。ライブラリMPライブラリというマルチコア用のライブラリが今回追加となりました。Mainコアと5つのSubコアの制御やコア間の通信を司ります。コアごとにArduinoプログラムを用意して、コアを指定してコンパイルというなかなかの力技です(;^ω^)構成の概要3つのCPUを使用してバーサライタしてみました。IDEコードMainコアフォトリフレクタでバーサライタ装置のマーカを検出して割り込みで回転時間を測定してMP.Send関数で表示すべき画像のアドレスを各Subコアに渡しています。コア間でメモリが共有されているので表示データのアドレスだけを渡しています。画像やGIFからpythonで生成しています。画像の色データを極座標変換してLED用に配列にしています。LED位置によって輝度を線型的に調整してバーサライタ表示時に明るさが均等になるようにしています。Divで1周当たりの画像分解能を指定しています。'\n')file.close()Sub1コアMainコアからの画像アドレスをMP.Recv関数で受けてLED発光させます。MP.RecvTimeout関数でデータ受信の待ちモードを指定しており、ここではMP_RECV_BLOCKINGでデータを受信するまで永久に受信待ちに入るモードにしています。メインボード用に改造してAdafruit_DotStar_SPI5.h、Adafruit_DotStar_SPI5.cppをつくってSPI5でLEDテープを制御できるようにしました。*i));}strip5.show();}Sub2コアMainコアからの画像アドレスをMP.Recv関数で受けてSPI4でLEDテープを発光させます。hPOV3コアで1周400分解能達成。2019年6月6日ちなみに性能指数とはバーサライタの性能を示す独自の指標です。100次は今回のアップデートでフラッシュメモリへの読み書きのライブラリも追加されたので長尺の動画表示にトライしたいです。IDEアップデートでマルチコア対応実現。hPOV達成!Mainコア:回転検出、SPI5でLED発光Sub1コア:SPI4でLED発光3コアにして試してみよっと♪マジでうれしい。分解能が上がったことによって表示データが大きくなり、現状ですと5フレームしか書き込めない状態です。SPRESENSEのコンパイルされたコードはフラッシュメモリにインストールされ、実行されるときにSRAMに展開されて実行されます。SRAMは1.5MBのうちのMineコアが768kB、Subコアが128kB割り当てられます。表示データに使用できる容量はSRAMサイズを超えられないのです。そこで8MBもあるフラッシュを有効に使用できないか検討しました。Fileライブラリを使用するとフラッシュにファイル形式でデータを保存できます。分解能400の32ビットデータ)をテキストデータとしてフラッシュに保存して、再度読み込んで配列にする実験をしました。テキストデータを1文字づつ読んで32ビット分で文字列にして16進数に変換して配列化しました。1フレーム分の配列を読み込むのに3分20秒もかかりました。マルチコアで読み込んで配列生成しながら、長尺の動画を表示したかったのですが時間がかかり過ぎのため断念しました。ライブラリ装置構成の変更2本のLEDテープの配置を2本平行ではなく、1直線に並べました。回転の際の表示のずれを抑えるためです。1列にして2本のLEDのずれが小さくなって良かった。4枚羽の十字にしたくてしかたない。2019年6月10日ずれが軽減され精度が増しました。2019年6月11日さいごに今回のSPRESENSEバージョンアップによってバーサライタの性能が大きく向上しました。いつかフラッシュメモリの使用も気軽にできるようになるかと思います。今回のバージョンアップのように。バーサライタ装置をステージ上にそっと置き地を引きずりながら漂う煙のようにその場を後にした。コメントをキャンセルメールアドレスが公開されることはありません。コメントのみでもOKです。コメントデータの処理方法の詳細はこちらをご覧ください。