2009-11-21 6 views
7

Je me demandais s'il était possible d'écrire un programme C pour changer la quantité de mémoire partagée entre la RAM et une carte GFX, ou en général comment puis-je contacter le Les paramètres du BIOS?Modifier les paramètres du BIOS en utilisant le langage C

+0

http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.vc .langue et tid = f5c02216-01e2-46d4-8c99-ac6a5981313c & cat = & lang = & cr = & sloc = & p = 1 – Xinus

+1

Je pense que ce n'est pas bon de faire cela, "Ne fais pas ça" –

+0

Potentiellement dangereux pour la santé des machines. Ne fais pas ça. – ty812

Répondre

10

Réponse courte: Non

de Réponse longue: Ne jouez pas avec le BIOS de l'utilisateur. Il y a une raison pour laquelle il n'y a pas d'API ou similaire pour le faire. Mon ordinateur, mes paramètres.

13

Vous pouvez accéder aux paramètres du BIOS via les ports d'E/S 70h et 71h. (Certains chipsets ont également un CMOS étendu à 72/73 ou similaire.)

Quel système d'exploitation utilisez-vous? Si vous exécutez Windows, vous ne pourrez pas faire d'E/S de port directement à partir d'une application, vous devrez écrire un pilote en mode noyau ou utiliser une boîte à outils tierce comme WinIO. Sous Linux, vous pouvez utiliser/dev/nvram pour obtenir les paramètres CMOS. (En supposant que le pilote Linux nvram prend en charge votre chipset, sinon utilisez/dev/port.)

Une fois que vous aurez atteint les bits CMOS, la prochaine tâche consistera à déterminer quel emplacement dans CMOS correspond au paramètre de mémoire vidéo.

est ici un (lamentablement incomplète) carte des emplacements de mémoire CMOS: http://ivs.cs.uni-magdeburg.de/~zbrog/asm/cmos.html

La carte des emplacements CMOS est extrêmement spécifique à la carte mère, BIOS et BIOS rev. (La carte CMOS peut changer entre les tours du BIOS lorsque de nouvelles options de menu sont ajoutées/supprimées.) Votre fournisseur de carte mère peut peut-être vous fournir une carte CMOS. Ils ont les outils pour générer une telle carte (cela fait partie du processus de compilation du BIOS), mais ils peuvent ne pas vouloir le partager.

Sans carte, il existe d'autres méthodes pour déterminer quels bits dans CMOS représentent la taille de la mémoire vidéo. Essayez de supprimer les paramètres CMOS avec différentes tailles de mémoire et déterminez les bits qui changent.

Quelques autres détails:

  1. En dehors de quelques bits de CMOS « standard », la plupart d'entre eux sont extrêmement dépendant de la plateforme, je l'espère vous ne prévoyez pas de faire une application à usage général de cette .

  2. Il existe des totaux de contrôle pour certains décalages dans CMOS. Après avoir modifié la valeur CMOS, vous devrez corriger la somme de contrôle pour refléter les modifications.

  3. Une fois que vous modifiez le paramètre, il ne prendra pas effet au redémarrage suivant (lorsque le BIOS lit les paramètres CMOS et initialise le chipset).

  4. Est-ce un chipset Intel? Les cœurs graphiques Intel ont une fonction magique appelée DVMT (Dynamic Video Memory Technology) qui ajuste l'utilisation de la mémoire vidéo en fonction de l'intensité de l'application en cours d'exécution. http://www.intel.com/support/graphics/sb/cs-010488.htm Je ne suis pas sûr si d'autres fournisseurs de chipsets ont une technologie similaire.

  5. Jeter tout cela sur la fenêtre sur un système UEFI moderne, qui utilise généralement une partition de stockage non volatile dans la puce flash du BIOS pour les paramètres. (Certains endroits CMOS sont peuplées de compatibilité héritée sur un système UEFI.)

Questions connexes