Files
mozc-devices/mozc-dial/firmware/README_ja.md
Shun Ikejima 6783bfea76 Add mozc dial version.
Co-authored-by: Takashi Toyoshima <toyoshim@google.com>
Co-authored-by: Shun Ikejima <ikejima@google.com>
2025-10-01 09:47:01 +09:00

4.9 KiB

ファームウェア開発ガイド

キーボードの組み立て全体についてはビルドガイドを参照してください。

ディレクトリ一覧

  • prebuilt/ : 各ボード向けに事前にビルドしたファームウェア
  • common/ : 各ボード共通で用いられるライブラリのソースファイル
  • main/ : 9ダイヤル版メインチップ用のソースファイルとプロジェクト
  • sub/ : 9ダイヤル版サブチップ用のソースファイルとプロジェクト
  • one_dial/ : 1ダイヤル版 Raspberry Pi Pico用のソーとファイルとプロジェクト

事前にビルドしたファームウェア

prebuilt/以下に事前にビルドしたファームウェアを収めていますので、変更が不要の場合はこれらをそのまま用いることができます。

9ダイヤル板はmain.uf2sub.uf2を、1ダイヤル板はone_dial.uf2を使用します。

独自のファームウェア開発の手引き

Visual Studio Code をインストールし、Raspberry Pi Pico拡張 を追加します。

Activity BarのRaspberry Pi Pico Projectsの拡張機能からImport Projectを使い、各プロジェクトのディレクトリを開いてください。 拡張をはじめて使う場合、開発環境のインストールが始まります。プロジェクトが取り込まれると、Activity BarのCMakeRun and Debugを使って開発できるようになります。

公式のPicoシリーズボードに搭載されているように、9ダイヤル板でも基板上にSWC/Dと書かれたSWCLKSWDIOのランドペアがそれぞれのチップごとに用意されています。公式のDebug Probe等のSWDをサポートした開発機材を用意する事で、エディタ上でステップ実効等が可能です。

標準出力について

9ダイヤル板では基板上にメインチップ用のTX1、サブチップ用のTX2と書かれたランドが用意されており、標準の設定では標準出力はこれらのピンから速度115200のUARTとして出力されています。

一方でCMakeLists.txtpico_enable_stdio_uart0に、pico_enable_stdio_semihosting1に変更する事で、出力をデバッガ経由に切り替える事ができます。TXを配線せずに済むので便利ですが、デバッガのサポートを有効にしないと出力のところで動作停止するので注意が必要です。デバッガがアタッチされていない時も同様に停止するので、リリースビルドには使えません。デバッガのサポートはmonitor arm semihosting enableで有効に出来ますが、デバッガ起動ごとに毎回設定するのは大変なので、.vscode/launch.jsonの各コマンド設定内に以下のように登録しておくと便利です。

"postLaunchCommands": [
    "monitor arm semihosting enable"
]

PICO WやPICO 2 (W)の利用

1ダイヤル板は公式のRaspberry Pi Picoボードを使うように設定してありますが、CMakeFiles.txt内のset(PICO_BOARD pico CACHE STRING "Board type")のところでボード設定をpicoからpico_wpico2pico2_w等に変更する事で他のボードにも対応できるかと思います。3rd party製のボードについてもnone等で対応できるかと思います。

EEPROMについて

9ダイヤル版はボード設定をnoneにしているので、EEPROMについては汎用のドライバが分周4で組み込まれます。これでだいたいのEEPROMで動作するはずです。リファレンスの部品を使っている場合は、公式ボードと同様にW25Q080用のドライバが分周2で動作する事を確認しています。~/.pico-sdk/sdk/2.2.0/src/boards/include/boards/ボード名.hを作成し、その中で

#define PICO_BOOT_STAGE_2_CHOOSE_W25Q080 1
#define PICO_FLASH_SPI_CLKDIV 2

などを定義し、CMakeFiles.txtのボード設定で指定する事で、キャッシュミス時のQSPI経由でのEEPROMアクセスを最適化し、さらなる性能を引き出す事も可能です。

センサーの調整について

標準ではセンサーは内部抵抗でpull-upされています。外部抵抗によりpull-upで調整したい場合、photo_sensor.ccPhotoSensor::PhotoSensor()内にあるgpio_pull_up(gpio);gpio_disable_pulls(gpio);に変更してください。

あるいは、内部抵抗を有効にしたまま外部抵抗との合成抵抗でpull-upする事も可能です。この場合、内部抵抗は公称値で50-80KΩ、外部抵抗とは並列接続になります。

詳細は基板組立ガイドを確認してください。