Skip to content

os-ak/tuatOS

Repository files navigation

OS

disk controller 21日目から

参考URL

Read/Write Sectors(PIO)

注意事項

  • 512byteの倍数分メモリが確保されている前提で動く。確保してない場合の動作は保証しない
  • hariboteではintサイズ4byte,shortサイズ2byte
  • device番号は 0 のみ想定
  • ATAPIだった時の動作は保証しない
  • Read/WriteでINTRQの発生タイミングは異なる SEAGATE ATA reference
  • INTRQの総数と読み書きしたセクタ数は同じ値 (MULTIMODEは別)

Read/Write Sectors

セクタ数が増えるにつれ、INTRQ増加。

  • ide_ata_read_sector_pio(device, LBA, 読み込むセクタの数, メモリの先頭アドレス)
  • ide_ata_write_sector_pio(device, LBA, 書き込むセクタの数, メモリの先頭アドレス)

Read/Write Sectors(Multiple)

Set Multipleコマンドで何セクタごとにINTRQを発生させるか設定したのち、
読み書き実行。ただし、設定したセクタ数とちょうどのセクタを読み書きした場合は
コマンド実行完了時の割り込みのみが発生する。(設定したセクタ数以下の読み書きでは特別な割り込みなし)

  • int ide_set_multimode(int device, int sec_cnt)
  • ide_ata_read_multiple_sector_pio(device, LBA, 読み込むセクタの数, メモリの先頭アドレス)
  • ide_ata_write_multiple_sector_pio(device, LBA, 書き込むセクタの数, メモリの先頭アドレス)

動作確認

  • writeに関しては、vdiファイルをhexdumpで確認できる。
  • readとかのテストはbootpack.cに記述してる。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published