Comment programmer un nouveau pilote ?

Comment programmer un nouveau pilote ? - ASM - Programmation

Marsh Posté le 23-11-2004 à 00:01:32    

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:

Reply

Marsh Posté le 23-11-2004 à 00:01:32   

Reply

Marsh Posté le 23-11-2004 à 00:59:07    

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
Reply

Marsh Posté le 23-11-2004 à 02:03:37    

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
Reply

Marsh Posté le 23-11-2004 à 04:32:52    

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.

Reply

Marsh Posté le 23-11-2004 à 04:47:22    

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

Reply

Marsh Posté le 23-11-2004 à 10:03:51    

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 !

Reply

Marsh Posté le 23-11-2004 à 18:41:12    

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

Reply

Marsh Posté le 23-11-2004 à 19:13:56    

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.
 

Reply

Marsh Posté le 23-11-2004 à 20:08:37    

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 ?

Reply

Marsh Posté le 23-11-2004 à 20:26:07    

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 :)
 

Reply

Marsh Posté le 23-11-2004 à 20:26:07   

Reply

Marsh Posté le 23-11-2004 à 21:33:37    

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
Reply

Marsh Posté le 23-11-2004 à 22:44:40    

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

Reply

Marsh Posté le 23-11-2004 à 23:24:49    

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

Reply

Marsh Posté le 24-11-2004 à 00:38:19    

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
Reply

Marsh Posté le 24-11-2004 à 04:55:16    

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

Reply

Marsh Posté le 24-11-2004 à 04:56:22    

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 ?

Reply

Marsh Posté le 24-11-2004 à 08:47:12    

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.

Reply

Marsh Posté le 24-11-2004 à 10:37:06    

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

Reply

Marsh Posté le 18-02-2005 à 13:38:36    

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

Reply

Marsh Posté le 18-02-2005 à 14:02:46    

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.

Reply

Marsh Posté le 18-02-2005 à 14:09:22    

peut etre pas aussi cher

Reply

Marsh Posté le 23-02-2005 à 14:36:16    

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

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed