Pico2でGUDドライバを使ったサブディスプレイ
はじめに
GUDはGeneric USB Displayの略でオープンソースのLinux用USBディスプレイ用プロトコルです。
LinuxのカーネルがGUDをサポートしていると、その規格に合ったディスプレイを用意すると、USBケーブルで接続するだけで、サブディスプレイを追加することができます。
2021年7月に対応するデバイスをPicoで作製可能となりました。
以下は、実際に作成したディスプレイです。

具体的な作製方法は、以下の記事にまとめています。
また、USB FunctionFSを使って、ユーザースペースにGUDを移植可能になり、Rustでの移植の方法も公開されています。。
これまで、RP2040のボード上での動作を確認してきましたが、cmakeのオプションの変更だけでRP2350上のARMとRISC-Vでも動作確認ができましたので、報告します。
この記事の内容の一部は、2025年1月26日に行われた「LILO&東海道らぐオフラインミーティング」の発表内容を含みます。
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