Comment fonctionnent les extensions du BIOS (ROM optionnelles)? Je comprends qu'un périphérique installé peut avoir son propre BIOS qui ajoute des fonctionnalités au système, mais je ne suis pas sûr de la façon dont elles sont configurées.
Je ne cesse de lire les adresses suivantes. La plage d'adresses 0x0C0000 à 0x0F0000 est utilisée mais je ne comprends pas pourquoi. C'est comme si les ROM étaient stockées à ces adresses mais je ne vois pas comment cela fonctionnerait. Que se passe-t-il si vous avez installé 2 périphériques qui devraient être à 0x0C0000?
Ensuite, le BIOS passe à la ROM d’option et commence à fonctionner à partir de là. Ma question suivante est que, lorsque la ROM écrit dans la table des vecteurs d’interruption et connecte une interruption pour pointer sur elle-même, à quelle adresse correspond-elle?
Par exemple, sur une carte VGA, à quelle adresse doit-on accrocher INT 10h?
Ou est-ce que la ROM optionnelle entière est mappée dans une zone comprise entre 0x0C0000 et 0x0F0000 et que l'IVT pointe quelque part dans cette plage?
Je sais que cela concerne les technologies plus anciennes qui ne sont plus utilisées (par exemple, l’utilisation d’interruptions), mais je voudrais savoir comment elles fonctionnent.
Si quelqu'un peut aider à répondre aux questions ci-dessus ou simplement donner un bref aperçu, il serait grandement apprécié.
Merci
la source
Réponses:
À l'époque IBM PC, avec le bus ISA, chaque périphérique devait simplement utiliser une adresse différente. Souvent, ils avaient des cavaliers matériels ou des commutateurs DIP que vous pouviez configurer pour changer l'adresse afin d'éviter les conflits. Avec l'avènement du bus PCI, les adresses matérielles sont configurées automatiquement par le système BIOS pour attribuer une adresse unique à chaque périphérique.
Si l'oprom raccroche une interruption, il pointe vers une adresse dans l'adresse assignée à laquelle il appartient. Dans le cas du bios VGA, cela se trouvait normalement dans le bloc 0xC0000. À l'aide du débogueur msdos, vous pouvez inspecter la table des vecteurs d'interruption pour voir le point d'entrée et commencer à désassembler les instructions pour voir ce qu'elles ont fait.
la source