Здравствуйте, Уважаемые . Вопрос вот в чём. В статье http://wasm.ru/article.php?article=1013001 говорится, что ROM_SCAN сканирует диапазон адресов C800:0h – E000:0h на наличие слова AA55h. Так вот - как моё ПЗУ отображается в это адресное пространство? Кто этим занимается в системе? Кто решает вопрос разделения этого диапазона адресов между разными ПЗУ? ПЗУ у меня на PCI-плате, хотя интересен было бы узнать в общем случае. Заранее спасибо!
В общем случае занимается северный мост, а именно контроллер памяти. И все это настраивает биос. А так частично описано в спецификации PCI.
То есть какой адрес получит моё ПЗУ, от меня не зависит? Или я всё же могу подключить дескриптор адреса к шине адреса PCI, выход на CS ПЗУ и т.д. и перехватить управление?
По этому поводу надо читать спецификации PCI и PCI BIOS. В особенности надо обратить внимание на такую весчь, как конфигурационное пространство PCI. Это такая 256 байтовая структура, которая имеется у каждого PCI устройства и содержит всю информацию о нём, в том числе и занимаемые память, порты и прерывания. Часть этой инфы изменяется биосом (почитай биос настраивает устройство) а часть остаётся неизменной. Вот тут есть немного инфы: http://wiki.osdev.ru/index.php/%D0%9A%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2_PCI
em0use По стандарту не зависит. Хотя если и материна вся твоя(твой компьютер) ты разработчик то можно как фирмваре. Попробуй. Но перехватить не получится без настройки контроллера памяти не выйдет он сигнал завернет в RAM, а не в PCI. Нужна дырка.
Нашёл грамотную статью. Помогла получить цельное представление. Там вот только конфигурационные транзакции PCI-устройства не описаны. Тут, видимо, читать спецификацию PCI надо. В общем, может, кто-то столкнётся с подобной проблемой. Вот: http://zonehelp.ru/article/read/programming_rom_bios.html