-
SerenityOSを実機ハードウェアに持ち込む
- SerenityOSプロジェクトにより深く関わることを決めた理由は、コードベースがQEMUでしか動作せず、実機では動かないことだった。この問題を解決するためにDell 3100 Chromebookを選んだ。
-
Chromebookを選んだ理由
- Chromebookは安価で入手しやすく、Cr50セキュリティチップがあるため、クローズ状態でもデバッグが可能だ。Dell 3100モデルを選んだのは、価格が手頃で、キーボードが上位モデルより良かったためである。
-
cros_ecの問題
- ChromebookのCr50チップはデバッグに有用だが、Dell 3100モデルでは正しく動作しなかった。いくつかのハードウェアハッキングを試みたが、成功しなかった。
-
代替策の検討
- Cr50チップが動作しないため、Raspberry Pi Picoボードを使って代替デバッグソリューションを実装した。これによりUARTとSPIフラッシュを接続し、デバッグを可能にした。
-
ソフトウェア面
- CircuitPythonを使ってUSBデバイスとの接続を実装し、EEPROMフラッシュ用のserprogプロトコルをCircuitPythonで実装した。
-
SerenityOSのデバッグ
- SerenityOSカーネルをデバッグするためにAlpine Linuxをセットアップし、GRUBでカーネルを自動ダウンロードしてテストする環境を構築した。
-
16550 UARTの理解
- 16550 UARTはシリアル通信の標準インターフェースで、ほとんどのPCに存在する。しかしDell 3100ではMMIOで実装されているため、初期デバッグに難しさがあった。
-
eMMCドライバの実装
- eMMCドライバを実装するため、SDとMMCの違いを理解し、初期化シーケンスを実装した。電源制御レジスタの誤設定が問題だったことを発見して修正した。
-
結論
- このプロジェクトは6か月かけて進められ、SerenityOSを実機で実行するための重要なステップだった。今後も追加のデバッグと改善作業が必要である。
1件のコメント
Hacker News の意見