あれから続けて USB マウスの入力のところまで来たのですが、これが大変でした。結論としては、自分の環境では実機での動作確認に至らずでした。
マウス対応
GPDWIN は USB ポートが1つしかなく、ここに起動用の USB メモリを差してしまうとマウスが繋がりません。そして USB ハブを繋いでみると、 UEFI により起動のメモリを見つけて起動まではスムーズですが、マウスとのデータやりとりで失敗するのかエラー(kTransfer Failed)が出ました。
これはハブを経由している部分で失敗するのかもしれません。ハブで USB 1.1 世代のマウスデバイスに繋がるようになるので、追加の実装が必要なのかも。 USB 2.0 のころはこのあたりでスプリットトランザクションとかキーワードを見た気がします。
DevContainer で QEMU を使う
自分の手持ちの環境では、実機動作できるものが見当たらずなので DevContainer の中で QEMU を使うことにしました。このあたりは Docker コンテナをそのように作ってくれて本当に助かりました。また、使い方についても解説してくれているのでそちらを参考にしつつ実行しました。 Windows 環境に VcXsrv という X サーバーを入れるだけで済みました。
Docker ではじめる "ゼロからのOS自作入門"
「ゼロからのOS自作入門」の副読本的記事
これらのおかげで VS Code を開いて作業しつつ、QEMU の画面は Windows の別ウィンドウで確認が出来るという環境になりました。無事に USB マウスも扱えています(エミュレートですけど)。
コメント