Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AHCIに対応したい

 AHCIに対応したい

自作OSもくもく会オンライン https://osdev-jp.connpass.com/event/175433/ で発表した内容です。

Totsugekitai

May 10, 2020
Tweet

More Decks by Totsugekitai

Other Decks in Programming

Transcript

  1. AHCIに対応したい 自 作 OS も く も く 会 オ

    ン ラ イ ン by @totsugeki_tai 2020.5.10
  2. 暗黙的な前提知識 落とし穴紹介 12/28 SATA・ATA の知識が前提だが… 暗黙的に ATA の仕様書を引用してくる部分が あり、つらい QEMU

    のソースコードからマジックナンバー を特定してそれをググって仕様書の記述を見 つけました 初心者にはつらいよ…
  3. 7つの手順を踏めば良い 初期化手順 16/28 1. GHC.AE を 1 にする 2. PI

    を読んで実装されているポートを確認する 3. ポートが動いていないことを確認する 3.1 PxCMD.ST, PxCMD.CR, PxCMD.FRE, PxCMD.FR が 0 だったらポートはアイドル状態 3.2 アイドル状態でなければ以下の操作をする 3.3 PxCMD.ST をクリアして PxCMD.CR が 0 になるの を待つ 3.4 PxCMD.FRE をクリアして PxCMD.FR が 0 になる のを待つ
  4. 7つの手順を踏めば良い 初期化手順 17/28 4. CAP.NCS を読んでコマンドスロットが何個サ ポートされているか確認する 5. 実装ポートに対してメモリを確保し、 PxCLB,

    PxFB を設定した後、PxCMD.FRE を 1 にセット 6. 実装ポートに対して PxSERR に 1 を書き込ん でクリアする 7. GHC.IE を 1 にセットして割り込み通知を ON にする
  5. command FISの構築 読み書きしよう 24/28 注意するパラメータ 1. c: コマンドなので 1 2.

    Device: よくわからなかったが、ネット上の サンプルから 1 « 6 に設定した。 3. Count: 1 セクタ単位での指定 4. Features: 0 で良さそう 5. Command: ATA の仕様書を見て決定、自分は READ DMA EXT と WRITE DMA EXT を使用