demande de code assembler en C (_asm) pour emulation via usb - ASM - Programmation
Marsh Posté le 18-08-2004 à 18:16:11
out sert à envoyer une donnée dans un registre matériel
Marsh Posté le 18-08-2004 à 18:26:39
mmmmhh. merci
je suppose que pour avoir une liste exhaustive des registres materielles, il faut faire un REGEDIT.EXE.
Ou alors ils correspondraient à la plage d'E/S (pour mon cas) dans le gestionnaire de périph.
Si le deuxième cas est correct, alors comment se fait il que mon programme plante avec ces valeurs?
Mon but, c'est d'envoyer des données sur un port USB
Marsh Posté le 18-08-2004 à 18:55:10
ledjlale a écrit : mmmmhh. merci |
De rien
ledjlale a écrit : |
pas du tout, ça n'a strictement rien à voir !
tu peux trouver la liste des registres et de leurs ports associés ici :
http://members.tripod.com/~oldboard/assembly/
ledjlale a écrit : |
ton programme plante car tu écris surement une valeur fausse sur le port du registre. ce sont des trucs très sensibles, et si tu fais une connerie, dans le meilleur des cas tu plantes le programme, dans le pire des cas tu flingues ton matériel (véridique ! une écriture bidon dans un registre de la carte VGA par exemple, et tu dis adieu à ton moniteur)
regarde à quel port de registre correspond ta variable LPTDataPort, et rectifie ton programme en conséquence
vu le nom, ça doit être le registre du port parallèle
Marsh Posté le 18-08-2004 à 18:58:32
j'oubliais : selon ton OS, il est possible que l'accés direct au matériel te soit refusé (tous les OS à noyau NT et Linux)
Marsh Posté le 18-08-2004 à 19:00:12
ouffffff j'espere pas avoir flingué quoi que ce soit
Au debut, c'est un programme pour envoyer sur port parallele, mais je voudrais envoyer sur un port usb.
os NT? je suis sur 2000 et XP. Comment faire pour forcer le passage?
Marsh Posté le 18-08-2004 à 19:02:03
ledjlale a écrit : ouffffff j'espere pas avoir flingué quoi que ce soit |
ben faut pas t'étonner si ça marche pas hein, c'est pas du tout la même chose
faut que tu regardes si tu peux accéder aux ports USB directement par un registre, le site que je t'ai donné ne le mentionne pas
Marsh Posté le 18-08-2004 à 19:03:11
ledjlale a écrit : |
je sais pas si c'est possible... essaie éventuellement de passer en RING 0, sans garantie
Marsh Posté le 18-08-2004 à 19:04:59
Sorry mais que veut dire : "passer en RING 0"?
En fait, depuis deux jours que je cherchent les ports USB: ils passent par un controlleur et c'est tout...
Marsh Posté le 18-08-2004 à 22:21:41
accéder directement à l'USB comme on le fait pour le port // me paraît pas gagné
Va falloir jeter un il du côté des drivers linux
+ rassembler un max d'infos sur ton contrôleur USB (regarder dans la datasheet)
(edit : et ptêt renommer le topic )
Marsh Posté le 18-08-2004 à 22:41:57
USB est un bus, c'est un poil plus complexe à interfacer qu'un LPT (sauf si on utilise un circuit FTDI).
Marsh Posté le 19-08-2004 à 09:17:15
linux? c'est le meme type de gestion d'usb qu'un wiwi?
Que me conseillez vous pour que je puisse simuler une souris sur un bus usb par ordinateur?(deux ordis qui se connectent par usb et dont l'un se fait passer pour une souris).
J'aimerais le coder en C (ce qui me permettrait d'avoir quelques blocs en asm, puisque qu'on peut tout faire en asm )
(et puis si on parle plus d'asm, je bougerais de forum)
Marsh Posté le 19-08-2004 à 09:35:16
regarde ici, tu trouveras les infos qu'il te faut :
http://www.usb.org/developers/
Marsh Posté le 19-08-2004 à 09:39:33
merci, mais je connais deja, c'est meme la que j'ai recuperé le code qui contient le truc du haut .
Il y a peut etre un rapport entre le fait d'envoyer sur un port LPT, et celui d'envoyer sur le port serie usb..... Faut que je cherche
pour choper un word à l'adresse 40:08, je fais:
_asm
{
movw ax, Donnees
movw dx, 0x4008
in ax,dx
}
//??
Marsh Posté le 19-08-2004 à 09:56:06
arf, encore un site que je connais. merci quand meme.
Mais tu pourrais peut-etre m'aider: pour pouvoir faire ce qu'ils disent, il me faut le DDK pour windaube2K. Ils medisent que c'est gratuit et tout, me donnent des liens, mais quand je vais chez microchit, ils me demandent de payer..?? et pour un winserver2003.
Enfin bref, j'ai pas trouvé de DDK pour moi. J'ai bien le SDK, mais c'est pas celuila. Suaris tu ou je peux l'avoir? merci!
[edit]je vai demander dans le forum de soft
Marsh Posté le 19-08-2004 à 10:20:59
Apparement le dernier ddk fonctionne aussi avec win2k d'après ce que j'ai compris à la faq. Pour l'avoir... tu peux essayer des moyens détournés, si tu vois ce que je veux dire.
Marsh Posté le 19-08-2004 à 10:29:03
mouais, et il y a pas moyen d'avoir les anciens comptatible avec 2K?
[edit] me dites pas que c'est trop dur :
pour choper un word à l'adresse 40:08, je fais: (visual SC++6)
int Donnees;
_asm
{
movw ax, Donnees
movw dx, 0x4008
in ax,dx ;ou bien : movw Donnees, 0x4008
}
Marsh Posté le 19-08-2004 à 10:43:28
ledjlale a écrit : linux? c'est le meme type de gestion d'usb qu'un wiwi? |
Bah intuitivement, si t'y vas à coup d'asm, nux ou win t'auras les mêmes grands principes.
Attention aussi, pour simuler une souris (device USB) par un PC (host USB) pour brancher sur un PC (host USB), renseigne toi bien : la norme USB interdit de relier 2 hosts entres eux (ouiiiiii... je sais... y'a des câbles USB qui existent pour faire des transferts entre 2 PCs... mais pour savoir comment c'est foutu... intuitivement je me dis que c'est un device qui fait le pont entre les 2 hosts, et non directement 1 host qui parle à l'autre, mais bon...)
Marsh Posté le 19-08-2004 à 12:55:54
Tu as de la chance, je suis tombé complètement par hasard sur ce site:
http://www.alanmacek.com/usb/deviceAPI.html
http://www.alanmacek.com/usb/hostcode.html
Marsh Posté le 19-08-2004 à 15:31:38
gniark gniark......... connais aussi!
merci quand meme, je suis en train de demander le ddk pour pouvoir tout faire fonctionner. Pour l'instant, j'essay de faire du reverse engenneering (scusez pour les fautes ) et je suis en train de remarquer qu'il pas si difficile que ca à dialoguer sur un port usb...pour l'instant
Donc, pour ce qui est de l'assembleur, il n'y a pas de ligne de code dans le code (c que du c!), alors si j'ai d'autres soucis, je passerais un petit bjr!
Je tiens à remarquer que le code source fournit par lvr.com est très bien commenté (il manque juste un petit déscriptif des variables lors de leur déclaration, mais pour ce qui est de leur utilisation... c'est tres facile à comprendre)
En attendant, je voudrais bien avoir une petite reponse pour mon ptit bout du haut
Marsh Posté le 19-08-2004 à 16:32:57
Pas besoin de driver pour dialoguer avec un periph USB, voir les fonctions SetupDi* (1° lien de WhatDe).
http://groups.google.fr/groups?hl= [...] 26rnum%3D6
http://www.delcom-eng.com/downloads/USBPRGMNL.pdf
Marsh Posté le 19-08-2004 à 17:09:33
Pour la suite de l'usb; j'ai posté dans le forum de hradware et périph... num 8166 a moins que ce soit: 82002?
Marsh Posté le 18-08-2004 à 18:02:32
bonjour
j'ai le bloc:
_asm{
mov dx, LPTDataPort
mov al, DataVal
out dx, al
}
d'apres moi: mettre la valeur LPTDataPort dans dx, pareil pour DataVal dans al, et faire un truc entre dx et al.
Exacte? ou pas? Que renvoi il? dans quoi? que fait exactement out? (qu'est ce que c'est que out?) je pense qu'il sert a renvoyer al sur un port dx mais.........
dx est un registre general, mais al?
merci
Message édité par Ledjlale le 20-08-2004 à 10:58:00