Création de driver - Divers - Programmation
Marsh Posté le 19-05-2025 à 14:37:50
Avé. Je déterre ce sujet d'il y a 15 ans, veuillez m'en excuser car j'ai un problème similaire. Je suppose que Shiii est maintenant mort et enterré, mais peut-être que de ressortir ce sujet et le résoudre peut être un hommage à sa gloire posthume !
Alors voilà, mon problème est cependant un peu différent. Je souhaite créer un driver, afin de prendre en charge ma carte mère, ou le module wifi (ou "carte réseau" ) sur ma carte mère ?
Alors ma question est la suivante : comment coder ce driver (le programme), dans quel langage, et où le placer ? (dans quel fichier ou répertoire, quel registre etc...)
Et aussi, comment faire en sorte que ce driver s'exécute, lorsque justement on active le module wifi, ou branche la carte ou le périphérique, comme disait Shiii.
Il me semble qu'il faut peut-être modifier (ajouter) des lignes aux fichiers de configuration autoexec.bat ou config.sys aussi ? Enfin je ne sais pas trop...
Je suis sous Windows 7, mais j'ai aussi une partition Linux. Je voudrais coder un petit programme pour un peu tous les principaux systèmes, Windows Linux et Androïd, vieilles et nouvelles versions.
Merci, dans l'attente de vous lire, ou de reconvoquer Shiii depuis le séjour des morts (où il a peut-être trouvé la solution finalement !). Et espérant que cette tâche ne sera pas trop complexe aussi pour mes modestes moyens car je n'ai pas la science infuse de certains.
Infogiver
Marsh Posté le 19-05-2025 à 15:24:49
Laisse tomber. Les pilotes c'est des trucs très compliqués, il faut connaître par coeur l'API du OS (c'est hautement dépendant de l'OS; impossible de faire un pilote universel!) et aussi avoir de la doc (des centaines voir miliers de pages!) du module Wifi.
Donc soit tu trouves un truc tout fait, soit tu changes de carte Wifi (et d'OS en passant, W7 est mort et enterré aussi!).
Par contre prudence: Un driver "random" pris sur internet il y a une probabilité non-nulle qu'il contient un virus ou autre! Un driver/pilote c'est du code qui s'exécute avec les privilèges système.
Marsh Posté le 20-05-2025 à 20:50:57
Merci, rat de combat.
Alors j'ai trouvé des fichiers avec l'extension .sys quand même dans le répertoire 'driver' du dossier 'System32' de Windows 7 ; et puis .dll ou même .drv.
J'ai l'impression que c'est de l'assembleur, ce sont des groupes bizarroïdes de 3 lettres avec des signes et symboles.
Peut-être des fichiers " cryptés" ?
J'ai vu des fichiers de description aussi, avec des trucs genre fichiers de configuration (une variable, le signe = et une valeur tout simplement -en mode texte-).
L'API on l'a devant nous, avec l'arborescence windows. Ça ne doit pas être bien compliqué ;
il faut trouver le code et puis comment identifier les ressources matérielles (périphériques,...)
Il faut trouver comment c'est imbriqué, la dépendance des fichiers, etc...
Je ne suppose pas que tout est dans systeme32 aussi, ça doit être disséminé un peu partout.
Il faut trouver l'arbre des dépendances et l'ordre de lancement des processus et conf, éxécutables windows petit à petit en fonction du matériel
.
Marsh Posté le 20-05-2025 à 21:50:28
Non, comme je disais dans mon MP tu sous-estimes très largement la chose. Laisse tomber, tu n'as aucune chance de réussir et tu sera frustré à mort si tu y passes beaucoup de temps avant d'échouer.
.dll (et .sys aussi je crois, connais pas Windows) == language machine, donc code C compilé (ou assembleur ou ...).
Marsh Posté le 21-05-2025 à 07:08:59
Ok, oui tu as raison c'est compliqué de programmer un driver. En fait il faut comprendre tout le code du système d'exploitation Windows. C'est à dire être en mesure de reprogrammer un système. C'est à dire faire de l'ombre à Bill et à Linus. C'est pour ça que Shiii n'a jamais eu de réponse.
Allez, je vais m'y mettre (et poster ici). Mais il faut du soutien. Si les non-programmeurs peuvent faire des comment et faire avancer le programme... c'est aussi eux, par leurs questions innocentes qui feront le code (moi j'essaierai de l'écrire -et vous autres !-). May the force be with us !
Marsh Posté le 21-05-2025 à 08:28:41
Surtout en commençant par chercher du côté de config.sys et autoexec.bat sous Windows 7
Bon, pour être clair, vu tes questions et même avec beaucoup d'acharnement il n'y a absolument aucune chance que tu pondes un driver avant d'être toi même mort et enterré pour reprendre ton expression.
Par contre, ton machin que tu veux faire marcher, vu qu'il existe, il y a forcément des gens qui se sont donnés la peine de lui en écrire un de driver, sinon il n'est pas très utile.
Donc si on repartait plutôt de la question de base et que tu nous disais déjà ce que tu cherches à installer sur quoi exactement ?
Dans la bonne cat du forum de préférence.
C'est plus facile. Un peu comme quand tu as besoin d'une voiture et que tu décides d'en acheter une plutôt qu'en fabriquer une toi-même avec des trucs trouvés dans les tiroirs de ta cuisine
Marsh Posté le 21-05-2025 à 10:01:59
Mechkurt et TotalRecall (et rat de combat !) c'est pas moi qui peux le créer tout seul, le code, c'est NOUS. Et le Topic.
Alors d'abord, avant de parler du code (ou des fichiers, autoexec config etc ..) il faut parler de la machine je pense.
Comment fonctionne et démarre un OS sur une machine ?
Il me semble qu'il y a d'abord un petit programme qui est stocké dans le microprocesseur et qui s'appelle le "boot loader". Programmé en langage machine C, comme disait Rat de combat, ou en Assembleur.
Marsh Posté le 21-05-2025 à 10:11:39
Ce programme lance les processus les uns après les autres, prend en charge le matériel peut-être (les "drivers" ), et nous amène ce qu'on voit à l'écran
Qu'est-ce qu'un programme aussi ? Un programme est un ensemble d'instructions reconnues par la machine, pour activer tel et tel circuit, allumer tel ou tel led, etc, etc .. un programme est une série de lignes de codes.
Avec l'avènement des OS, un programme peut être stocké dans un fichier, mais aussi faire appel à d'autres fichiers. En gros les lignes de codes qui se suivaient, peuvent maintenant être présentes dans des lieux différents sur la machine.
C'est ça le truc un peu difficile et qu'il faut comprendre pour programmer un driver (ou créer un nouveau système).
On m'a dit aussi que chaque processeur a son jeu d'instructions propres (natives, de base, je crois). C'est bizarre, mais ça identifie la machine indépendamment de l'OS peut-être.
Marsh Posté le 21-05-2025 à 12:15:48
Non, pas le même style et jovalise n'a jamais parlé d'ouvrir un restaurant en Ukraine.
Du coup le résultat des deux projets m'intéresse, j'espère qu'on aura des news
Marsh Posté le 21-05-2025 à 13:36:48
Non, ce n'est pas Jovalise. Par contre j'avoue que toi - infogiver - tu me laisses perplexe. Comme je disais, tu vas te casser la figure et j'espère plus tôt que tard (et pas au sens propre!) car tu perd ton temps. Pourtant TotalRecall t'as donné une piste: Chercher un driver existant, mais attention, c'est du code machine (comme je disais) donc risque de virus etc!
Marsh Posté le 21-05-2025 à 15:15:09
J'ai téléchargé un driver du D-link pour essayer de faire marcher mon ordinateur (comme recommande TotalRecall), car je ne capte plus le WIFI (c'est ça mon problème), l'ordi a crashé et D-link n'a plus son logiciel, mais ça ne marche pas.
Impossible d'identifier le répertoire pour y glisser les fichiers .inf ou .sys ou je ne sais, un fichier netrtwlanu.inf en fait je crois ; et impossible aussi de lancer l'exécutable de ce driver, qui ne marche pas.
Je ne vois qu'une seule solution, reprogrammer une machine et faire écrouler l'empire de Bill Gates. Ou le vôtre, car je vous trouve bien négatifs et un tantinet moqueurs à manger du popcorn comme ça dans vos smiley !
Pour info, le sujet est posté dans la rubrique hardware aussi.
Marsh Posté le 21-05-2025 à 15:25:53
PS : Non, je ne suis pas jovialise !!!
Marsh Posté le 21-05-2025 à 15:35:11
PPS: j'ai un connecteur D-link pour le wifi, mais je ne pense pas qu'il y a un circuit oscillant dans ce connecteur pour créer une onde et se connecter à internet.
D-link identifie seulement une ressource, je pense que c'est une sorte de driver physique si on peut dire qui active quelque chose sur la carte mère.
Il doit y avoir un composant sur la carte mère qui crée une onde pour la connection sans fil. Ce qu'on appelle (peut-être abusivement "carte réseau" ). C'est ça que j'essaie d'activer aussi, mais je ne parviens pas à cibler le hardware dans le BIOS, ou trouver comment activer cette "carte réseau" par des drivers, etc ..
Marsh Posté le 21-05-2025 à 16:26:10
ReplyMarsh Posté le 21-05-2025 à 16:59:46
ReplyMarsh Posté le 21-05-2025 à 18:47:33
Je ne crois pas que c'est difficile de programmer un logiciel comme Windows, rat de combat, pardon de te le dire (même si tu es parti...), ou même un "driver" pour un "périphérique". C'est pas comme de programmer un jeu vidéo, avec des tas de mouvements à l'écran, des boucles hyper complexes imbriquées les unes dans les autres,...
Un système d'exploitation n'a rien à voir, c'est juste des fenêtres carrées (windows) avec description de fichiers et de dossiers, un programme statique. Cela te paraît complexe (et ça l'est devenu) car aujourd'hui il y a plein de logiciels, de matériels périphériques différents, imprimantes, écrans, capteurs etc ... donc c'est un peu une usine à gaz à prendre en charge et à "gérer", mais sinon le programme de base est tout bête.
C'est même probablement le programme le plus simple à coder qui soit, et que tu fais évoluer avec le temps, avec les matériels, logiciels que tu veux y mettre,...
Bon, désolé que le Topic ne te plaise. Merci TotalRecall.
Marsh Posté le 21-05-2025 à 18:53:29
Alors je crois qu'il faut coder un petit programme en assembleur (le bootloader) afin de spécifier où sera stocké le programme de notre système d'exploitation (quelles pistes/segments du disque dur, ou emplacements RAM etc...), fabriquer un interpréteur, définir les zones mémoires, qu'on voudra faire correspondre aussi avec les divisions du système de fichiers (l'équivalent du C:, Program files, Documents, Pictures, etc etc... de Windows). Le programme, que ce soit pour l'OS ou les drivers peut être écrit dans n'importe quel langage à mon avis.
Marsh Posté le 21-05-2025 à 21:54:47
infogiver a écrit : Je ne crois pas que c'est difficile de programmer un logiciel comme Windows, rat de combat, pardon de te le dire (même si tu es parti...), ou même un "driver" pour un "périphérique". C'est pas comme de programmer un jeu vidéo, avec des tas de mouvements à l'écran, des boucles hyper complexes imbriquées les unes dans les autres,... |
Quel noob ce Rat de combat, même pas capable de coder un bête OS de rien du tout
Marsh Posté le 22-05-2025 à 08:49:44
Oui, je parle de reprogrammer un OS tout neuf. C'est à dire qu'il est tellement simple qu'on ne peut rien brancher dessus, rien n'est compatible. Et on le rend compatible, juste pour le périphérique qu'on veut, soit ici pour Shiii (qui a créé ce topic), compatible pour sa carte 3G. C'est peut-être plus simple que de reprendre tout le Windows 10 qui en effet est peut-être une monstruosité de la nature du point de vue code, qu'on ne peut plus modifier, ou alors pour lequel il est trop compliqué de coder un driver.
Rat de combat n'est pas un noob TotalRecall, il a peut-être aussi simplement un peu peur, c'est vrai que ce n'est pas trop dans la mentalité des informaticiens frenchie d'envisager concurrencer les anglo-saxons sur leur terrain (windows, google, amazon, etc...).
Marsh Posté le 22-05-2025 à 08:57:30
Tu auras sans doute besoin de l'anglais ne serait ce que pour les ressources que tu vas y trouver, tiens un peu de lecture pour ton projet : https://littleosbook.github.io/
Marsh Posté le 22-05-2025 à 11:06:26
Pardon, je m'aperçois que je suis un peu critique et pas forcément dans le bon ton pour faire avancer ce topic. J'espère poster mieux après.
Merci, mechkurt ça ira avec l'Anglais. C'est vrai que c'est un peu les Anglo-saxons qui ont créé l'informatique de toute façon donc il faut bien leur reconnaître leurs outils.
Marsh Posté le 24-05-2025 à 10:24:52
mechkurt a écrit : Jovalise ? |
Impossible, il s'exprime de manière compréhensible et il n'a pas encore parlé d'Ada
Par contre, vu le contenu de ses postes, ça démontre une très faible connaissance des PC et OS, donc je confirme, aucune chance qu'il arrive à développer un driver d'un matériel propriétaire dont il n'a pas les spécs techniques et sans avoir les compétences en dév
infogiver a écrit : PPS: j'ai un connecteur D-link pour le wifi, mais je ne pense pas qu'il y a un circuit oscillant dans ce connecteur pour créer une onde et se connecter à internet. |
Oh purée, j'avais pas vu ça. Oui, bon clairement, tu n'as pas les connaissances et compétences pour écrire un driver qui fonctionnera.
Marsh Posté le 24-05-2025 à 10:28:47
infogiver a écrit : Je ne crois pas que c'est difficile de programmer un logiciel comme Windows, rat de combat, pardon de te le dire (même si tu es parti...), ou même un "driver" pour un "périphérique". C'est pas comme de programmer un jeu vidéo, avec des tas de mouvements à l'écran, des boucles hyper complexes imbriquées les unes dans les autres,... |
Tien, regarde cette vidéo, ça va te remettre les idées en place : https://www.youtube.com/watch?v=ELTwwTsR5w8
Coder un OS moderne comme Windows ou Linux capable de gérer des milliers de matériels est probablement l'une des tâches les plus difficiles au monde en matière de dév
Marsh Posté le 24-05-2025 à 12:19:40
Les écoute pas, c'est vrai que c'est pas facile mais avec du temps et de la volonté, tout est possible !
Je ne peux pas t'aider pour Windows 7, mais vu que tu es dans les vieilleries, ce bouquin va t'aider pour ton driver Linux.
https://bootlin.com/community/kernel/ldd3/
Bonne chance, on se revoit d'ici 3 à 5 ans pour voir tes progrès !
Marsh Posté le 24-05-2025 à 15:33:36
Mais je n'écoute personne, lorill.
Merci pour ta doc quand même !
Alors voilà, pour créer un driver il faut commencer par programmer un petit software en Assembleur, en général 512 octets maximum, qu'on place dans le "MBR". Le MBR est le "Master Book Record", un "lieu" de la machine, mi-réel, mi-virtuel, qui lancera tous les programmes et notre système d'exploitation (avec ses drivers" ).
Généralement le MBR se trouve sur le disque dur (ou EST le disque dur), au début, mais tout dépend de où on veut le mettre. On pourrait le créer dans l'écran, mais l'écran est un peu loin du micro-processeur et des organes de calculs internes de l'ordinateur. Je propose donc qu'on le mette sur le disque dur. A mon avis c'est le plus simple, le plus logique et ce qui se fait actuellement.
Alors voilà, le programme commence comme ça :
MOV a,000000 ;
je ne connais pas trop l'assembleur mais 'instruction MOV est l'instruction de base, elle veut dire "bouger" en Anglais, et ceci veut dire "bouger a jusqu'en 000000" je crois. En gros, ça veut dire a=0; et en gros, ça veut dire qu'il y a une valeur qui est définie maintenant dans notre ordinateur, et à partir de cette valeur on peut en créer une deuxième, ce qui va nous donner une deuxième valeur, et donc la possibilité de créer un "segment" , un espace entre deux valeurs, et donc de les subdiviser, de créer tout un tas d'autres valeurs, qui vont représenter la mémoire de notre ordinateur. Vous me suivez ? Moi non plus je ne me suis pas très bien, mais bon je pense que c'est comme ça qu'on démarre, enfin je ne vois pas d'autres solutions. Donc pour le moment a=0
La deuxième instruction de notre programme est donc la suivante (je pense !).
MOV b,999999 ;
cela crée une variable "b" qui a pour valeur 999999. Bon, je pense qu'il faut en fait que ce soit plus grand peut-être, on va voir je ne sais pas. Donc en créant cette deuxième variable,on a créé un segment, c'est notre zone mémoire, on peut le subdiviser pour y mettre d'autres valeurs, des instructions, etc... Notamment on y mettra le bios et le code qui appellera le programme de notre OS . Ou tout l'OS si on veut, haha !
Voilà, merci de votre attention, j'espère que j'ai bon pour le moment.
Marsh Posté le 24-05-2025 à 15:46:33
Tu veux faire un driver, pas un OS. T'as pas besoin de MBR puisque l'OS est déjà démarré et que toi, tu veux juste faire fonctionner sa carte wifi.
Et pour info, l'hexa, c'est base 16, pas 8
Je ne sais pas si tu te rends compte du gap abyssal entre tes connaissances et celles qu'il te faudrait pour créer le driver que tu veux. Je ne dis pas que ce n'est pas intéressant d'apprendre tout ça (bien au contraire) mais que la plupart des ingés en dév qui ont donc étudié 5 ans l'informatique ne sont pas capables de coder un driver pour un OS moderne, en particulier sans avoir la doc technique dudit matériel. C'est pas qu'ils sont mauvais, c'est juste que c'est une tâche très complexe.
Tien, un exo que j'ai fait en 2ème année d'école d'ingé : faire démarrer un PC sur du DOS puis lui faire exécuter un programme qui lance 3 tâches en parallèle, le tout codé en assembleur. Un classique, c'est une tâche de type exclusion mutuelle comme un carrefour (avec des feux, avec la zone du carrefour où les voitures ne doivent pas se renter dedans, donc utiliser un mutex), un tâche de type producteur/consommateur (avec un mutex pour empêcher de consommer un truc pas produit) et une 3ème tâche libre, tu affiche ce que tu veux, par ex, du texte qui défile de gauche à droite.
Rien que ça, ça va te prendre des heures et te faire apprendre l'ASM. Tu vas trouver ça sans doute dur. Ben c'est rien à côté de créer en C/C++ un driver pour une carte wifi Ben oui, va te falloir comprendre la partie électronique de la carte (et sans schéma/datasheet des composants, tu va en chier) et après, va te falloir ingurgiter la spéc des normes wifi (oui, y'en a pas qu'une et chacune ne fait pas 3 pages
).
Marsh Posté le 26-02-2010 à 14:36:25
Bonjour,
Je souhaiterai créer un petit soft pour installer une carte 3G, je dispose des fichiers qui composent le driver, mais quand je la plug je dois dire où se trouvent les fichiers avec l'assistant d'installation pour installer la carte.
Auriez-vous une idée de comment je pourrai faire pour rendre ça automatique, c'est à dire en pluguant la carte et en lançant un .exe, la carte s'installerai toute seule.
Merci par avance.
Cdt