🔖

Pico2でGUDドライバを使ったサブディスプレイ

に公開

はじめに

GUDはGeneric USB Displayの略でオープンソースのLinux用USBディスプレイ用プロトコルです。
https://github.com/notro/gud/wiki
LinuxのカーネルがGUDをサポートしていると、その規格に合ったディスプレイを用意すると、USBケーブルで接続するだけで、サブディスプレイを追加することができます。
2021年7月に対応するデバイスをPicoで作製可能となりました。
https://interface.cqpub.co.jp/wp-content/uploads/if2312_188.pdf
以下は、実際に作成したディスプレイです。

具体的な作製方法は、以下の記事にまとめています。
https://qiita.com/kazueda/items/7edc66819be03d33fe5e
https://qiita.com/kazueda/items/1a8012a14345f2abd3f4
また、USB FunctionFSを使って、ユーザースペースにGUDを移植可能になり、Rustでの移植の方法も公開されています。。
https://github.com/samcday/gud-gadget/
これまで、RP2040のボード上での動作を確認してきましたが、cmakeのオプションの変更だけでRP2350上のARMとRISC-Vでも動作確認ができましたので、報告します。

この記事の内容の一部は、2025年1月26日に行われた「LILO&東海道らぐオフラインミーティング」の発表内容を含みます。

https://lilo.connpass.com/event/341776/

RP2350のARM用ビルド

pico-sdkとpicotoolが対応していますので、これまでと同様に準備します。
オプションをつけてcmakeをします。

$ cmake -DPICO_PLATFORM=rp2350 ..

その後、makeを行います。

RP2350のRISC-V用ビルド

Pico-sdkとpicotoolを、これまで同様に準備するところは、ARM用と同じです。
さらに、Risc-V用のコンパイラを用意します。

$ wget https://buildbot.embecosm.com/job/corev-gcc-ubuntu2204/47/artifact/corev-openhw-gcc-ubuntu2204-20240530.tar.gz
$ tar xvf corev-openhw-gcc-ubuntu2204-20240530.tar.gz

オプションをつけてcmakeします。

$ cmake -DPICO_TOOLCHAIN_PATH=~/rpipico2/corev-openhw-gcc-ubuntu2204-20240530 -DPICO_PLATFORM=rp2350-riscv ..

その後、makeを行います。

生成したuf2をPico2に書き込むと問題なく動作しました。
動作の状態はpicoの場合と見た目が変わりませんので、写真は省略します。

おわりに

pico-sdkのおかげで、ソースファイルの修正無しにビルド成功しました。
ARM、RISC-V用uf2ファイルは、どちらも動作しました。
今後は、もう少し大きなLCDを使ってみようと思います。

Discussion