我正在为带有SATA AHCI控制器的PC调试第二阶段引导加载程序。我能够枚举PCI总线并找到硬盘。到现在为止还挺好。现在,我的笔记本电脑中的lspci(戴尔Inspiron 1525)告诉我:
-[0000:00]-+-1f.0 Intel Corporation 82801HEM (ICH8M) LPC Interface Controller
+-1f.1 Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller
+-1f.2 Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller
\-1f.3 Intel Corporation 82801H (ICH8 Family) SMBus Controller
我的问题:SATA AHCI控制器在任何PC中总是运行2吗?如果没有,我是怎么找到的?
我不假装是一般的;启动我的笔记本将足够好,不会进一步改进。
答案 0 :(得分:1)
兼容的SATA AHCI控制器应始终具有设备类1(存储控制器)子类6(串行ATA)和接口1(AHCI)。因此,正确的策略是枚举所有PCI设备并比较它们的类,子类和接口以识别实现AHCI的那些设备。请注意,可能有多个,具体取决于主板以及是否插入任何其他AHCI卡。
您可能还希望允许代码通过供应商和设备ID与AHCI控制器匹配,因为某些早期AHCI控制器没有相应的类/子类/接口集。