Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1872 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Accés materiel C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Accés materiel C++

n°1997115
dr-i
Posté le 29-05-2010 à 20:44:27  profilanswer
 

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
mood
Publicité
Posté le 29-05-2010 à 20:44:27  profilanswer
 

n°1997238
ptitchep
Posté le 30-05-2010 à 12:16:59  profilanswer
 

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
n°1997251
dr-i
Posté le 30-05-2010 à 13:46:42  profilanswer
 

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.

n°1997255
Un Program​meur
Posté le 30-05-2010 à 13:56:22  profilanswer
 

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)
n°1997268
dr-i
Posté le 30-05-2010 à 14:49:13  profilanswer
 

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?

n°1997296
breizhbugs
Posté le 30-05-2010 à 19:29:19  profilanswer
 

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...

n°1997314
dr-i
Posté le 30-05-2010 à 21:02:26  profilanswer
 

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.

n°1997318
Un Program​meur
Posté le 30-05-2010 à 21:25:40  profilanswer
 

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)
n°1997331
dr-i
Posté le 30-05-2010 à 22:07:07  profilanswer
 

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.

n°2000141
Lightness1​024
Posté le 09-06-2010 à 10:58:44  profilanswer
 

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/
mood
Publicité
Posté le 09-06-2010 à 10:58:44  profilanswer
 

n°2000247
dr-i
Posté le 09-06-2010 à 14:55:06  profilanswer
 

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?

n°2001230
karlkox
Posté le 13-06-2010 à 03:08:01  profilanswer
 

TLB  :??:

n°2001286
dr-i
Posté le 13-06-2010 à 14:55:41  profilanswer
 

je vais jeter un oeil à ça!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Accés materiel C++

 

Sujets relatifs
[R/Java/C++] Utiliser le moteur de rendu graphique R dans une appliAcces - Ouverture de Formulaire
[C] Probleme swap liste double chainée[C] Allumer LED avec PIC18F4580
Débutant aide C++[Objective-C] Gestion de la mémoire
[C++] Prototype méthode membre de classe templateInternationaliser mon application C#
[C#][WOrd 2003] Modifier fichier WordFlottants en C
Plus de sujets relatifs à : Accés materiel C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR