IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Interaction Materiel Native C++


Sujet :

C++

  1. #1
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut Interaction Materiel Native C++
    Bonjour à tous, je cherche à me faire un programme d'interaction matériel en ligne de commande.

    Existe t'il une librairie native C++ capable de trouver/scanner les éléments mis à dispositions par la CM?

    Existe t'il un moyen natif C++ capable de trouver les périphériques d'un pc?

    J'ai beau jouer avec C++ depuis quelques mois, je ne sais pas encore interagir avec le matériel sans passer par des API ou des librairies externes.

    Hors ce programme pourra être lancé depuis n'importe quel support avant l'OS donc pas question d'utiliser des librairies d'un système.

    Un peu comme memtest sous linux par exemple.
    J'ai regarder un peu les sources de memtest mais elles sont trop complexe et éparpillés.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Je ne sais pas ce que tu entends par 'natif'. S'il s'agit au sens intégré au langage : la réponse est clairement non.

  3. #3
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    Exactement j'entendais intégré au language.

    OK donc dans ce cas existe t'il un quelconque moyen de passer outre?
    Comment fait memtest?
    Comment faire pour détecter le matériel, interroger le BIOS etc sans avoir d'API?
    Existe t'il une librairie C++ (non native) capable de passer des appels directement au système sans passer par l'OS ou alors suis je condamné à utiliser HAL??

    Merci de votre aide.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    C'est + une problématique système qu'une problématique C++.
    Si tu veux que ce soit une application par dessus un OS qui accède au matériel, alors elle doit passer par l'API de l'OS ou une bibliothèque (qui in-fine passe par l'API de l'OS).
    Si tu veux avoir un accès direct au matériel, tu dois te mettre en mode noyau donc faire ton 'OS'.
    Je ne sais pas s'il y a possibilité d'accéder au matériel en mode utilisateur sans passer par l'OS. Ca m'étonnerait mais d'autres confirmeront ou infirmeront.

  5. #5
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    Hello, tout d'abord merci de ta reponse.

    Pour ce qui est de la partie OS pas de souci les API QT etc j'arrive à m'en servir.

    Ce que j'aimerais faire c'est un programme qui n'a besoin de personne pour scanner les elements materiel du pc.

    Dans un premier temps, juste detecter les elements me suffirais.
    J'ai vue qu'il existe des BIOS completements ecrits en C++ (OpenBIOSLinux etc).
    Comment font ils pour détecter quoique ce soit sans OS?

    Un noyau d'OS minimal est je pense encore trop important à coder, je suis tout seul pour le moment, je pense qu'un bootloader serais plus approprié.
    Disons qu'un Bootloader au moins ça ce charge tous seul et c'est capable de détecter au minimum les informations contenu sur un disque et de les charger en zone mémoire.

    En gros je cherche à maitriser le développement système, pour ce qui est des couches hautes, dans un système déjà actif pas de souci et puis avec Qt c'est vraiment intuitif (Merci pour les tutos C++ d'ailleurs).

    Par contre la partie basse, même si je sais comment elle fonctionne, reste pour moi assez trouble au niveau de la programmation et surtout au niveau des interactions.

  6. #6
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    Ouch, je connais pas beaucoup d'OS en C++ >< !

    En faite, la plupart du temps, on récupère des infos à une adresse précise du matériel. Une autre solution sont les drivers générique (normalisé, correspondant à un minimum de fonctionnement).

    Enfin, c'est plus de la programmation système que du C++.

    Sinon, avant de t'attaquer au difficile PC conventionnelle, je te conseil des truc plus simple pour le bas niveau >< !
    The mark of the immature man is that he wants to die nobly for a cause, while the mark of the mature man is that he wants to live humbly for one.
    --Wilhelm Stekel

  7. #7
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    BeOs (/haiku) a un noyau en C++ il me semble, et sinon +1 pour choisir une autre architecture..
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  8. #8
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    Citation Envoyé par Goten Voir le message
    BeOs (/haiku)
    Lui et Syllable sont les seul encore actif à se que je sache ><. D'ailleurs, ils sont open source si tu veux y jeter un oeil.
    The mark of the immature man is that he wants to die nobly for a cause, while the mark of the mature man is that he wants to live humbly for one.
    --Wilhelm Stekel

  9. #9
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    OK merci pour l'info.

    En fait je parlais pas de recréer un OS C++ hein faut pas rêver, je suis tout seul.

    Sinon qu'est ce que vous entendez par un truc plus simple que le pc?
    Je connais pas mal le fonctionnement de l'architecture x86/64, donc tant qu'à faire autant rester sur cette plateforme.

    Pour les drivers j'y avais pensé mais dans ce cas il vas me falloir une doc technique tel que celle fournis par Intel et AMD mais pour les disques durs etc, afin de voir si un comportement générique existe et surtout comment faire pour détecter ces éléments.

    Sinon on vas penser autrement, comment faire pour détecter du matériel sans pour autant l'identifier, par exemple comment faire pour dire:

    OK j'ai détecté X périphériques inconnue.

  10. #10
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    Du x86 ok, mais peut-être pas un truc avec un nombre impressionnant de périphérique externe et interne >< !

    Sinon, pour savoir s'il y a un périphérique, je pense qu'on peut demander au chip, mais c'est plus de l'assembleur. C'est toujours le même principe, lire des bytes d'adresse spécifique...

    Après, si tu n'as pas les .h qui font les defines qu'il faut, et un compilateur tuner pour ton architecture, c'est mal barré, il te faudra ingérer les docs souvent imbuvable et parfois indisponible des constructeurs >< !

    PS : lorsque c'est indisponible, on utilise des firmware... Pas facil à mettre en place d'ailleurs.

    PPS : Sur les PC "moderne", il va falloir que tu joue avec les north/southbridge pour toute opération entrée/sortie. Y a peut-être moyen de les court-circuité, mais je connais pas, trop compliquer >< ! Sinon, il faut au moins chargé leur driver/firmware à eux...

    PPPS : pour les comportements générique, ils doivent être défini dans un truc ISO ou autre. Je ne connais rien a part VESA pour les carte graphiques. Ce qui est sûr, c'est que tu ne devrais pas avoir trop de mal pour les DD, puisque même le bios arrive a faire quelque opération sur un disque. Le plus dure pour les DD, c'est le système de fichier .

    PPPPS : Qu'est-ce que tu cherches donc à faire si c'est pas un OS ?
    The mark of the immature man is that he wants to die nobly for a cause, while the mark of the mature man is that he wants to live humbly for one.
    --Wilhelm Stekel

  11. #11
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    OK merci des précisions.

    Je cherche simplement à apprendre les interactions possible avec le matériel.
    Pour les DDs etc le but serais de faire une programme autonome de test du matériel qu'il serait possible de lancer depuis un périphérique amovible sans pour autant avoir d'OS installer sur la machine à tester.

    La partie je met ma clé le bios boot dessus et le soft ce lance pas de souci, le hic c'est d'arriver à détecter les périphériques, je serais bien tenté de faire un appel au BIOS afin de connaitre les adresse des différents éléments en fait.

  12. #12
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Tu peux regarder du côté de ce projet, pour voir ce qu'ils font :

    http://www.hdt-project.org/

  13. #13
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    Merci, mais bon chez les programme sont sur un OS (linux).
    is a Syslinux com32 module
    Hors moi je veux pas avoir d'OS.

  14. #14
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Non, justement, c'est pas sur un OS à proprement parler. Syslinux, c'est plutôt un bootloader enrichissable.

  15. #15
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    En gros, tu as le bootloader et le logicielle, te manque juste le truc magique pour connaître les périphériques ?

    Je te conseil aussi la lecture de ça et ça.

    Et pour les disques, => Ressource geom.c Syslinux.

    Bonne continuation.
    The mark of the immature man is that he wants to die nobly for a cause, while the mark of the mature man is that he wants to live humbly for one.
    --Wilhelm Stekel

  16. #16
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 680
    Points
    680
    Par défaut
    OK merci les gars pour le moment je vais mettre en resolu le temps d'analyser tous ceci et de voir un peu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Interaction avec l'application native "mail"
    Par PP(Team) dans le forum Android
    Réponses: 1
    Dernier message: 03/04/2014, 10h11
  2. [CR] Interaction Etat/Sous Etat
    Par PAC76 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 03/06/2004, 16h21
  3. Réponses: 4
    Dernier message: 17/05/2004, 09h57
  4. interruption materiel port parrallele
    Par pyrostan dans le forum C
    Réponses: 2
    Dernier message: 13/01/2003, 08h22
  5. Réponses: 2
    Dernier message: 04/06/2002, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo