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 :

Création driver en C


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4
    Par défaut Création driver en C
    Bonjour à tous,

    je suis nouveau sur le forum et totalement débutant en C (euh, j'ai déjà fais mon "Hello world" ;-) ).

    Ce qui m'amène sur ce forum aujourd'hui, outre le fait de vouloir apprendre à programmer en C (j'ai télécharger les tutoriels), est que je voudrais pouvoir soit créer un driver, soit "modifier" les sources linux d'un driver existant pour faire fonctionner le chipset ethernet intégré à ma carte mère sous BeOS.

    C'est un 'VIA Velocity Family Gigabit Ethernet Adapter' (chipset VT6122/VT6103L), et les seuls drivers existants sont sous Windows, Novell, Linux, Unix et Mac.

    BeOS ne faisant partie d'aucune famille des systèmes d'exploitation que je viens de citer, il n'y a pas de "driver compatible".

    Cela m'ennuierais de devoir désactiver la carte réseau intégrée à ma carte mère pour mettre une carte PCI reconnue.

    Non pas que j'ai "besoin" du Gigabit, je n'ai qu'un réseau de 2 pc et une connection internet qui atteint péniblement les 10 Mbps (les 10 ou 100 Mbps de ma carte me suffisent); mais autant utiliser "ce qui est en place", si je puis dire.


    Bref, je voudrais savoir comment programmer un driver réseau, les infos de ma carte dont j'ai besoin (j'ai déjà l' ID Vendor; l'ID Device, l'IRQ et les plages E/S et mémoires) ?

    Je voudrais savoir aussi si il est possible (et assez simple) de modifier les sources de ce driver prévu pour un autre système d'exploitation (j'ai les sources du driver Linux) ??

    J'ai du temps devant moi, je n'ai pas peur d'y passer des heures (voir des jours), alors si vous pouvez m'aider, ce serait sympa.


    Merci déjà d'avoir lu tout ça


    Niko

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Création driver en C
    Citation Envoyé par NeedHelp
    je suis nouveau sur le forum et totalement débutant en C (euh, j'ai déjà fais mon "Hello world" ;-) ).
    Et tu as tout compris ?

    http://emmanuel-delahaye.developpez.com/init_c.htm
    Ce qui m'amène sur ce forum aujourd'hui, outre le fait de vouloir apprendre à programmer en C (j'ai télécharger les tutoriels), est que je voudrais pouvoir soit créer un driver, soit "modifier" les sources linux d'un driver existant pour faire fonctionner le chipset ethernet intégré à ma carte mère sous BeOS.
    Ce n'est pas une question sur le langage C...

    Ecrire un driver, c'est compliqué. Il y a plusieurs champs de connaissances à maitriser et surtout à bien délilmiter, car ils font appels à des ressources et à des techniques différentes.
    • Le fonctionnement du matériel (registres de commandes et d'état, interface physique, interruptions, comportement, etc.)
    • L'integration du matériel dans l'architecture de la machine (espace mémoire, MMU, bus I/O etc.)
    • L'interface avec le système (SPI ou System Programming Interface) : regles de codage et de mise en oeuvre.
    • L'interface avec l'application (API ou Application Programming Interface) : constantes, structures, fonctions, comportement, code d'erreur...

    C'est un 'VIA Velocity Family Gigabit Ethernet Adapter' (chipset VT6122/VT6103L), et les seuls drivers existants sont sous Windows, Novell, Linux, Unix et Mac.

    BeOS ne faisant partie d'aucune famille des systèmes d'exploitation que je viens de citer, il n'y a pas de "driver compatible".
    Le buit est donc d'écrire un driver pour cette carte sous BeOS et ce, pour une machine particulière, c'est bien ça ?
    Cela m'ennuierais de devoir désactiver la carte réseau intégrée à ma carte mère pour mettre une carte PCI reconnue.
    Ce serait pourtant la solution la plus sage. Parce que se lancer dans le développement d'un driver BeOS pour une carte peu connue en connaissant à peine "Hello world" en C... Franchement j'y crois pas... (les drivers 'BLOCK' Linux branchés sur les cartes réseau sont particulièrement complexes, notamment les mécanismes de bufférisation haut débit)
    Non pas que j'ai "besoin" du Gigabit, je n'ai qu'un réseau de 2 pc et une connection internet qui atteint péniblement les 10 Mbps (les 10 ou 100 Mbps de ma carte me suffisent); mais autant utiliser "ce qui est en place", si je puis dire.

    Bref, je voudrais savoir comment programmer un driver réseau, les infos de ma carte dont j'ai besoin (j'ai déjà l' ID Vendor; l'ID Device, l'IRQ et les plages E/S et mémoires) ?
    Ca peut aider, effectivement.
    Je voudrais savoir aussi si il est possible (et assez simple) de modifier les sources de ce driver prévu pour un autre système d'exploitation (j'ai les sources du driver Linux) ??
    Simple, non. Certaines parties devraient être récupérables, d'autres non (ça dépend comment c'est codé). Il faut d'abord comprendre comment sont organisés les modules linux (forum "Développement Linux" pour les détails) et les drivers BeOS (j'espère que tu as les documents adéquates).
    J'ai du temps devant moi, je n'ai pas peur d'y passer des heures (voir des jours), alors si vous pouvez m'aider, ce serait sympa.
    Le gros problème est la mise au point du driver. Il faut en effet une autre machine de référence sachant emettre et recevoir les trames qui vont bien, avec les outils d'analyse adaptés (EtherReal, par exemple)...

    Je doute fort que ce soit à la porté du premier amateur venu, fusse-t-il génial...

    Evalue bien la charge avant de te lancer. N'essais pas de manger d'un coup un poisson si gros qu'il pourrait t'étouffer...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4
    Par défaut
    je suis nouveau sur le forum et totalement débutant en C (euh, j'ai déjà fais mon "Hello world" Wink ).
    Et tu as tout compris ?
    Euh...On va dire oui !



    Ce n'est pas une question sur le langage C...
    Un driver est bien programmé en langage C, non ?



    Ecrire un driver, c'est compliqué. Il y a plusieurs champs de connaissances à maitriser et surtout à bien délilmiter, car il font appels à des ressources et à des techniques différentes.

    * Le fonctionnement du matériel (registres de commandes et d'état, interface physique, interruptions, comportement, etc.)
    * L'integration du matériel dans l'architecture de la machine (espace mémoire, MMU, bus I/O etc.)
    * L'interface avec le système (SPI ou System Programming Interface) : regles de codage et de mise en oeuvre.
    * L'interface avec l'application (API ou Application Programming Interface) : constantes, structures, fonctions, comportement, code d'erreur...
    Tout ça, je peux le savoir comment, le trouver où ?


    Le but est donc d'écrire un driver pour cette carte sous BeOS et ce, pour une machine particulière, c'est bien ça ?
    Oui !



    Parce que se lancer dans le développement d'un driver BeOS pour une carte peu connue en connaissant à peine "Hello world" en C... Franchement j'y crois pas...
    PESSIMISTE ! (LOL)



    Certaines parties devraient être récupérables, d'autres non... Il faut d'abord comprendre comment sont organisés les modules linux et les drivers BeOS
    Pour BeOS, j'ai récupéré un driver pour la 'VIA Rhine/Rhine II' (VT6102 et 6103); si je "récupères" certaines parties du driver linux, je pourrais les inclures ??

    Un driver écrit en C doit avoir la même structure quel que soit le système d'exploitation, non ?


    Je doute fort que ce soit à la porté du premier amateur venu
    Ne crois pas que je me lance dans la programmation en C sans savoir ce qu'est le C, ni sans savoir la complexité du langage.

    Je sais que je me lance dans une série de "migraines carabinée" et que je ferais mieux de faire comme tout le monde et de commencer par bien comprendre et tenter de maitrîser les fonctions avant de vouloir programmer.

    Mais "qui ne tente rien, n'a rien"


    Vala !






  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par NeedHelp
    Ce n'est pas une question sur le langage C...
    Un driver est bien programmé en langage C, non ?
    Et ? Il y a des millions d'applications programmées en C. Ca n'en fait pas des sujets sur le langage C. De plus, le code écrit fait souvent appel à des extensions particulières, voire de l'assembleur pour les points délicats... Ce n'est en tout cas sûrement pas du C standard.

    Ecrire un driver, c'est compliqué. Il y a plusieurs champs de connaissances à maitriser et surtout à bien délilmiter, car il font appels à des ressources et à des techniques différentes.

    * Le fonctionnement du matériel (registres de commandes et d'état, interface physique, interruptions, comportement, etc.)
    * L'integration du matériel dans l'architecture de la machine (espace mémoire, MMU, bus I/O etc.)
    * L'interface avec le système (SPI ou System Programming Interface) : regles de codage et de mise en oeuvre.
    * L'interface avec l'application (API ou Application Programming Interface) : constantes, structures, fonctions, comportement, code d'erreur...
    Tout ça, je peux le savoir comment, le trouver où ?
    C'est un métier ! Doc des constructeurs...
    Pour BeOS, j'ai récupéré un driver pour la 'VIA Rhine/Rhine II' (VT6102 et 6103); si je "récupères" certaines parties du driver linux, je pourrais les inclures ??

    Un driver écrit en C doit avoir la même structure quel que soit le système d'exploitation, non ?
    Non. La structure d'un driver est une caractéristique d'un système donné. Un driver est une sorte d'ajout standardisé à un système (du moins le coté SPI). Coté matériel, ben comme déjà expliqué, ça dépend du matériel lui même et de l'architecture de la machine. Renseigne toi sur ce qu'est un driver exactement (Linux : voir 'module').

  5. #5
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    Citation Envoyé par NeedHelp
    Un driver écrit en C doit avoir la même structure quel que soit le système d'exploitation, non ?
    Ahaha.... Non.
    Pour avoir vu le portage d'un driver de carte Wifi entre un BSD et un Linux, je peux te dire que c'était pas de la tarte... Et pourtant, on _pourrait_ penser que ces systèmes sont proches... Alors BeOS + débutant....
    Je n'aurais qu'une chose à dire :
    Bonne chance !
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Créer un drivers ce n'est certes pas impossible mais de le faire en étant débutant, là j'y crois pas du tout non plus, le mieux a mon umble avis c'est d'abord de bien connaitre son langage avant d'aller à un tel niveau, surtout si tu n'as vu que le Hello World
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4
    Par défaut
    Il est vrai que pour un néophyte comme je le suis, un langage de programmation "semble" être le même d'un système à un autre (je ne parle pas des diffèrents langages C (Borland, Microsoft, etc...)).

    Et je vous avouerais que j'ai un peu vu la chose avec le même genre de vision que pour apprendre une langue orale (ex.: l'anglais), à savoir que l'on apprend mieux (et peut-être plus vite ?) en étant "plongé" directement dans un milieu ne parlant que la langue (ex.: pour l'anglais --> un long séjour en Angleterre).

    Si j'avais demandé, dans un forum adéquat, comment programmer un driver en assembleur, ou dans un autre langage que le C, aurais-je eu les mêmes réponses ?

    Je veux dire, est-ce le fait de vouloir faire un driver ? Est-ce qu'un autre programme poserait moins de problèmes ?

    Si je pose toutes ces questions, ce n'est pas pour vous embêter, c'est parce que cela m'intéresse.


    Niko


    P.S.:
    surtout si tu n'as vu que le Hello World
    J'avance...J'en suis à "Multiplier la somme de a + b" (avec la variable de type 'float')

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par NeedHelp
    Je veux dire, est-ce le fait de vouloir faire un driver ? Est-ce qu'un autre programme poserait moins de problèmes ?
    Certainement, oui. Le problème n'est pas le langage C, qui n'est qu'un outil relativement simple (mais coupant!), mais le projet 'driver' qui met en oeuvre des techniques complexes qui vont bien au-delà de la simple connaissance du langage C... comme il me semble te l'avoir déjà expliqué, non ?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4
    Par défaut
    Oui, tout à fait Emmanuel.

    Bon, ben je n'ai plus qu'à prendre mon mal en patience et me plongé plus "ardument" dans les cours.

    Peut-être qu'un jour, j'arriverais à programmer quelquechose ??


    En attendant, je vous remercie tous pour avoir bien voulu me répondre en m'expliquant les "problèmes" que j'aurais rencontrés en me lançant "à l'aveuglette" dans la programmation d'un driver, sans m'avoir "envoyé balader".

    Niko

Discussions similaires

  1. création pour un driver d'un lcd sous lcd
    Par kris1 dans le forum Linux
    Réponses: 0
    Dernier message: 14/03/2008, 10h49
  2. Création de drivers sous XPe
    Par Guig74 dans le forum Windows XP
    Réponses: 2
    Dernier message: 27/03/2007, 17h44
  3. DDK - création de drivers sous XP -Fichier INF
    Par MisterMok dans le forum Windows
    Réponses: 1
    Dernier message: 02/02/2007, 09h59

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