[EXEL] TRIPLEX sur EXELVISION démos, tests, ...
Modérateurs : Papy.G, fneck, Carl
[EXEL] TRIPLEX sur EXELVISION démos, tests, ...
Donc j'ouvre ce nouveau sujet pour traiter de tout ce qui va concerner la programmation USB sur l'interface d'Ennio EXELDREAM.
J'éditerai la première page au fur et a mesure.
Toutes les personnes qui ont des connaissances/expériences dans le domaine de la programmation USB sont les bienvenues et je les invite a compléter/rectifier si besoin
C'est tout nouveau pour moi, j'avance dans l'inconnu, je vais tacher de ne pas écrire de bêtises
Pour commencer je vais essayer de détailler ce que j'ai compris des transactions USB et des caractéristiques de l'interface SL811HS
- Il y a plusieurs vitesses possible en USB ( LOW / FULL / ...)
- La vitesse des transactions est déterminées par une résistance pullup 1,5 Khoms sur le 3.3V (LOW SPEED = - / FULL SPEED = + ) VBUS
- L'hote et le périphérique doivent ce synchroniser à la même vitesse (évidement). (je ne sait pas encore si tout les périphériques récents acceptent le LOW et FULL SPEED, en tout cas les périphériques USB2 ne doivent pas pouvoir utiliser le LOW SPEED )
- les données sont transmisses avec le bits de poids faible en premier LSB
- les transactions se font par "PACKET" (organisés différemment selon ce que l'on veux faire ...)
- Pour chaque transaction il y a un identifiant SYNC, PID, ADDR, ENDP et CRC (détails plus loin)
A SUIVRE ...
J'éditerai la première page au fur et a mesure.
Toutes les personnes qui ont des connaissances/expériences dans le domaine de la programmation USB sont les bienvenues et je les invite a compléter/rectifier si besoin
C'est tout nouveau pour moi, j'avance dans l'inconnu, je vais tacher de ne pas écrire de bêtises
Pour commencer je vais essayer de détailler ce que j'ai compris des transactions USB et des caractéristiques de l'interface SL811HS
- Il y a plusieurs vitesses possible en USB ( LOW / FULL / ...)
- La vitesse des transactions est déterminées par une résistance pullup 1,5 Khoms sur le 3.3V (LOW SPEED = - / FULL SPEED = + ) VBUS
- L'hote et le périphérique doivent ce synchroniser à la même vitesse (évidement). (je ne sait pas encore si tout les périphériques récents acceptent le LOW et FULL SPEED, en tout cas les périphériques USB2 ne doivent pas pouvoir utiliser le LOW SPEED )
- les données sont transmisses avec le bits de poids faible en premier LSB
- les transactions se font par "PACKET" (organisés différemment selon ce que l'on veux faire ...)
- Pour chaque transaction il y a un identifiant SYNC, PID, ADDR, ENDP et CRC (détails plus loin)
A SUIVRE ...
Dernière modification par 6502man le 22 juin 2016 22:15, modifié 1 fois.
Re: [EXEL] programmation USB sur EXELVISION
De toute façon si ton but est d'accéder à des periphs de masse, seul le FULL SPEED t'intéresse (12Mbit/s), le LOW speed c'est pour clavier/souris/pad (1.5Mbit/s). Tu ne peux en aucun cas utiliser le LOW SPEED à part si tu veux utiliser un clavier PC sur l'Exl100.
Il faut cibler les tests directement sur le FULL SPEED (USB 1.1 bien sur, on oubliera le HIGH SPEED de l'USB2 à 480Mbit/s )
En bref aucun periph de masse ne comprend le LOW SPEED (ou bien une ancienne clé USB au fond d’un obscur tiroir).
Le gros soucis c'est bien sur la communication synchrone avec un CPU asthmatique à 2.5Mhz pour piloter tout ça, et bien sur la présence d'un port série (et non parallèle) avec le SL811HS. Et comme la mémoire du SL811HS est insuffisante il faut travailler en double buffering dans le host: l'un reçoit la portion du secteur du device, pendant que l'autre est lu/écrit par le CPU pour placer les données en RAM (au moins 50 cycles pour lire 1octet). Et tout ça en synchrone afin de basculer le buffer au bon moment pour ne perdre de paquets et planter le bus .
C'est en gros ce que j'avais compris du truc.
C'est super joli sur le papier mais ça réclame des coucougnettes de Mammouth pour programmer tout cela. Je dirais même qu'en plus de la doc USB, un recueil de prière à une quelconque divinité ne sera pas de trop...
Je laisse les pros de l'USB prendre la main.
Il faut cibler les tests directement sur le FULL SPEED (USB 1.1 bien sur, on oubliera le HIGH SPEED de l'USB2 à 480Mbit/s )
En bref aucun periph de masse ne comprend le LOW SPEED (ou bien une ancienne clé USB au fond d’un obscur tiroir).
Le gros soucis c'est bien sur la communication synchrone avec un CPU asthmatique à 2.5Mhz pour piloter tout ça, et bien sur la présence d'un port série (et non parallèle) avec le SL811HS. Et comme la mémoire du SL811HS est insuffisante il faut travailler en double buffering dans le host: l'un reçoit la portion du secteur du device, pendant que l'autre est lu/écrit par le CPU pour placer les données en RAM (au moins 50 cycles pour lire 1octet). Et tout ça en synchrone afin de basculer le buffer au bon moment pour ne perdre de paquets et planter le bus .
C'est en gros ce que j'avais compris du truc.
C'est super joli sur le papier mais ça réclame des coucougnettes de Mammouth pour programmer tout cela. Je dirais même qu'en plus de la doc USB, un recueil de prière à une quelconque divinité ne sera pas de trop...
Je laisse les pros de l'USB prendre la main.
Re: [EXEL] programmation USB sur EXELVISION
Je n'ai pas encore pu vérifier si on pouvait accéder au périphérique "MASS STORAGE" en LOW SPEED, mais c'est bien possible que l'on soit obligé d'utiliser le FULL SPEED.
Mais pour cette partie je pense que le CH376DS1 nous seras d'une grande aide
Demain je continue à détailler l'USB et après j'essaie un bout de code pour faire un RESET du périphérique préambule pour l'énumération ...
Mais pour cette partie je pense que le CH376DS1 nous seras d'une grande aide
Demain je continue à détailler l'USB et après j'essaie un bout de code pour faire un RESET du périphérique préambule pour l'énumération ...
- irios
- Messages : 3398
- Inscription : 04 nov. 2007 19:47
- Localisation : Rochefort du Gard (30)
- Contact :
Re: [EXEL] programmation USB sur EXELVISION
Je confirme !! On peut accéder au périphérique "MASS STORAGE" en LOW SPEED. Tests effectués sur un COMPAQ ARMADA avec windows 98 en USB 1.0 !!! De plus, les transactions entre le contrôleur et la machine se fait bien en parallèle et non en série !
http://irioslabs.over-blog.com/
La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
Re: [EXEL] programmation USB sur EXELVISION
Quel support de stockage as tu testé ?
- irios
- Messages : 3398
- Inscription : 04 nov. 2007 19:47
- Localisation : Rochefort du Gard (30)
- Contact :
Re: [EXEL] programmation USB sur EXELVISION
Disque dur et clé
http://irioslabs.over-blog.com/
La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
Re: [EXEL] programmation USB sur EXELVISION
Clé récente ?
Re: [EXEL] programmation USB sur EXELVISION
Sans déconner on peut lire dans la classe Mass Storage qu'elle ne marche qu'en FULL SPEED (USB 1.1)... ça marche vraiment avec n'importe quel disque/clé ??? Bonne nouvelle. faudrait être 100% sur qu'il s'agit bien d'une interface USB 1.0 dans ce vieux PC, et pas un truc USB 1.1 avant validation complète du protocole. Il faudrait mesurer la vitesse effective (proche de 0.19Mo/s ou 1.5Mo/s).
Le SL811HS possède un port parallèle, envoie par octet... dans les specs/docs j'avais souvenir d'avoir vu un port de type série bit à bit... tant mieux.
LOW SPEED (1.5Mbit/s) + échange par octet avec l'interface, la ça devient beaucoup plus faisable.
Le SL811HS possède un port parallèle, envoie par octet... dans les specs/docs j'avais souvenir d'avoir vu un port de type série bit à bit... tant mieux.
LOW SPEED (1.5Mbit/s) + échange par octet avec l'interface, la ça devient beaucoup plus faisable.
Re: [EXEL] programmation USB sur EXELVISION
En risquant de dire une connerie, il semblerait que le low speed et l'usb mass storage fonctionnent ensemble a condition d'atteindre une bande passant de 800 bytes par seconde.
A verifier grandement tout de même
A verifier grandement tout de même
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr
- irios
- Messages : 3398
- Inscription : 04 nov. 2007 19:47
- Localisation : Rochefort du Gard (30)
- Contact :
Re: [EXEL] programmation USB sur EXELVISION
Clé 4Go DANE-ELEC
Disque dur 160Go WD1600ME
Je ferai les tests de vitesse mais il faut que je trouve un utilitaire qui va bien sous windows 98 !!
J'ai trouvé la doc du chipset de l'ARMADA gérant l'USB Intel 82371AB: c'est du 1.1 qui gère du 1.0 et en aucun cas du 2.0 !
J'ai réalisé des tests de transfert sur la clé 4Go et je suis à 5Mbits/s max !!!
Idem avec le disque dur.
Disque dur 160Go WD1600ME
Je ferai les tests de vitesse mais il faut que je trouve un utilitaire qui va bien sous windows 98 !!
J'ai trouvé la doc du chipset de l'ARMADA gérant l'USB Intel 82371AB: c'est du 1.1 qui gère du 1.0 et en aucun cas du 2.0 !
J'ai réalisé des tests de transfert sur la clé 4Go et je suis à 5Mbits/s max !!!
Idem avec le disque dur.
http://irioslabs.over-blog.com/
La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
Re: [EXEL] programmation USB sur EXELVISION
Donc on est dans le cas d'un FULL SPEED... ce serait étrange en LOW SPEED. Mes bouquins sur l'USB indique clairement: MASS STORAGE = FULL SPEED... sinon pas de transaction. Les periphs USB2.0 supportent presque tous un transfert en USB 1.1 mode FULL SPEED.
Je n'ai jamais vu personnellement de chip USB 1.0 !
Je n'ai jamais vu personnellement de chip USB 1.0 !
- irios
- Messages : 3398
- Inscription : 04 nov. 2007 19:47
- Localisation : Rochefort du Gard (30)
- Contact :
Re: [EXEL] programmation USB sur EXELVISION
Oui mais je suis très confiant.
De la doc pour 6502man :
http://u.s.b.free.fr/pdf/L_USB_et_sa_norme_v1.pdf
http://microusb.org/
http://www.lvr.com/development_tools.htm
De la doc pour 6502man :
http://u.s.b.free.fr/pdf/L_USB_et_sa_norme_v1.pdf
http://microusb.org/
http://www.lvr.com/development_tools.htm
Dernière modification par irios le 10 sept. 2013 19:48, modifié 1 fois.
http://irioslabs.over-blog.com/
La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
Re: [EXEL] programmation USB sur EXELVISION
Je suis aussi très confiant... dans Philippe... beaucoup moins dans le TMS7020.
- irios
- Messages : 3398
- Inscription : 04 nov. 2007 19:47
- Localisation : Rochefort du Gard (30)
- Contact :
Re: [EXEL] programmation USB sur EXELVISION
Mise en place sur le vieux portable d'un sniffer USB et une très bonne surprise !! Il y a 8 octets max dans chaque trame transmise. Il me reste plus qu'à déterminer si c'est du Low ou du Full.
Suite à la deuxième acquisition lorsque le périphérique s'initialise, on voit bien que l'interface HOST valide le courant de conso max du périphérique (clé) à 100mA. Ce courant nous indique que l'interface gère bien la version USB 1.1 et cela nous indique aussi que ce courant est en rapport avec un périphérique low power !! A suivre ...
Suite à la deuxième acquisition lorsque le périphérique s'initialise, on voit bien que l'interface HOST valide le courant de conso max du périphérique (clé) à 100mA. Ce courant nous indique que l'interface gère bien la version USB 1.1 et cela nous indique aussi que ce courant est en rapport avec un périphérique low power !! A suivre ...
http://irioslabs.over-blog.com/
La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
Re: [EXEL] programmation USB sur EXELVISION
En règle générale le LOW SPEED ne travaille qu'avec des longueurs de frames de 8 octets, mais le FULL SPEED peut aussi utiliser des frames de 8 octets.
Mais surtout les premières transmissions à l'init sont toujours en 8 octets il me semble.
Donc pas sûr que le périphérique travaille par la suite en 8 octets.
Tu peux essayer le logiciel USBVIEW qui va te donner pas mal d'infos sur tous les périphériques connectés a ton PC et notamment la longueur maxi des frames d'init et de transfert
J'ai déjà pu voir que pour un lecteur de disquette usb que j'utilise pour recréer les disquettes MSX et ALICE entre autres, les longueurs de frames sont toutes en 8 octets
OUPS: en faite les frames sont de 8 pour l'init et 64 pour les transfert BULK/INTER/..
Par contre pour un lecteur de cartes usb les frames de transferts sont en 512
A préciser ....
EDIT:
Sur ta capture on voit bien que les frames "BULK or INTERUPT TRANSFERT" sont toutes en 8 octets, mais aucune précision sur la vitesse
Mais surtout les premières transmissions à l'init sont toujours en 8 octets il me semble.
Donc pas sûr que le périphérique travaille par la suite en 8 octets.
Tu peux essayer le logiciel USBVIEW qui va te donner pas mal d'infos sur tous les périphériques connectés a ton PC et notamment la longueur maxi des frames d'init et de transfert
J'ai déjà pu voir que pour un lecteur de disquette usb que j'utilise pour recréer les disquettes MSX et ALICE entre autres, les longueurs de frames sont toutes en 8 octets
OUPS: en faite les frames sont de 8 pour l'init et 64 pour les transfert BULK/INTER/..
Par contre pour un lecteur de cartes usb les frames de transferts sont en 512
A préciser ....
EDIT:
Sur ta capture on voit bien que les frames "BULK or INTERUPT TRANSFERT" sont toutes en 8 octets, mais aucune précision sur la vitesse
Dernière modification par 6502man le 11 sept. 2013 12:18, modifié 1 fois.