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

  FORUM HardWare.fr
  Programmation
  ASM

  Comment programmer un nouveau pilote ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment programmer un nouveau pilote ?

n°905124
Nermal
Mooonnn prééécieuuxx!
Posté le 23-11-2004 à 00:01:32  profilanswer
 

Supposons que je crée un OS, comment doit-on s'y prendre pour créer des pilotes pour ce nouveau OS ?
 
J'ai essayé de chercher sur google, mais sans succès.
 
Merci pour vos informations  :hello:

mood
Publicité
Posté le 23-11-2004 à 00:01:32  profilanswer
 

n°905202
manatane
En vous remerciant, bonsoir
Posté le 23-11-2004 à 00:59:07  profilanswer
 

Tu crées une politique au niveau du noyau (un niveau d'abstraction sur le matériel qui décrit comment telle et telle fonctionnalité doivent etre utilisée et une API).
La programmation du pilote consistera à permettre au noyau d'interagir avec le pilote, c'est le noyau qui va le piloter le hardware, le code du pilote doit lui donner les moyens (les méchanisme) pour le faire (support pour les opérations synchones ou asynchrones, exploiter toutes les possibilités du matériel...). Les fonctions du pilotes sont définis via une API fournit par le noyau (des routines standards) qui seront surchargées dans le code du pilote.


Message édité par manatane le 23-11-2004 à 01:00:05
n°905224
Nermal
Mooonnn prééécieuuxx!
Posté le 23-11-2004 à 02:03:37  profilanswer
 

Ok, mais je voulais plutôt savoir au niveau du fonctionnement de la programmation. J'imagine qu'il faut avoir les specs hardware du périphérique en question ? Mais de là, comment on programme en asm pour que le code que l'on crée inter-réagit avec le matériel ?
 
Par exemple, si je voulais exploiter des fonctions d'une carte vidéo, je devrais dabord communiquer avec la carte, mais cela se fait de quelle façon ? Ce que je comprends, jusqu'à présent, c'est que le cpu exécute des instructions, mais comment envoyer des données par le réseau de bus pour que les données arrivent sur le port AGP pour que la carte reçoive ces données ?


Message édité par Nermal le 23-11-2004 à 02:05:43
n°905232
LeGreg
Posté le 23-11-2004 à 04:32:52  profilanswer
 

Pour piloter le matériel tu as plusieurs options, memory mapped ou port mapped.
 
En gros memory mapped, le hardware est alloué une plage d'adresse dans l'espace d'adressage. Communiquer avec le hardware consiste dans ce cas là à lire et à écrire dans ces adresses comme tu le fais avec de la mémoire classique. Sauf que chaque écriture/lecture peut provoquer une action/réponse du hardware en question.  
 
Port mapped, tu as des instructions spéciales (IN and OUT par exemple) pour écrire dans les registres hardware ou lancer des fonctions de librairie. Ces instructions ne sont pas définis dans les langages standards comme le C++ et donc nécéssitent le plus souvent de l'assembleur (quoi que ça devait être possible d'avoir des équivalents depuis le basic de pas mal de machines anciennes).
 
Bien évidemment pour connaitre ces adresses et leurs effets il faut la doc du hardware en question. Et cela ne représente que la partie émergée des hardware les plus complexes. Certains hardware ont accès à un véritable langage de programmation et les registres exposés par port mapped ou memory mapped I/O ne sont là que pour les fonctions de base.

n°905233
LeGreg
Posté le 23-11-2004 à 04:47:22  profilanswer
 

Perso je n'ai jamais programmé à aussi bas niveau mais je crois que tu peux trouver des infos générales ici:
http://www.vesa.org/vbe3.pdf
 
c'est le standard VBE par l'organisme vesa qui regroupe la plupart des constructeurs de carte graphique. Ce n'est pas une interface qui donne accès aux dernieres fonctionalités des cartes graphiques (pas de 3D) mais qui est généralement la seule option quand on n'a pas d'autres infos sur le hardware. Les interfaces utilisées dans les drivers sont top secret, faut pas trop te faire d'illusion ;).

n°905271
gedeon
Posté le 23-11-2004 à 10:03:51  profilanswer
 

Juste une petite précision mon petit Nermal, tu dis vouloir créer ton os.
Je te souhaite bien du plaisir car je suis en train de faire la meme chose et je sais ce que ça implique. Quand à vouloir dialoguer avec ta carte video en ASM, je te conseille d'abord d'essayer de comprendre le fonctionne ment VGA en mode réél avant de passer au standard VBE. Ensuite essaye les fonction VESA (VBE) en mode réél puis en mode protégé. Maintenant si tu cherche a faire ça ailleurs que dans ton propre OS a mon avis c'est mission impossible !

n°905910
Nermal
Mooonnn prééécieuuxx!
Posté le 23-11-2004 à 18:41:12  profilanswer
 

Ok, oui je suis conscient que ce n'est pas de la petite bière, mais je suis curieux :D
 
Mais puisque il y a des concepts top secret comment linux et windows font pour fonctionner ??

n°905959
LeGreg
Posté le 23-11-2004 à 19:13:56  profilanswer
 

ben pour Windows c'est simple c'est le constructeur lui meme qui écrit le driver donc pas de problème de divulgation de secret.
 
Pour ce qui est de Linux tout dépend de la bonne volonté du constructeur. Par exemple Nvidia écrit ses drivers lui-meme et seule une petite partie est open source mais ils sont en général à jour par rapport aux drivers Windows. Au contraire ATI écrit aussi ses drivers pour cartes récentes mais n'y consacre pas de ressources donc ses fonctionalités sont très limitées. Ils proposent des drivers open source pour leurs cartes les plus anciennes. Si pas de constructeur et pas de bonne volonté ou de divulgation alors il n'y a plus qu'à programmer en mode VESA, ou autre.
 

n°905997
Nermal
Mooonnn prééécieuuxx!
Posté le 23-11-2004 à 20:08:37  profilanswer
 

Je vois, alors pour quelqu'un qui fait un nouveau OS, soit sont OS est inutile faute de drivers disponibles. Soit il passe un accord avec les principaux constructeurs ?

n°906004
Lam's
Profil: bas.
Posté le 23-11-2004 à 20:26:07  profilanswer
 

LeGreg a écrit :

Perso je n'ai jamais programmé à aussi bas niveau mais je crois que tu peux trouver des infos générales ici:
http://www.vesa.org/vbe3.pdf


Le problème des VBE c'est que c'est du BIOS extension, donc il faut pas mal de code derrière pour faire la conversion mode protégé/mode réél. C'est ce qui a empéché Linux pendant pas mal de temps de s'en servir (je pense au début des années 90).  
 
Le fait que les programmes utilisant Watcom (via Pmode/W ou DOS/4G) y arriv(ai)ent tiens au fait que justement, les DOS extenders permettaient ce genre de péripéties.
 
Enfin, les VBE ne sont bien sûr plus trop d'actualité, vu que c'est via le groupe OpenGL ou le groupe DirectX (!) que se fait la standardisation des fonctions modernes des cartes graphiques.
 
Mais VESA continue à standardiser beaucoup de choses hardware, heureusement :)
 

mood
Publicité
Posté le 23-11-2004 à 20:26:07  profilanswer
 

n°906064
Hermes le ​Messager
Breton Quiétiste
Posté le 23-11-2004 à 21:33:37  profilanswer
 

Nermal a écrit :

Je vois, alors pour quelqu'un qui fait un nouveau OS, soit sont OS est inutile faute de drivers disponibles. Soit il passe un accord avec les principaux constructeurs ?


 
Ben oui... Et puis créer un nouvel OS, c'est pas seulement un problème de pilote, mais aussi un problème d'applications disponibles pour cet OS.
 
Si Linux a pu percer, c'est aussi parce que c'est un UNIX et que bcp de codes sources pour UNIX ont pu être adaptés.
 
Dans le cas d'un OS "révolutionnaire tout neuf", faut repartir de 0.  :D  Et là, à moins d'avoir bcp, bcp d'amis et d'arriver à les convaincre que ton nouvel OS, est le truc de la mort qui va tout tuer dans les 20 prochaines années, c'est mal barré.  :whistle:


Message édité par Hermes le Messager le 23-11-2004 à 21:33:53
n°906130
Nermal
Mooonnn prééécieuuxx!
Posté le 23-11-2004 à 22:44:40  profilanswer
 

Hermes le Messager a écrit :

Ben oui... Et puis créer un nouvel OS, c'est pas seulement un problème de pilote, mais aussi un problème d'applications disponibles pour cet OS.
 
Si Linux a pu percer, c'est aussi parce que c'est un UNIX et que bcp de codes sources pour UNIX ont pu être adaptés.
 
Dans le cas d'un OS "révolutionnaire tout neuf", faut repartir de 0.  :D  Et là, à moins d'avoir bcp, bcp d'amis et d'arriver à les convaincre que ton nouvel OS, est le truc de la mort qui va tout tuer dans les 20 prochaines années, c'est mal barré.  :whistle:


 
Bah pour les app il y a toujours les émulateurs, mais pour les pilotes c'est un peu bête d'être bloqué comme ça..

n°906182
LeGreg
Posté le 23-11-2004 à 23:24:49  profilanswer
 

Hermes le Messager a écrit :


Dans le cas d'un OS "révolutionnaire tout neuf", faut repartir de 0.  :D  Et là, à moins d'avoir bcp, bcp d'amis et d'arriver à les convaincre que ton nouvel OS, est le truc de la mort qui va tout tuer dans les 20 prochaines années, c'est mal barré.  :whistle:


 
le vbe a mon avis c'est mieux que rien.
 
Sinon la seule alternative c'est de s'appeler Microsoft. Ou d'utiliser les méthodes mafieuses :D (reverse engineering).
 
Le reverse engineering a un certain succès, par exemple tu envoies des commandes une par une à ton hardware et tu suis ce que fait le driver en assembleur. Enfin avec le digital millenium act tout ceci sera bientot illégal. Donc la seule solution sera de s'appeler Microsoft (ou Apple).
 

n°906230
HelloWorld
Salut tout le monde!
Posté le 24-11-2004 à 00:38:19  profilanswer
 

Lam's a écrit :

Le problème des VBE c'est que c'est du BIOS extension, donc il faut pas mal de code derrière pour faire la conversion mode protégé/mode réél. C'est ce qui a empéché Linux pendant pas mal de temps de s'en servir (je pense au début des années 90).


Il me semblait que VBE 3 était utilisable 100% en pmode.

Citation :

VBE is expected to work on all 80x86 platforms, in real and protected modes. Starting with VBE
3.0, all the VBE/Core BIOS functions can be ‘dual-mode’, allowing them to optionally be called
as 16-bit protected mode code via a direct call to a new protected mode interface entry point.
‘Dual-mode’ code means that the BIOS code adheres to certain restrictions when called via the
protected mode entry point, to ensure full compatibility with fully protected mode operating
systems such as Windows NT, OS/2 and the many versions of UNIX. Note that although the
‘dual-mode’ code must be called as 16-bit protected mode code, this does not preclude it from
being called by 32-bit pure operating systems such as Windows NT and OS/2


Dans la pratique c'est difficile depuis NT car moi j'ai jamais trouvé comment allouer un segment de code exécutable 16 bits. C'est du niveau driver de toutes façons.
 
Pour les techniques d'analyse du fonctionnement d'un driver y'a d'autres moyens que le reverse engineering (p'tet pas pour les drivers video). Les drivers Windows sont structurés en couches, alors les mecs ils insèrent leur driver entre le driver à étudier et le système, driver qui ne fait rien d'autre que logger les trames qui passent... C'est utilisé pour mettre au point certains modems USB Linux.
 
Sinon c'est pas la qualité technique qui fait le succès d'un OS. Y'a plein de projets brillants qui se sont vautrés, alors que Win95 rafflait la mise.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°906249
bjone
Insert booze to continue
Posté le 24-11-2004 à 04:55:16  profilanswer
 

oui il y a des interfaces en mode protégé même en VBE 2.0.
 
mais bon c'est surtout pour éviter les pertes de temps pour le page-flipping etc...

n°906250
bjone
Insert booze to continue
Posté le 24-11-2004 à 04:56:22  profilanswer
 

LeGreg a écrit :


Sinon la seule alternative c'est de s'appeler Microsoft. Ou d'utiliser les méthodes mafieuses :D


 
Ou exclusif ou pas ?

n°906269
el muchach​o
Comfortably Numb
Posté le 24-11-2004 à 08:47:12  profilanswer
 

LeGreg a écrit :

le vbe a mon avis c'est mieux que rien.
 
Sinon la seule alternative c'est de s'appeler Microsoft. Ou d'utiliser les méthodes mafieuses :D (reverse engineering).
 
Le reverse engineering a un certain succès, par exemple tu envoies des commandes une par une à ton hardware et tu suis ce que fait le driver en assembleur. Enfin avec le digital millenium act tout ceci sera bientot illégal. Donc la seule solution sera de s'appeler Microsoft (ou Apple).


Le Digital Millenium Act ne s'applique qu'aux USA et  le reste du monde en a rien à battre des lois restrictives des USA.
Le reverse engineering n'a rien de mafieux en soit, toutes les industries le pratiquent plus ou moins.

n°906358
LeGreg
Posté le 24-11-2004 à 10:37:06  profilanswer
 

el muchacho a écrit :

Le reverse engineering n'a rien de mafieux en soit, toutes les industries le pratiquent plus ou moins.


 
c'était du second degré pour le coté mafieux ;).
 
Mais bon pour le DMCA, il faut remarquer que toute entreprise européenne qui est présente sur le sol américain s'expose à des poursuites et ce n'est pas rien (marché américain = plus gros marché tout court).
 
En plus l'union européenne est soumise aux memes lobbies (taxes sur les supports, brevets logiciels, etc..).

n°986107
ZergSpawn
Posté le 18-02-2005 à 13:38:36  profilanswer
 

sauf si on fait un OS qu'on met sur le net gratuitement ensuite yaura pas de taxe !

n°986130
Lam's
Profil: bas.
Posté le 18-02-2005 à 14:02:46  profilanswer
 

Joli up.
Ceci dit, quand tu download une Mandrake sur le net, et que tu la graves sur CD pour l'exécuter, tu payes une taxe à la SACEM.

n°986139
ZergSpawn
Posté le 18-02-2005 à 14:09:22  profilanswer
 

peut etre pas aussi cher

n°991254
nebucade
Posté le 23-02-2005 à 14:36:16  profilanswer
 

de toute facon si tu peu pas faire de 3D avec ta carte graphique laisse tombe ton projet personne ne voudra d'un os qui ne peut faire que du 2D, a moin que ca interesse plien de monde et que nvidiaet ati te devellope leur drivers. mais la micro mou t'aura deja  mangé.

mood
Publicité
Posté le   profilanswer
 


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

  Comment programmer un nouveau pilote ?

 

Sujets relatifs
[C#] Quel logiciel pour programmer ?Emigrer en angleterre pour programmer : bon plan ?
Quel editeur pour programmer en ASP ?Programmer une application windows avec base de données...
Programmer un logiciel avec base de donnees...programmer
Programmer en object permet-il de gagner en vitesse d'execution ?[MySQL] Importer mes bases dans mon nouveau serveur
[Java3D][Debutant] ajout nouveau volumeQuelles sont vos méthode pour programmer correctement ?
Plus de sujets relatifs à : Comment programmer un nouveau pilote ?


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