在内核模式程序中无法写入AHCI控制器上的SATA磁盘

时间:2016-12-11 22:18:28

标签: c hardware-interface kernel-mode sata ata

我正在编写一个实验性的内核模式程序来测试一些东西。我想对连接到AHCI控制器的SATA磁盘执行IO操作。我有一个C驱动程序,以前在另一个类似的项目上工作,该项目在我不再拥有的另一台PC上运行。我现在拥有的PC是配备ICH9芯片组的惠普笔记本电脑。所有读取和写入都是2个扇区,每次发生一次,因此它发出正常的LBA48 DMA读/写命令(No NCQ)并获得信号完成的中断。阅读按预期完美地运作,但写作失败的时间是100%。 PxSERR保持为零,但TFES位在PxIS中亮起。器件在错误寄存器中显示0x84(接口CRC错误,命令中止)和状态寄存器中的0x51(错误,寻道完成,器件就绪)。这似乎指向布线问题或类似的硬件问题,但Linux在同一设备上读取或写入同一分区没有问题,并且BIOS内置磁盘测试报告磁盘正常工作。向设备发送指定较低DMA模式的SET FEATURES命令没有任何区别,Linux报告无论如何都将设备置于UDMA / 133模式。 (这甚至与SATA有关吗?)无论如何,任何人都可以想到我缺少的东西吗?

0 个答案:

没有答案