[USB] adr memoire I/O

adr memoire I/O [USB] - Divers - Programmation

Marsh Posté le 20-05-2003 à 15:44:24    

Bonjour,
 
Je me pose une question : a quelle adresse mémoire se trouve le ""buffer"" d'entrée/sortie des port USB sur X86 ??
 
et est ce qu'il est possible d'utiliser l'usb directement en écrivant en mémoire sans passer par les fonctions haut niveau ??
 
un peu comme la mem vid ss dos en comparaison des interuptions....  ;)

Reply

Marsh Posté le 20-05-2003 à 15:44:24   

Reply

Marsh Posté le 20-05-2003 à 21:02:36    

vraiment personne n'a une idée sur la faisabilité du bazar ou alors une tite info  :sweat:  ?
 
 
 

Reply

Marsh Posté le 20-05-2003 à 21:14:39    

non, on peut pas !

Reply

Marsh Posté le 21-05-2003 à 13:43:54    

nraynaud a écrit :

non, on peut pas !


 
merci pour la réponse mais y aurait-il moyen d'avoir quelques détails, parce que même si je sait pas du tout comment malgré quelques recherche sur le web je ne voit pas ce qui pourrait empecher ca
 
car il est forcément possible avec les instructions de bases x86 d'attaquer un port usb, les languages de haut niveau n'ont pas inventé la roue, c toujours possible en asm


Message édité par rem5 le 21-05-2003 à 13:45:44
Reply

Marsh Posté le 21-05-2003 à 23:07:15    

nraynaud a écrit :

non, on peut pas !


Tu pourrai expliciter un peu pourquoi ce n'est pas possible ?
 
Parce que si les développeurs de Windows ont réussi à créer un driver qui gère les ports USB, je vois pas pourquoi rem5 ne pourrait pas faire de même.
 
Pour rem5: déja une certitude, si tu veux taper direct sur le hardware, il faudra que la partie de ton code qui écrit/lit directement les ports USB soit en ring 0:
http://progzone.free.fr/basniveau/ring0/ring0.htm
 
Tu peux aussi choper le DDK (Device Driver Kit) de Microsoft, doit y avoir des trucs pour t'aider.

Reply

Marsh Posté le 21-05-2003 à 23:18:37    

Hmm, en fait je doute que ça soit possible finalement :D
 
Les ports USB sont gérés par le southbridge, et je suppose que chaque fabriquant a implémenté ça à sa sauce et qu'il n'y a aucune norme au niveau des ports d'entrées/sorties et compagnie :/
 
Là du coup, ça serait plus du tout gérable  (faudrait implémenter un mini driver USB pour chaque chipset, et le soft serait incompatible avec les chipsets qui seront crées dans le futur) :sweat:
 
 
Au fait, rem5, pourquoi tu as besoin d'accéder directement aux ports USB ?

Reply

Marsh Posté le 22-05-2003 à 09:43:57    

merci des réponses, oui a voir si c proprio ou standard ???
 
c'est pour dev un driver pour un lecteur MP3 sous linux car il n'est evidement livré qu'avec un driver win  :cry:  
 
Je sais bien qu'il y a des fct de haut niveau qui font ca mais bon ca a pas encore l'air de marcher avec et c la merde pour voir ou ca déconne
 
c pour ca que j'aimerais programmer au - une partie (si je m'ecoutait...tout  :D )en assembleur en évitant toute fct de haut niveau...
 
je déteste ne pas savoir comment un programme marche et avec ces fct de haut niveau j'y suis condamné  :sweat:  
 
 
Et aussi (et surtout) pouvoir monitorer via softice ce qui transite via l'usb
 
 
voila j'espere que c un peu + clair  :p


Message édité par rem5 le 22-05-2003 à 11:37:15
Reply

Marsh Posté le 26-05-2003 à 16:43:49    

[:nycius]

Reply

Marsh Posté le 26-05-2003 à 16:49:20    

Effectivement, c'est le southbridge qui gère les ports USB, et l'adresse I/O du contrôlleur peut être variable, il faut balayer l'espace de configuration PCI pour trouver les contrôlleurs USB.
 
A priori il y a un modèle de programmation standard pour l'USB et le Firewire, puisque sous Windows, le driver microsoft couvre les 3/4 des contrôlleurs des fabricants. (après y'a ptet un driver filtre je crois).
 
Maintenant je sais pas trop ce que tu veux Rem5, mais la tâche est ardue, et tous cas, il est possible que pour atteindre le contrôlleur USB, il soit necessaire d'être en mode protégé (donc exit DOS, sauf avec un DOS-Extender).
 
Donc va chez intel prendre une DataSheet sur un southbridge, et regarde comment le contrôlleur USB est atteingnable.

Reply

Sujets relatifs:

Leave a Replay

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