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

Programmation d'OS Assembleur Discussion :

[OS] Coder un nouvel OS, qu'est-ce que on doit recoder ?


Sujet :

Programmation d'OS Assembleur

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut [OS] Coder un nouvel OS, qu'est-ce que on doit recoder ?
    Voici un topic, des trucs à tenir et ne pas tenir compte lorsqu'on se lance dans le programmation d'un OS, histoire de démêler ce qui est propriétaire à un OS existant et ce qui est "général" du côté de l'asm et du cpu.

    Alors je commencerai donc par cette question: Quelles sont les interruptions indépendantes du OS ? Je supposes que celle du DOS 21h est exclu. Alors il ne reste que les interruptions matérielles qui sont indépendantes du OS si je ne fais pas d'erreur ?

    Est-ce qu'on peut en avoir une liste complète quelque part ?

    Si je comprends bien les interruptions logicielles comme 21h de DOS c'est un genre d'API non ?

    Donc je devrais les refaire pour mon OS n'est-ce pas ?

  2. #2
    Membre régulier
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Points : 106
    Points
    106
    Par défaut
    Donc en effet les interruptions DOS sont exlus car propre au syteme DOS.. Et bien entendus tu devras les reprogrammer

    Par contre il te reste les interruptions du BIOS (la liste ici: http://www.delorie.com/djgpp/doc/rbinter/ix/ ). Celles-ci seulement utilisable en mode réel (aujourdhui on reste rarement en mode réel donc il te faudra aussi les réécrire (c'est justement ça qui est amusent hein )).

    Pour commencer je te conseil ce site http://inferno.cs.univ-paris8.fr/~am...utorial00.html c'est bien documenté avec des exemples (bien sur une fois le stade de cette doc dépassé tu devra te tourner vers d'autres document car la route qui mène à l'OS perso et longue et semée d'embûches )

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Super

    Mais pour réécrire les int du bios ? Est-ce bien utile ?? Est-ce que Windows s'en sert par exemple ?

    Car une fois en mode protégé ils ne sont plus disponible, mais dans ce mode aussi bien faire un driver de base pour la carte vidéo pour afficher des trucs jolies à l'écran

    Ah oui, est-ce qu'un jour on va pouvoir booter directement en mode protégé ? On garde le mode réel pour une compatiblité mais il me semble que les vieux programmes on ne s'en sert plus alors pourquoi garder compatibilité ? Un jour il va bien faloir changer de technologie non ?

  4. #4
    Membre régulier
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Points : 106
    Points
    106
    Par défaut
    Oui quand je disais réécrire les interruptions c'étaient effectivement sous forme de drivers (bien qu'on puisse aussi les faire sous forme de int..)
    Windows (ou plutot DOS dans ce cas) se sert des interruptions, l'exemple le plus bête serait quand tu programmes et que tu utilises une interruption )

    Pour le boot direct en mode protégé c'est vrai que ça pourrait être pratique ^^ et que la "trainée" de cette retro-compabilité et assez ancienne, mais il ne me semble pas avoir déjà entendus parler de cette solution de virrer le mode réel (et ça pourrait changer pas mal de trucs ,bon ou mauvais).

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    Ah oui, est-ce qu'un jour on va pouvoir booter directement en mode protégé ?
    J'ai entendu dire que c'est le genre de gadget que l'on pourra trouver dans les bios de nouvelle génération...
    Mais si tu fais ton os, tu peux très bien ne faire que du pmode: grub offre la possibilité de démarrer un kernel au format elf 32 bits (et directement en pmode)...

    Dans tous les cas, pour tout ce qui est programmation d'os, n'oublie pas de faire un tour régulièrement sur : http://skan.developpez.com/
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Ok

    Mais pour ce qui est des drivers, j'magine qu'il faut avoir les specs du matériel ? C'est sûr qu'une souris de base, par exemple, à 2 boton et une roulette ne poserais sans doute pas de problème, mais si la souris en question est une logitech avec 7-8 boutons, 2 roulettes, etc. Il faut un driver adapté à cette souris la pour pouvoir utiliser tout ces boutons sous le nouveau OS. À ce moment-la comment fait-on ? Il faut demander les specs au fabricant ou leur demander de faire un driver ? :

  7. #7
    Membre régulier
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Points : 106
    Points
    106
    Par défaut
    Interessant le boot en pmode (bien qu'il faille alors attendre que ces BIOS se popularisent sinon la fonctionalité restera inutilisable (ou seulement pour quelques privilégiés..)).

    En effet il faut les specification matériel du fabriquant (crois pas qu'ils vont t'écrire un driver adapté pour ton OS! à moins qu'il devienne très populaire (comme le cas de linux et de nvidia par exemple..)). C'est pourquoi pour un OS amateur, seul les fonctions de base sont gérés (une petite équipe peut mal géré toute les spécifications de souris à 8touches, clavier à 150 etc ).

    PS: Cool le site skan commence à avoir du continus!

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Dans les bios ? Je croyais que le mode réel était géré par le cpu ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    Plusieures solutions:
    Regarder dans le noyau linux
    Si tu as beaucoup de courage, reverser le driver windows de la souris en question
    Trouver une doc sur le web
    Demander une doc au constructeur (qui ne te répondra probablement pas du tout, à moins que tu ne fasse partie d'une communauté de création d'os reconnue, ... et encore !)
    Faire un driver ne gèrant que les trois boutons standards de la souris...
    Faire tout au pif et avoir beaucoup de chances (et beaucoup de fromages pour pouvoir amadouer cette %#@?! de souris )
    Se lier avec un ingénieur de l'entreprise qui fabrique la souris en question
    Changer de souris et passer à quelque chose de plus facile...



    PS: Cool le site scan commence à avoir du continus!
    Oui oui ca avance 8) Merci de ton soutient
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Si j'ai bien compris, une souris multi-fonction ne fonctionne pas sous linux ?

    Ça me surprendrait que MS ait fait un pilote pour linux

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    Si j'ai bien compris, une souris multi-fonction ne fonctionne pas sous linux ?
    Il me semble que logitech fournit certains drivers sous nux (pas sur...)
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par 2PluS4
    Si j'ai bien compris, une souris multi-fonction ne fonctionne pas sous linux ?
    Il me semble que logitech fournit certains drivers sous nux (pas sur...)
    Ok

    Mais en pratique, comment fonctionne un driver exactement ?

    Si on prend l'exemple de la souris, si j'appuies sur le 5e bouton qui se trouve sur le "côté" de la souris, il me suffierait d'aller lire sur le port usb non :

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    Si on prend l'exemple de la souris, si j'appuies sur le 5e bouton qui se trouve sur le "côté" de la souris, il me suffierait d'aller lire sur le port usb non
    Encore faut il savoir:
    Ce que t'envoie la souris quand tu clique sur le cinquieme bouton
    Comment interpreter ces résultats (surement envoyés sous la forme de "blocks" de donnés)
    Comment activer l'utilisation du 5eme bouton
    Comprendre quelque chose au standard usb, qui est aujourd'hui considéré mondialement comme une des choses les plus complexes de l'informatique.... (pour être franc, je n'arrive même pas à comprendre le premier chapitre des spécifications .... )
    Avoir en tête une structure générique de drivers

    Un driver se base sur des spécifications précises du matériel.
    Son but est d'interagir avec l'os, sous forme de module, ou à l'interieur du kernel, (selon la structure de l'os), suivant un paradigme de drivers particulier: un "modèle générique" de driver.
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Mais il reste quand même que un bouton cliqué n'est rien de plus qu'un bouton, c'est au OS de pouvoir offrir une interface sur l'action que doit prendre l'OS en fonction de ce click, je visualise mal en quoi on a besoin d'un spec sur le 5e bouton

    Je serais curieux de voir les specs sur port usb, est-ce que tu aurais un lien ?

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    Je serais curieux de voir les specs sur port usb, est-ce que tu aurais un lien ?
    http://www.usb.org/developers/docs/ Bonne chance

    je visualise mal en quoi on a besoin d'un spec sur le 5e bouton
    Tu en a besoin justement pour que ton driver sache que la souris est en train de lui "dire" que le cinquieme bouton a été enfoncé...

    c'est au OS de pouvoir offrir une interface sur l'action que doit prendre l'OS en fonction de ce click
    Vi, mais, en gros, c'est le driver qui va "dire" au reste de l'os que le cinquieme bouton a été enfoncé, à partir de ce que lui a envoyé la souris....
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par 2PluS4
    Je serais curieux de voir les specs sur port usb, est-ce que tu aurais un lien ?
    http://www.usb.org/developers/docs/ Bonne chance

    Il y a plein de Docs, laquelle est la principale ?

    je visualise mal en quoi on a besoin d'un spec sur le 5e bouton
    Tu en a besoin justement pour que ton driver sache que la souris est en train de lui "dire" que le cinquieme bouton a été enfoncé...

    Oui ça va de soi, un driver ne serait donc qu'une routine qui vérifie à toute les secondes si un bouton de la souris à été enfoncé ? Ou si c'est plutôt qu'il faut programmer une interruption matérielle afin de déclencher un évenement de click puis que le Os exécute ce qu'il faut en conséquence, par exemple un click sur un bouton, l'API du OS fera en sorte que le bouton aura l'air appuyé a l'écran puis exécutera la procédure de cette évenement qui aura été programmé par le créateur du programme en question, est-ce que j'ai tout faux ?

    c'est au OS de pouvoir offrir une interface sur l'action que doit prendre l'OS en fonction de ce click
    Vi, mais, en gros, c'est le driver qui va "dire" au reste de l'os que le cinquieme bouton a été enfoncé, à partir de ce que lui a envoyé la souris....
    Est-ce qu'il y aurait une doc quelque part explicant tout le trajet ? du click jusqu'à l'affichage à l'écran

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    Il y a plein de Docs, laquelle est la principale ?
    Roo mais la première voyons !
    http://www.usb.org/developers/docs/usb_20_02212005.zip

    Est-ce qu'il y aurait une doc quelque part explicant tout le trajet ? du click jusqu'à l'affichage à l'écran
    Non je ne pense pas... Mais tu n'as pas compris ce que j'ai posté ?
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par 2PluS4
    Il y a plein de Docs, laquelle est la principale ?
    Roo mais la première voyons !
    http://www.usb.org/developers/docs/usb_20_02212005.zip

    Est-ce qu'il y aurait une doc quelque part explicant tout le trajet ? du click jusqu'à l'affichage à l'écran
    Non je ne pense pas... Mais tu n'as pas compris ce que j'ai posté ?
    Euh pas tout à fait

    Mais est-ce que j'ai deviné juste comme j'expliquais plus haut ?

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Ok, la je viens d'examiner le code de la page:

    http://inferno.cs.univ-paris8.fr/~am...utorial02.html

    Mais il y a quelques trucs que je ne comprends pas

    Dabord, le bios charge le secteur de 512 octets à l'adresse 0000:07C00 exact ? mais comment se fait le Jump vers la première instruction ?

    Comment est structuré le fichier .bin, ce n'est pas un format d'exécutable d'un OS, donc quelle est sont format et comment le cpu sait ou se trouve la première instruction ainsi que les données à traiter ?

    le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                                    mov ax,0x07C0
    		mov ds,ax
    		mov es,ax
    		mov ax,0x8000	; stack en 0xFFFF
    		mov ss,ax
    		mov sp, 0xf000
    pourquoi toute ces instructions ? à quoi ça sert exactement chaque ligne ?

    je sais que ça fait mov, mais pourquoi ces opération exactement ??

    ensuite il y a:

    NOTE: ça j'ai compris c'est pour mettre le programme en boucle..


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    	;--- Variables ---
    	msgDebut	db	"Hello world !",13,10,0
    	;-----------------
     
    	;---------------------------------------------------------
    	; Synopsis: Affiche une chaine de caracteres se terminant par 0x0
    	; Entree:   DS:SI -> pointe sur la chaine a afficher
    	;---------------------------------------------------------
    	afficher:
    		push ax
    		push bx
    	.debut:
    		lodsb		; ds:si -> al
    		cmp al,0	; fin chaine ?
    		jz .fin
    		mov ah,0x0E	; appel au service 0x0e, int 0x10 du bios
    		mov bx,0x07	; bx -> attribut, al -> caractere ascii
    		int 0x10
    	        jmp .debut
     
    	.fin:
    		pop bx
    		pop ax
    		ret
     
     
    	;--- NOP jusqu'a 510 ---
    	times 510-($-$$) db 144
    	dw 0xAA55
    ça aussi c'est pour la signature et remplir le reste du fichier .bin

    Mais le reste ? pourquoi jouer avec la pile au juste ?

    Svp, éclairez ma lanterne

    Merci

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    Dabord, le bios charge le secteur de 512 octets à l'adresse 0000:07C00 exact ? mais comment se fait le Jump vers la première instruction ?
    Un truc à savoir: le bios c'est en gros une suite de programmes en mode réel... Donc à un endroit donné du bios, on a un code qui copie le secteur de boot à 0x0000:0x7C00 et juste parès, on a un ptit jmp 0x07C0:0000 ! Ou quelque chose d'approchant ...

    Comment est structuré le fichier .bin, ce n'est pas un format d'exécutable d'un OS, donc quelle est sont format et comment le cpu sait ou se trouve la première instruction ainsi que les données à traiter ?
    Sa structure: pas de structure (a part peut être le fait que les octets 510 et 511 doivent être égaux à 0x55 et à 0xAA....)
    La première instruction est tout simplement la première instruction à l'adresse 0x7C00


    pourquoi toute ces instructions ? à quoi ça sert exactement chaque ligne ?
    Dans ce code, on initialise les registres de segment... Pourquoi ?
    Pour ds et es: on init à 0x07C0 pour pouvoir avoir accès au données enregistrées à partir de 0x7C0:0x0000, c'est à dire 0x0000:0x7C00
    pour ss: ben pour définir une stack ....
    Si tu ne comprend pas bien, relis tes cours sur l'asm !!! Es tu sur d'avoir bien assimilé la notion de segmentation ?


    ça j'ai compris c'est pour mettre le programme en boucle..
    Vi, en effet..

    ça aussi c'est pour la signature et remplir le reste du fichier .bin
    Mais le reste ? pourquoi jouer avec la pile au juste ?
    Tu parles de
    et de
    ?
    On sauvegarde et restaure les registres ax et bx car la fonction "afficher" les utilise...
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

Discussions similaires

  1. [MySQL] Est-ce que cette requête est exacte pour créer une nouvelle table?
    Par guillaume7684 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/02/2011, 15h17
  2. [Free Pascal] La nouvelle version stable est désormais la 2.4.0
    Par Alcatîz dans le forum Free Pascal
    Réponses: 1
    Dernier message: 01/04/2010, 14h01
  3. Le nouvel index Qt est en place
    Par koala01 dans le forum Qt
    Réponses: 9
    Dernier message: 07/06/2009, 02h59
  4. Un nouvel index C++ est en place !
    Par Alp dans le forum C++
    Réponses: 3
    Dernier message: 18/05/2009, 10h26
  5. Réponses: 17
    Dernier message: 31/08/2006, 15h50

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