Вы находитесь на странице: 1из 12

APPLICATION LAYER

Universal Serial Bus

Hugo Descoubes - Octobre 2012


Etats Device Framework Exemple sur PIC32MX

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 ltat du device


Communication par pipe
Framework gnrique pour le dveloppement dapplication
2 copyleft
Etats Device Framework Exemple sur PIC32MX

APPLICATION LAYER
La norme USB dfinit plusieurs tats pour un device pouvant
par la suite tre utilis au niveau applicatif :

Attached ou attach

Powered ou aliment

Default ou dfaut

Address ou adress

Configured ou configur

Suspended ou suspendu 3 copyleft


Etats Device Framework Exemple sur PIC32MX

APPLICATION LAYER

Observons le diagramme des


tats pour un device :

Durant une numration 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 dfinit un cadre gnrique ou framework


permettant de structurer les dveloppements logiciels au niveau
applicatif afin de permettre des changes entre fonctions USB (ct
host et device). Elle dfinit par exemple ct device :

Etats du device

Traitements gnriques compris de tout device USB (commandes


standard)

Structure des descripteurs standard (cf. ANNEXES)

Structure des descripteurs de classe


5 copyleft
Etats Device Framework Exemple sur PIC32MX

APPLICATION LAYER
Prenons lexemple dune application dveloppe sur MCU
32bits PIC32MX sous la C toolchain C32 de Microchip. Microchip
fournit gratuitement une stack ou bibliothque USB pouvant tre
librement utilisable tant quelle reste porte sur leurs processeurs
(www.microhip.com/usb) :

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 larchitecture dune application USB sur PIC32MX. Il
sagit ici dune 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 larchitecture dune application USB sur PIC32MX. Il
sagit ici dune application device en classe HID ou Human Interface
Device en mode polling. Une souris USB par exemple :

unsigned char hidInBuffer[4]; void usbFunction(void) {


USB_HANDLE lastInTx = 0;
// Test l'tat du Device (numration ou perte connexion)
if( (USBGetDeviceState() < CONFIGURED_STATE) || \
int main(void){ (USBIsDeviceSuspended() == TRUE))
return;
// Configuration USB stack (tat dfaut)
USBDeviceInit(); // Endpoint HID IN vide
if( !HIDTxHandleBusy( lastInTx )) {
while(1){
// Process USB stack // User function code (MAJ hidInBuffer)
USBDeviceTasks();
// MAJ endpoint HID IN
// fonction remote USB lastInTx = HIDTxPacket(HID_EP, (BYTE*) hidInBuffer, sizeof(hidInBuffer));
usbFunction(); }
} }
}

9 copyleft
Etats Device Framework Exemple sur PIC32MX

APPLICATION LAYER
Au niveau applicatif, nous navons qu grer les payloads
pr-charger ou lire dans les endpoints. Il est alors ais douvrir
plusieurs pipes de communication ciblant plusieurs fonctions USB via
diffrents endpoints :

10 copyleft
Etats Device Framework Exemple sur PIC32MX

APPLICATION LAYER
Attention, contrairement un UART, ce nest pas parce que vous
avez crit dans un endpoint que la donne sera envoye tout de suite.
Il est maintenant du ressort du contrleur USB de respecter les couches
protocolaires de la norme puis de rpondre en attendant une requte
du host :

11 copyleft
Merci de votre attention !

Вам также может понравиться