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 système Discussion :

PIPES USB et performance


Sujet :

Programmation système

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2006
    Messages : 105
    Points : 109
    Points
    109
    Par défaut PIPES USB et performance
    Bonjour à tous,
    Je suis actuellement entrain de développer une carte USB pour jouer le rôle de firewall.

    J'ai un petit soucis vis à vis des pipes USB, est ce que le fait de configurer plusieurs pipes IN / OUT bulk améliore les performances ou non ?
    sinon pourquoi certain device USB en configure plusieurs ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    Décembre 2010
    Messages
    14 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14 939
    Points : 23 253
    Points
    23 253
    Billets dans le blog
    10
    Par défaut
    Bonjour

    Pour la performance pour un périphérique non, pour le nombre de périphériques USB oui.

    Protocole de transfert USB

    Tous les périphériques USB sont composées d'une série de critères d'évaluation et d'une adresse unique attribué par le système. Un point de terminaison est une mémoire tampon qui stocke les données dans l'appareil. Chaque critère a un identificateur unique qui est attribué à une usine en particulier et la direction du flux de données. Tous les appareils doivent supporter paramètre 0, qui est utilisé pour la configuration.

    Les partenariats entre les divers paramètres d'un périphérique et l'hôte sont appelés tubes (pipes). Les tuyaux vous permettent de déplacer des données entre les logiciels d'accueil et de point de terminaison périphérique. Chaque tuyau est déterminé par le type de service, le numéro de point de terminaison, la taille des paquets, adresse, etc

    Il existe quatre types de endpointsdistintos (contrôle, en vrac, isochrone et d'interruption), chaque employé dans un type de transfert, et les associations (tuyaux) qui se produisent entre ces paramètres sont les suivants:
    • Contrôle des tuyaux ou Message: Il s'agit d'un canal de communication entre deux points de terminaison de contrôle, une entrée et une sortie, afin que nous puissions établir une communication bidirectionnelle. Tous les appareils ont deux points de terminaison de contrôle à l'adresse 0, ce qui peut être défini avant la mise en place du dispositif. Grâce à ce critère d'évaluation de l'hôte peut lire sur le périphérique USB avant de commencer le transfert.
    • Pipe Stream: Un canal de communication unidirectionnel entre le système et les paramètres de type bloc, isochrone et d'interruption.

    Le transferenciaspueden être, selon le point de terminaison, tapez:

    - Transferts de contrôle: Mode utilisé pour effectuer des réglages: il ya toujours le point de terminaison 0. Tous les périphériques USB doit prendre en charge l'impression d'écran de transfert.

    Les données de contrôle utilisé pour configurer l'appareil lorsqu'il est connecté à l'USB. Certains pilotes spécifiques peuvent utiliser ce lien pour télécharger leurs propres informations de contrôle.

    Ce lien n'a pas de perte de données, puisque les dispositifs de détection sont de reprise sur erreur active à l'USB.

    - Transfert isochrone: le mode utilisé pour la transmission audio ou vidéo compressé. Ce type de travaux transmission en temps réel. C'est le mode le plus élevé de priorité.

    Seuls les appareils et pleine haute vitesse isochrone paramètres peuvent être incorporés.

    La transmission de la voix est un exemple de cette application. Si elle n'est pas transmise correctement, ils peuvent se faire entendre des parasites (gliches) et l'application permet de détecter certaines erreurs appelé les ruptures.

    - Transfert d'interruption: le mode utilisé pour la transmission de paquets petit, rapide, visant à la perception de l'homme (pointeurs de souris).

    Ce type de transfert est pour les périphériques qui doivent recevoir une attention régulière et l'utilisation des dispositifs à basse vitesse

    Ce type de transmission assure le transfert de petites quantités de données. Le temps de réponse ne peut être inférieure à la valeur spécifiée par l'interface. La souris ou autre dispositif de pointage est une application typique de ce mode de transmission.

    - Transferts en vrac: Ce mode est utilisé pour transmettre de grandes quantités d'informations. Comme le taux de contrôle, ce lien n'a pas de perte de données. Ce type de transfert est utile lorsque le taux de transfert n'est pas critique comme l'envoi d'un fichier pour l'impression ou la réception de données à partir d'un scanner.

    Dans ces applications, le transfert est rapide, mais vous pouvez vous attendre si des dispositifs necesario.Solo à moyen et à grande vitesse avec ce type de transfert.

    Énumération

    Lorsque vous connectez un périphérique USB à un PC se Processus

    Dénombrement, qui est que l'hôte indique à l'appareil qui vous le dit, et quelles sont leurs paramètres, tels que:
    • Consommation électrique exprimée en unités de charge
    • Points Nombre et types de terminaux
    • Classe de produit.
    • Transfert Type
    • Motif de contrôle, et ainsi de suite.

    Le processus d'énumération est initialisé par l'hôte quand il détecte un nouvel appareil a rejoint le bus L'hôte attribue une adresse à l'appareil et permet la configuration permettant le transfert des données.
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2006
    Messages : 105
    Points : 109
    Points
    109
    Par défaut
    Merci pour ta réponse et tes explications JML50 mais je pense que je n'était pas très claire.

    Mon problème est que dans la configuration des pipes bulk, on tombe souvent sur des device qui inclus plusieurs endpoint par exemple 2 IN en bulk et 2 OUT en bulk ou bien 2 IN en bulk et 3 OUT en bulk...

    ma question portait sur l’intérêt de créer plusieurs endpoint de même type de transfert, à mon avis un seul IN et un seul OUT suffisaient pour le transfert de données !

    est ce que le fait d'avoir plusieurs endpoints IN OUT en bulk améliore les performances de transfert ou non ? sinon, pourquoi se casser la tête et complexifier la configuration de l'interface ?

    Merci encore une fois

  4. #4
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    Décembre 2010
    Messages
    14 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14 939
    Points : 23 253
    Points
    23 253
    Billets dans le blog
    10
    Par défaut
    Bonsoir

    Non cela n'améliore pas la performance mais peut servir à d'autre contrôle.

    Regarde (ICI) un exemple d'utilisation
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2006
    Messages : 105
    Points : 109
    Points
    109
    Par défaut
    Je n'ai pas compris
    STP, pourriez vous me donner un exemple ?

    Merci

  6. #6
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    Décembre 2010
    Messages
    14 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14 939
    Points : 23 253
    Points
    23 253
    Billets dans le blog
    10
    Par défaut
    Bonjour

    Il y a un exemple de terminaisons dévalidées pour servir plus tard.

    Autrement une seule terminaison suffit.


    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
    if (Irq & D11_INT_EP1_OUT) {
                printf("EP1_OUT\n\r");
                D11CmdDataRead(D11_READ_LAST_TRANSACTION + D11_ENDPOINT_EP1_OUT, Buffer, 1);
                bytes = D11ReadEndpoint(D11_ENDPOINT_EP1_OUT, Buffer);
                for (count = 0; count < bytes; count++) {
                   circularbuffer[inpointer++] = Buffer[count];
                   if (inpointer >= MAX_BUFFER_SIZE) inpointer = 0;
                  }
                loadfromcircularbuffer(); //Kick Start
            }
         
            if (Irq & D11_INT_EP1_IN) {
                printf("EP1_IN\n\r");
                D11CmdDataRead(D11_READ_LAST_TRANSACTION + D11_ENDPOINT_EP1_IN, Buffer, 1);
                loadfromcircularbuffer();
            }
    EP1 OUT et EP1 In sont mis en place pour lire et écrire des données par Blocs à destination et en provenance d'un tampon mémoire circulaire. Cette configuration permet au code d'être utilisé en adéquation avec l'exemple BulkUSB provenant du DDK de Windows. Le tampon mémoire circulaire a été défini plus haut dans le code comme comportant 80 octets de long et prenant toute la banque1 de la RAM du 16F876.


    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
           if (Irq & D11_INT_EP2_OUT) {
                printf("EP2_OUT\n\r");
                D11CmdDataRead(D11_READ_LAST_TRANSACTION + D11_ENDPOINT_EP2_OUT, Buffer, 1);
                Buffer[0] = 0x01; /* Stall Endpoint */
                D11CmdDataWrite(D11_SET_ENDPOINT_STATUS + D11_ENDPOINT_EP2_OUT, Buffer, 1); 
            }
    
            if (Irq & D11_INT_EP2_IN) {
                printf("EP2_IN\n\r");
                D11CmdDataRead(D11_READ_LAST_TRANSACTION + D11_ENDPOINT_EP2_IN, Buffer, 1);
                Buffer[0] = 0x01; /* Stall Endpoint */
                D11CmdDataWrite(D11_SET_ENDPOINT_STATUS + D11_ENDPOINT_EP2_IN, Buffer, 1); 
            }
    
            if (Irq & D11_INT_EP3_OUT) {
                printf("EP3_OUT\n\r");
                D11CmdDataRead(D11_READ_LAST_TRANSACTION + D11_ENDPOINT_EP3_OUT, Buffer, 1);
                Buffer[0] = 0x01; /* Stall Endpoint */
                D11CmdDataWrite(D11_SET_ENDPOINT_STATUS + D11_ENDPOINT_EP3_OUT, Buffer, 1); 
            }
    
            if (Irq & D11_INT_EP3_IN) {
                printf("EP3_IN\n\r");
                D11CmdDataRead(D11_READ_LAST_TRANSACTION + D11_ENDPOINT_EP3_IN, Buffer, 1);
                Buffer[0] = 0x01; /* Stall Endpoint */
                D11CmdDataWrite(D11_SET_ENDPOINT_STATUS + D11_ENDPOINT_EP3_IN, Buffer, 1); 
            }
        } while (Irq);     
    }
    Les terminaisons 2 et 3 ne sont pas utilisés pour l'instant, aussi nous les bloquons si elles reçoivent une donnée quelconque. Le PDIUSBD11 a une commande SetEndpointEnable qui peut être utilisée pour valider ou dé valider la fonction de terminaison générique (n'importe qu'elle terminaison autre que le canal de communication par défaut). Nous pourrions utiliser cette commande pour dé valider les terminaisons de base, si nous envisageons de ne pas nous en servir plus tard. Toutefois pour l'instant, ce code fournit une base de travail.
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2006
    Messages : 105
    Points : 109
    Points
    109
    Par défaut
    Je pense que c'est plus claire maintenant. De toute façon je vais me baser sur deux endpoints en bulk IN et OUT. A mon avis ça serait suffisant.

    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/09/2010, 21h19
  2. Patriot Memory lance sa clé USB Rage haute Performance
    Par Mejdi20 dans le forum Communiqués
    Réponses: 0
    Dernier message: 08/09/2010, 21h53
  3. [Acquisition Vidéo USB] Quelles performances ?
    Par Titi41 dans le forum Ordinateurs
    Réponses: 0
    Dernier message: 30/09/2009, 14h45
  4. Ports USB
    Par MAIROT dans le forum Composants VCL
    Réponses: 8
    Dernier message: 23/09/2002, 20h07
  5. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24

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