Можете ли вы получить доступ к PCI-картам (32 бита) в «реальном режиме»? - PullRequest
1 голос
/ 24 сентября 2011

Можете ли вы получить доступ к PCI-картам (32 бита) в «реальном режиме»? Разве "реальный режим" не 16 бит? У меня есть разработчик, утверждающий, что он может получить доступ только к оборудованию в режиме реального времени. Но PCI это 32 бита ...

1 Ответ

1 голос
/ 21 марта 2012

Да, вы можете.

Порты ввода-вывода 0xCF8 и 0xCF9 действуют как индексы и регистры данных для доступа к пространству конфигурации PCI. Адрес, который должен быть записан в регистр индекса (то есть 0xCF8), имеет фиксированный предопределенный формат (см. Спецификацию PCI). Чтобы получить доступ к данным конфигурации pci, кто-то пишет в регистр индекса, а затем читает из регистра данных.

The Index register is a DWORD (32-bit) register and the format is:

Byte-3 = 0x80
Byte-2 = Bus No
Byte-1 = Upper 5 bits as DEVICE no, and lower 3 bits as FUNCTION no.
Byte-0 = Register no. to read from config space

Итак, для чтения с шины: 0 Устройство: 0 Функция: 0 регистр: 0 в реальном режиме, вы бы сказали:

IoPortWrite32(0xCF8, 0x80000000);
ValueRead = IoPortRead32(0xCFC);

Надеюсь, это поможет!

Спасибо, Рохит

...