uchan; GPD Micro PCでMikanOSが起動しない - uchan-nos/os-from-zero GitHub Wiki

GPD Micro PC で MikanOS を起動させようとすると、ターミナルが表示される前に止まってしまいました。詳しい停止位置を探ると、どうやら LAPIC Timer の周波数を計測するための WaitMilliseconds(100) で止まっているようです。ACPI PM Timer を使って 100 ミリ秒待つという処理ですね。

さらに詳しく調べると、fadt->pm_tmr_blk が 0、つまり ACPI PM Timer が存在しないことが分かりました。ACPI PM Timer が存在するなら、fadt->pm_tmr_blk は ACPI PM Timer のレジスタアドレスを表すはず。でも、この機種だと 0 だったのです。

GPD Micro PC で Windows を起動させ、ACPI 公式のツール acpidump コマンドを使って、ACPI テーブルを確認しました。PM_TMR_BLK は FADT の 76 バイト目にあるはずですから、ダンプ結果の 0x4C を見てみます。(FADT のシグネチャは "FACP" です)

すると、ダンプ結果も 00 00 00 00 となっていて、確かに PM_TMR_BLK が 0 であることが判明。この機種には ACPI PM Timer が搭載されていないことが確定しました。書籍執筆時に使っていた GPD Micro PC では存在したはずだ、と思うのですが、バッテリ故障で交換してもらった機種には存在しない……。こんなことって有りなのでしょうか。

もしかしたら、uchan が誤解していて、書籍執筆時に使っていた機種でも ACPI PM Timer が存在しなかったのでしょうか。MikanOS が起動時に ACPI PM Timer を要求するのは osbook_day12b 以降だから、もちろんそれ以降のバージョンを GPD Micro PC で実験しているはずなんですよ。そのときに GPD Micro PC で動作しなかったなんてことはないから、うーん、やっぱり新しい GPD Micro PC で ACPI PM Timer が削除されたのではないかと思います。MikanOS の osbook_day12b 以降が GPD Micro PC で動作することが分かる方が居れば、教えていただきたいです。