Accés materiel C++

Accés materiel C++ - C++ - Programmation

Marsh Posté le 29-05-2010 à 20:44:27    

Bien le bonsoir,
je suis actuellement en train de me former au c++, par contre il me viens une interrogation.
 
Comment peut-on, sans système d'exploitation, accéder aux différents périphériques d'un PC Intel/AMD x86 32Bits??
 
imaginons justement un logiciel tel que memtest ou autre logiciel de diagnostique, qui doivent ce charger de maniere autonome comme le ferait un OS finalement.
 
La je suis perdu je doit dire.  :whistle:


Message édité par dr-i le 30-05-2010 à 14:49:46
Reply

Marsh Posté le 29-05-2010 à 20:44:27   

Reply

Marsh Posté le 30-05-2010 à 12:16:59    

Salut
 
Pour Windows je ne sais pas mais sous Linux tu ne pourras avoir accès au matériel qu'en mode kernel normalement.


---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 30-05-2010 à 13:46:42    

Bah en fait le but c'est de ne pas utiliser d'OS du tout, programmer un soft qui n'a besoin de rien pour interroger le matos et interagir avec lui.

Reply

Marsh Posté le 30-05-2010 à 13:56:22    

Si tu travailles sans OS -- plutôt que sans passer par l'OS, ce qui suppose qu'il y en a un et généralement ceux-ci ne te laisse pas accéder au matériel directement -- il te faut te renseigner sur la manière dont chaque périphérique désire être programmé.  C'est assez fastidieux et n'a aucun rapport avec le C++.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 30-05-2010 à 14:49:13    

Il existe pas un standard? j'avais entendu parler des Interruptions et IRQ, ça vas dans ce sens?
 
Comment fait Memtest, pour accéder à la mémoire sans rien? Ils ont pas codé une méthode d'accès pour chaque mémoire quand même?
 
Je pensais qu'il existé une façon standard d'accès bas niveau aux différents périphériques.
 
Pour les CG / CPU / Memoires et HDD, il doit bien avoir une manière d'y accéder directement en C++ (au pire ASM) vue que de nouveaux BIOS entièrement en C++ sont capables de démarrer une machine.
 
Sinon, si il faut ce renseigner sur le matos c'est pas grave, mais que doit-je chercher?

Reply

Marsh Posté le 30-05-2010 à 19:29:19    

dr-i a écrit :


Comment fait Memtest, pour accéder à la mémoire sans rien? Ils ont pas codé une méthode d'accès pour chaque mémoire quand même?


Bonjour,
Memtest n'est il pas open-source? Dans ce cas il ne te reste qu'à regarder les sources...

Reply

Marsh Posté le 30-05-2010 à 21:02:26    

mouep, je vais voir ça.
 
Je pensais qu'il y'avait une façon théorique d'accéder au matériel sans passer par des chemins trop biscornue.
 
Mais je vais voir un peu les sources histoire de voir ce que ça donne.

Reply

Marsh Posté le 30-05-2010 à 21:25:40    

La mémoire est la mémoire, il n'y a rien à faire de particulier pour la lire ou y écrire.  A part qu'il faut savoir où il y a de la mémoire et où c'est des emplacements contrôlant les périphériques.  Et à part qu'il faut mettre en place les changements de mode nécessaires pour accéder à tout.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 30-05-2010 à 22:07:07    

Donc en gros il faut plutôt que je m'oriente vers le fonctionnement de la CM?
 
Parce que pour moi la mémoire est gérer par le cpu sur les cartes mères AMD et intel moderne si je ne m'abuse.
 
Donc perso je pensais utiliser la carte mères (les différents contrôleurs de celle-ci) et le CPU.

Reply

Marsh Posté le 09-06-2010 à 10:58:44    

oui m'enfin heureusement le bios à des fonctions qui "normalisent" ca comme tu dis. un vrai OS ne s'en sert pas il me semble mais pour un truc comme memtest ca permet de pas avoir trop de code.
memtest n'a pas d'OS sous jacent, c'est lui l'OS. et il accède a la mémoire en n'activant pas la MMU (mémoire virtuelle).
pour les HDD il y a le protocole IDE, pour la CG le protocole VESA, pour la carte son le "standard" sound blaster etc...
(en pratique il s'agit juste de mapper un bout de mémoire du périph e ecrire des trucs dedans, ils sont poll-és par la device qui réagi en fonction)
mais comme tout le monde le dit, faut etre en mode superuser pour avoir le droit de mapper ces bouts de mémoire. (car ca se fait sur différents bus, pci, dma, usb, southbridge...)


---------------
http://projets.6mablog.com/
Reply

Marsh Posté le 09-06-2010 à 10:58:44   

Reply

Marsh Posté le 09-06-2010 à 14:55:06    

Hello, merci pour tes infos, depuis le debut du poste j'ai tout de meme fait quelques recherches et trouvé differentes sources de donées (Chez AMD nottament).
 
Donc pour l'utilisation des périphériques, les OS ce base sur le BIOS en fait afin de savoir qui est ou.
Ils intérrogent le BIOS afin de savoir quels sont les adresses dispos, le montant de mémoire etc.
 
Par contre, ce qui me chagrine encore un peu, c'est de savoir comment le BIOS ou plutôt les fabricants décide de s'attribuer tel ou tel espace mémoire.
 
De même comment font ils pour que le CPU ou le BIOS physiquement ne ce trompe pas? je veux dire que les adresses mémoire sont virtuel, ce sont des représentations humaines, comment le composant fait pour trouver sa route dans tout ce dédale?

Reply

Marsh Posté le 13-06-2010 à 03:08:01    

TLB  :??:

Reply

Marsh Posté le 13-06-2010 à 14:55:41    

je vais jeter un oeil à ça!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed