RP2040対応のQMK(非公式)を動かす
QMK公式のRP2040対応(ChibiOSのRP2040対応)が待てないのでChibiOSを経由せず直接pico-sdkを使う実装でQMKが動くようにしてみましたsekigon-gonnoc.icon
SPLIT, VIA, LED, OLED, MIDI などの機能には対応しています。対応していない機能もあります。対応していてもAVRとは動作が違うかもしれません(後述)。
PICO Micro, Sparkfun Pro Micro RP2040, Raspberry Pi Pico, Keyboard Quantizer(rev.4) で動作確認しています
後述の CTPIM=yesオプションを利用することでpro micro向けのキーボードを簡単にPICO Micro, Sparkfun Pro Micro RP2040に置き換えられます
そのうち公式が対応すると思うので積極的にメンテナンスする気はありません
前準備
(5/5以前のバージョンの場合)pico-sdkを導入する(cloneして環境変数を設定する)
上記SDKのページではcmakeなどを導入する手順が示されていますが、QMKのビルドに必要な部分に絞ると以下の手順です
適当なディレクトリにpico-sdkをcloneする
pico-sdkのディレクトリで git submodule update --init --recursive を実行する
pico-sdkのディレクトリでpwdして絶対パスを確認する
export PICO_SDK_PATH=(確認した絶対パス) でpico-sdkにパスを通す
(QMKのflashコマンドで書き込めるようにしたい場合)picotoolを導入する
上の非公式QMKをcloneしてrp2040ブランチに切り替える
通常のQMKの導入手順は済んでいる前提
Windowsの場合、QMK MSYSだと問題が発生する場合があるようなので、うまくいかない場合はwslも試してください
セットアップの確認
用意したQMKのディレクトリに移動してrp2040_exampleがビルド、書き込みできるか確認する
uf2ファイルを作ってブートローダ状態のRP2040にコピーする
$ make rp2040_example:default:uf2
または、picotoolを使ってブートローダ状態のRP2040に書き込む
$ make rp2040_example:default:flash
このQMKを書き込んだ後、リセットを素早く2回押すことでブートローダが起動することを確認する
Pro Micro を Pico Micro または Sparkfun Pro Micro RP2040 に置き換える
自分のキーボードをビルドするときにオプションとしてCTPIM=yes(CONVERT_TO_PICO_MICRO)をつけることでRP2040対応のファームウェアがビルド・書き込みできる
$ make 7skb:default:flash CTPIM=yes
エラーが出る場合は未対応の機能を呼び出していたり、avrに依存している処理を対象のキーボード向けに実装していないか確認する
例:
独自の左右間通信をkeyboards/以下に実装している
<avr/io.h>をインクルードしている
config.hでstdio.hをインクルードしている
RPi Pico向けのキーボードなど、最初からRP2040向けのフォルダを作る場合
keyboards/rp2040_example, keyboards/rp2040_splitなどをコピーして編集する
AVR向けのQMKとの違いの例
SPLIT_USB_DETECTが強制定期に有効になります
EEPROMの内容は変更後30秒経過するまで永続化されません -> STM32と同じ実装にしたので即書き込まれます