1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Shrike-liteをpico-sdkで動かしてみる

Posted at

はじめに

初めまして。ロボコンをやったりしている木槌と申します。
本当は学ロボの準備やテストで忙しかったりするのですが、現実逃避がしたくなり初ブログを書いています。
初回のお題は「pico-sdkでshrike-liteを動かす」です。

Shrike-liteとは

Shrike-liteはRP2040とルネサスのForge FPGA SLG47910が載っている開発ボードです。マイコンとFPGAの開発を簡単にしかも安価(現状秋月で1240円)にできるかなりアツい商品です。
FPGAというと高価であったり、環境構築が難しかったりと敷居の高いイメージがありますが、このボードはその敷居を下げてくれるかなと思います。
RP2040とForge FPGA SLG47910はSPIによってボード内で接続されており、これでFPGAのデザインを流し込むためFPGAを使うにしてもマイコンを使用することが公式の想定だと思います。

pico-sdk

RP2040には開発環境が多く提供されており、そのうちの一つがpico-sdkです。pico-sdkは、設計元である RaspberryPi Ltdが作っているpico/pico2専用のc言語ライブラリです。他の開発環境としてArduino IDEやMicroPythonなどがありますが、pico-sdkは低レベル制御がしやすく、専用のライブラリとして作られているためマイコンの性能をしっかり引き出しているような気がして私は気に入っています。
また、VS Codeに拡張機能がありGUIでプロジェクトの生成ができるなど便利です。
導入の方法はこちらの記事を参考にしました。
https://zenn.dev/usagi1975/articles/2024-08-29-000_pico_development

本題

Shrike-liteの開発方法ですが、以下の流れになると思います。

  1. FPGAのデザインを設計
  2. RP2040経由で設計したデザインを流し込む

FPGAのデザインについてはルネサス公式のGo Configure Software Hubという開発環境があります。
FPGAのデザインをRP2040経由で流し込む方法については、公式からArduino IDEやThonny IDEでの方法が紹介されていますが、pico-sdkを利用した方法は私が確認した範囲では公式からは紹介されていません。しかし、どうしてもpico-sdkで使いたかったのでいろいろ調べpico-sdkの関数を用いてFPGAを動かすプロジェクトのテンプレートを作ってみました。突貫で作ったし、テンプレートリポジトリの使い方に慣れていないのでうまく動かないかもしれないので、改善点あったら教えていただけると嬉しいです。

使い方

まず、FPGAのデザインを公式のページを参考に設計してください。公式ではルネサスの公式開発環境であるGo Configure Software Hubを使う方法が紹介されていると思います。
手順に従うと最終的にGo Configure Software Hubのプロジェクト配下のffpga/build/bitstream/FPGA_bitstream_MCU.binというバイナリファイルが出力されるので、これをこのテンプレートのassets/にコピーしてください。

次に、バイナリファイルをプログラムの中へ埋め込むためにヘッダーファイルへ変換します。linuxの場合はxxdコマンドを使えばすぐ終わりますが、windowsだとやり方が分からなかったため、scripts/に変換用のPythonコードを用意しました。uvが入っていたら

uv run .\scripts\bin_to_header.py .\assets\FPGA_bitstream_MCU.bin

と実行すればgenerated/にヘッダーファイルが生成します。uvが入っていなくても標準ライブラリのみを使用しているため、ローカルのPythonでも動くと思います。

そして、src/main.cppにヘッダーファイルをインクルードしてSPIの初期設定とデザインの書き込みをfpga_spi_initfpga_program_mcu_modeでやります。最後にmain.cppにマイコンのやりたいことを書けば完成です!

最後に

至らぬ点も多々あったと思いますが、参考になりましたら嬉しいです。間違い疑問点等ありましたら、コメントいただけるとありがたいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?