APPLICATION LAYER Hugo Descoubes - Octobre 2012 Universal Serial Bus
Etats Device – Framework – Exemple sur PIC32MX 2 – copyleft APPLICATION LAYER Montons encore en abstraction pour nous rendre au niveau applicatif. Nous sommes maintenant au niveau logiciel et pouvons utiliser les pipes de communications virtuels entre host et device : Gestion au niveau applicatif de l’état du device Communication par pipe Framework générique pour le développement d’application …
Etats Device – Framework – Exemple sur PIC32MX APPLICATION LAYER La norme USB définit plusieurs états pour un device pouvant par la suite être utilisé au niveau applicatif : Attached Attached ou attaché Powered Powered ou alimenté Default Default ou défaut Address Address ou adressé Configured Configured ou configuré Suspended Suspended ou suspendu 3 – copyleft
Etats Device – Framework – Exemple sur PIC32MX APPLICATION LAYER Observons le diagramme des états pour un device : Durant une énumération sans erreur de communication, un device passe successivement par les états suivants (rouge) 4 – copyleft
Etats Device – Framework – Exemple sur PIC32MX APPLICATION LAYER La norme USB définit un cadre générique ou framework permettant de structurer les développements logiciels au niveau applicatif afin de permettre des échanges entre fonctions USB (côté host et device). Elle définit par exemple côté device : Etats du device Etats du device Traitements génériques Traitements génériques compris de tout device USB (commandes standard) descripteurs standard Structure des descripteurs standard (cf. ANNEXES) descripteurs de classe Structure des descripteurs de classe 5 – copyleft
Etats Device – Framework – Exemple sur PIC32MX APPLICATION LAYER PIC32MX sous la C toolchain C32 de Microchip Prenons l’exemple d’une application développée sur MCU 32bits PIC32MX sous la C toolchain C32 de Microchip. Microchip fournit gratuitement une stack ou bibliothèque USB pouvant être librement utilisable tant qu’elle reste portée sur leurs processeurs ( : Cliquer ici ! Cliquer ici ! 6 – copyleft
Etats Device – Framework – Exemple sur PIC32MX APPLICATION LAYER Observons quelques extraits de la documentation de cette stack : 7 – copyleft
Etats Device – Framework – Exemple sur PIC32MX APPLICATION LAYER Etudions l’architecture d’une application USB sur PIC32MX. Il s’agit ici d’une application device en classe HID ou Human Interface Device en mode polling. Une souris USB par exemple : 8 – copyleft
Etats Device – Framework – Exemple sur PIC32MX APPLICATION LAYER Etudions l’architecture d’une application USB sur PIC32MX. Il s’agit ici d’une application device en classe HID ou Human Interface Device en mode polling. Une souris USB par exemple : 9 – copyleft
Etats Device – Framework – Exemple sur PIC32MX APPLICATION LAYER Au niveau applicatif, nous n’avons qu’à gérer les payloads à pré-charger ou lire dans les endpoints. Il est alors aisé d’ouvrir plusieurs pipes de communication ciblant plusieurs fonctions USB via différents endpoints : 10 – copyleft
Etats Device – Framework – Exemple sur PIC32MX APPLICATION LAYER Attention, contrairement à un UART, ce n’est pas parce que vous avez écrit dans un endpoint que la donnée sera envoyée tout de suite. Il est maintenant du ressort du contrôleur USB de respecter les couches protocolaires de la norme puis de répondre en attendant une requête du host : 11 – copyleft
Merci de votre attention !