matsumoto-lab’s diary

慶應義塾大学物理情報工学科松本研究室の日々の活動について

はりぼてOSにIntel HD Audioを実装してみる[随時追加]

この記事は、 自作OS Advent Calendar 2020 の12日目の記事です。

Seccamp 2020 のY-ⅠOS開発ゼミにて、自分が挑戦したはりぼてOSにIntel HD Audioを実装して、好きな音楽を鳴らす、という実装において、自分が最初につまったところをまとめておきたいと思います。
改めて、講師・チューター、同じ受講者の方ありがとうございました!

目次

実行環境

実行環境は普通のWindowsPCです。

Windows10 64bit Home
Intel Core i5 第10世代
QEMU version 5.1.0 (はりぼてOSの元のものと差し替えます)

参考にした記事

Intel HD Audioの仕様書ダウンロード先

まずは、Intel HD の仕様書をダウンロードしておきます。

https://www.intel.com/content/www/us/en/standards/high-definition-audio-specification.html

怒田さんのブログ

seccamp で大変お世話になりました講師の怒田さんが、事前に実装してくださりました。本当にありがとうございました!自分もこちらのサンプルコード等を参考に書き始めましたが、はりぼてOSならでは(?)のつまりどころがあったのでそこにフォーカスを充てたいと思います。

https://seiya.me/intel-hd-audio

やったこと

QEMUのバージョンを更新と引数の変更

ドライバを実装するにあたり、そのメモリマップを知る必要があるためQEMU Monitorからinfo pciで確認する必要があります。うまくいけば下の写真みたいにBAR#0にでてくる物理メモリアドレスが確認できると思います。 f:id:tsuchiya-hayato:20201212175718p:plain

このHD Audioの情報を出現させるためには、QEMUを動かかす際の引数を変更してあげます。はりぼてOSでは、ztools > qemu > qemu-win.bat が最終的に実行されるようになっているはずで、batファイルを開くと、qemu.exeと引数指定して実行している行があると思います。

こちらの引数を変更してあげればよいのですが、ぼくが試したときは、はりぼてOSの元のQEMUが古くて対応してなかったのかrun errorを吐いたので、QEMUを新しいものに差し替えてあげました。
QEMUを新しくビルドしてあげるのがベストだと思ったのですが、時間とはりぼてOSがexeで動かしていたので、公式インストーラを落として差し替えました。  

QEMU for Windows – Installers (64 bit)
自分が落としたものは、2020-8-14の(5.1.0)です。
ダウンロードしたexeにしたがってインストールを進めます。終わったあと、個人的にパスの書き換えが権利者権限等で面倒くさかったので、qemu-system-x86_64.exeとその他のdllファイルを全てqemuフォルダに移しました。 QEMUを更新した後に、qemu-win.batの中身を次のように書き換えました。

@set SDL_VIDEODRIVER=windib
@set QEMU_AUDIO_DRV=none
@set QEMU_AUDIO_LOG_TO_MONITOR=0
qemu-system-x86_64.exe -L . -m 32 -fda fdimage0.bin -device intel-hda,debug=10 -device hda-duplex,debug=3

これで、いつも通りmake runして動けば完了です。 ただ、QEMU Monitor を開いてコマンドをいろいろ実行して、スクロールしようとしても動きませんでした、、、