2010-06-10 6 views
3

J'ai une fonction BIOS que j'ai besoin d'appeler de temps en temps sur un système embarqué, et en utilisant LRMI, j'ai réussi à l'appeler à partir d'un programme utilisateur. Maintenant, je veux faire la même chose à partir d'un module de noyau chargeable.Linux Real Mode Interface dans un module noyau Linux

Y at-il un moyen de le faire? Une autre bibliothèque peut-être?

+0

Le système embarqué utilise le BIOS? Quel genre de système embarqué? – Daniel

+0

Si c'est un système embarqué, vous devriez trouver une solution de rechange. Peut-être que vous devriez expliquer pourquoi vous voulez appeler le BIOS de Linux? Par exemple, si vous essayez de reflasher le BIOS, alors vous pourriez peut-être démarrer dans une partition DOS pour faire le travail. – BraveNewCurrency

Répondre

0

Cela a à voir avec le mode dans lequel se trouve le processeur (qui est le mode protégé, qui est activé après que bios a initialisé toutes les ressources). Afin d'utiliser à nouveau les interruptions du BIOS, vous devrez utiliser le mode v8086, qui est celui où le processeur émule une machine en mode réel 16 bits. Vous pouvez ensuite définir vos registres et appeler votre interruption avec un programme en mode virtuel.

Voici comment entrer en mode virtuel: http://www.brokenthorn.com/Resources/OSDev23.html

Vous pouvez également essayer de passer en mode réel, mais cela implique la réinitialisation du processeur. Je ne sais pas comment vous feriez cela par programme, puisque vous ne pouvez probablement pas.

+0

En fait, LRMI mettra probablement la CPU dans l'état v8086 automatiquement afin d'atteindre les appels du BIOS. Si vous voulez faire cela manuellement, une recherche rapide devrait vous aider à le comprendre, même si apparemment c'est un b'eotch. – Magn3s1um

Questions connexes