1

いくつかのことをテストするために、実験的なカーネル モード プログラムを作成しています。AHCI コントローラに接続された SATA ディスクとの間で IO を実行したいと考えています。私は、もう持っていない別の PC で実行された別の同様のプロジェクトで以前に働いていた C ドライバーを持っています。私が今持っている PC は、ICH9 チップセットを搭載した HP ラップトップです。すべての読み取りと書き込みはサイズが 2 セクターで、一度に 1 つずつ発生するため、通常の LBA48 DMA 読み取り/書き込みコマンド (NCQ なし) を発行し、割り込みを取得して完了を通知します。読み取りは期待どおりに完全に機能しますが、書き込みは 100% の確率で失敗します。PxSERR はゼロのままですが、PxIS で TFES ビットが点灯します。デバイスは、エラー レジスタに 0x84 (インターフェイス CRC エラー、コマンドが中止されました) を示し、ステータス レジスタに 0x51 (エラー、シーク完了、デバイス準備完了) を示します。これは、ケーブル接続の問題または同様のハードウェアの問題を示しているようです。しかし、Linux では、同じデバイス上の同じパーティションへの読み取りまたは書き込みに問題はなく、BIOS の組み込みディスク テストでは、ディスクが正常に動作していると報告されています。下位の DMA モードを指定する SET FEATURES コマンドをデバイスに送信しても違いはなく、Linux はとにかくデバイスを UDMA/133 モードにすると報告します。(これは SATA にも関係がありますか?)

4

0 に答える 0