TRAX44
Messages postés93Date d'inscriptionmercredi 18 septembre 2002StatutMembreDernière intervention20 juillet 2006
-
9 oct. 2004 à 19:48
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 2014
-
15 oct. 2004 à 15:58
Bonjour,
voilà je voudrias apprendre dans le cas général à utiliser les ports PC : je sais que pour le clavier c'est 60h et 64h, pour la carte réseaux c'est C000h à C0FFh. IL ya aussi des irq à controler et des plages mémoires ?! (sous windaube, panneau de config, system, propriété du périph, ressource) Bon je veux juste savoir comment on fait en général !
Cordialement
TRAX
__________________________________________________
Les mots ont la valeurs que l'on veux bien leur accorder (TRAX)
TRAX44
Messages postés93Date d'inscriptionmercredi 18 septembre 2002StatutMembreDernière intervention20 juillet 2006 11 oct. 2004 à 22:03
Sur le forum c++, j'ai vu kk1 qui faisait avec winsock (la dll) Mais g pas compris et l'auteur de la source ne répond pas ?
J'ai pas très bien compris le msg précedent!
Cordialement
TRAX
_________________________________________________
Les mots ont la valeurs que l'on veux bien leur accorder (TRAX)
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 12 oct. 2004 à 09:52
salut,
il faudrait que tu te renseigne un peu de ton coté quand meme.
Les ports winsocks et les ports de ton pc ne sont pas les memes.
Les ports winsocks sont des ports virtuels ( utilisés afin d'avoir plusieurs requete simultanées sur le peripherique réseau ) alors que les ports de ton pc sont des ports reels.
le fonctionnement de ces ports n'est pas dépendant de ta carte mere mais du materiel qui est rattaché derrière.
si tu veux une information concernant un de ces ports, tu dois trouver la documentation du materiel connecté a ce port.
l'acces aux ports E/S se fait par les commandes processeur "in" et "out"
TRAX44
Messages postés93Date d'inscriptionmercredi 18 septembre 2002StatutMembreDernière intervention20 juillet 2006 13 oct. 2004 à 17:36
Oui pardon, je me suis tromper entre les réponses de deux messages différents. J'ai effectivement faits mes recherche mais je ne trouve pas d'explication en général, que des exemples. J'ai pas très bien compris les redirection d'irq
Cordialement
TRAX
___________________________________________________
Les mots ont la valeurs que l'on veux bien leur accorder (TRAX)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 15 oct. 2004 à 14:41
re,
ce n'est plus tout a fait la meme question.
alors, tu va voir que c tres simple et qu'une redirection d'irq equivaut a une redirection de fonction.
en mode réel ( 16 bits ) il y a un tableau de 256 pointeurs far vers les fonctions d'interruption a l'adresse 0000:0000 et qui occupe 4*256 = 1024 octets
0000:0000 = pfintr[256]
0000:0400 = ?
lorsque le processeur rencontre une interruption, il empile les registres flags,cs et ip puis jump vers le pointeur donné par le tableau et le N° d'interruption ( de 0 a 255 ).
une redirection d'interruption va donner:
on lit la valeur du pointeur donné par le tableau "pfintr" et le n° d'interruption que l'on veut rediriger.
on sauvegarde cette valeur dans une variable que l'on appelera "pfold"
on change la valeur du pointeur "pfintr[iid]" pour que l'interruption aille vers notre fonction et voilà, le tour est joué, l'interruption est redirigée.
si tu veux appeler le gestionnaire original, tu n'as plus qu'a cleaner ta pile et finir ton handler par un jmp far [pfold]
quand tu quitte ton programme, tu dois restorer le vecteur d'interruption original.
TRAX44
Messages postés93Date d'inscriptionmercredi 18 septembre 2002StatutMembreDernière intervention20 juillet 2006 15 oct. 2004 à 15:40
Bonjour,
j'ai trouvé ce code
mov al, 0x20
out 0x20, al
cli
xor cx, cx
testloop:
in al, 64h
test al, 1
loopz testloop
jz pascar
mov ah, 1
in al, 60h
jmp fin
pascar:
xor ax, ax
fin:
sti
je comprends pas les deux première ligne
Les mots ont la valeurs que l'on veux bien leur accorder (TRAX)
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 15 oct. 2004 à 15:58
re,
tu viens de trouver la commande EOI du pic ( END OF INTERRUPTION )
lorsque ton peripherique a quelque chose a dire, il declenche sa ligne d'IRQ.
le pic detecte la ligne irq du peripherique et declenche l'irq aupres du processeur.
ce code:
mov al,0x20; = commande EOI
out 0x20,al; = Envoi sur le port rattaché au pic la commande EOI
permet de dire au pic qu'il peut mettre sa requette d'interruption sur 0 (OFF) afin de pouvoir accepter d'autre requetes d'interruption auprès d'autres ou du meme peripherique.
je pense que tu devrais pouvoir trouver des informations sur le fonctionnement du pic assez facilement car c'est vieux et connu.