Opret et program

Dette kapitel beskriver softwarestrukturen for USB-værtskomponenten og forklarer brugen af den til at oprette et USB-værtsprogram. Denne softwarekomponent er kun tilgængelig for brugere af MDK-Professional.

USB Host-komponenten forenkler softwareudviklingen af mikrocontrollersystemer, der gør det muligt at tilslutte USB-enheder. USB-værtskomponentens egenskaber er:

  • Kompatibel med USB 2.0-specifikationen.
  • Støtte til HID-, MSC-, CDC- og brugerdefinerede USB-enhedsklasser, der kan tilsluttes til USB-værten.
  • Støtte til kontrol-, afbrydelses- og bulkoverførselstyper.

RTE-komponenter

Det følgende billede viser relationerne mellem RTE-komponenterne og mikrocontrollerens USB-værtsperiferi (USB-controller). RTE-komponenterne leverer konfigurationsfiler og brugerkodeskabeloner. Konfigurationsfiler konfigurerer RTE-komponenterne, hardwaregrænseflader, hukommelsesressourcer og USB-værtsparametre. Brugerkodeskabeloner giver skelettet til implementering af understøttelse af forskellige USB-enhedsklasser.

usb_host_blocks_config_files.png

USB Host-struktur

Trinene for at oprette et mikrocontrollerprogram, der fungerer som en USB Host, er:

  1. Vælg de RTE-komponenter, der er nødvendige for dit program.
  2. Aktiver og konfigurer USB-værtsdriveren.
  3. Konfigurer USB-værten, der forbinder USB Middleware til mikrocontrollerens USB-periferiudstyr.
  4. Konfigurer systemressourcerne i overensstemmelse med USB-værtskomponentens ressourcekrav.
  5. Konfigurer parametrene for de tilsluttede USB-enheder.
  6. Implementer applikationskoden ved hjælp af kodeskabeloner, der leveres til understøttelse af forskellige USB-enhedsklasser.
  7. Debug din applikation ved hjælp af de indbyggede mekanismer i USB-komponenten.

Valg af RTE-komponent

Valget af RTE-komponent foregår i nogle få trin:

  1. Fra USB-komponenten:
    • Vælg USB:CORE, som giver den grundlæggende funktionalitet, der kræves til USB-kommunikation.
    • Sæt USB:Host til ‘1’. Dette opretter én USB-vært til kommunikation med tilsluttede USB-enheder.
    • Vælg den ønskede understøttelse af USB-klasser (HID/MSC/CDC/Custom Class). Vælg f.eks. USB:Host:HID for kun at understøtte enheder i HID-klassen.
  2. Fra Drivers Component:
    • Vælg en passende USB-værtsdriver, der passer til dit program.
  3. Fra Device Component:
    • Der kan være behov for yderligere enhedsspecifikke drivere i henhold til valideringsoutputtet.
  4. Fra CMSIS-komponenten:
    • Vælg CMSIS:CORE for at levere kerneinterfacet til processoren.
    • Vælg en egnet CMSIS:RTOS eller CMSIS:RTOS2, som er påkrævet for applikationen.
USBH_RTE.png

RTE-komponentvalg

USB-driver og -controller

USB-værtsdriveren og USB-controlleren for mikrocontrolleren skal være korrekt konfigureret. Det betyder især:

  • Den USB-værtsdriver, der er valgt under Drivers Component, er typisk konfigureret med konfigurationsfilen RTE_Device.h. Selv om denne fil indeholder flere muligheder, er det typisk nok til at aktivere USB-værtsperiferien i forbindelse med denne driver. Nogle mikrocontrollere kan kræve indstillinger, der relaterer sig til en fysisk laggrænseflade (PHY), USB VBUS-strøm og overstrømsbeskyttelse.
  • Mikrocontrollerens USB-controller har typisk brug for specifikke clockindstillinger. Se brugervejledningen til mikrocontrolleren for at forstå kravene. Alternativt kan du kopiere opsætningen af et USB Host-eksempel, der leveres til forskellige evalueringskort.

USB Host-konfiguration

Filen USBH_Config_n.c indeholder yderligere indstillinger for den specifikke USB Host:

  • Drivernummeret indstilles i henhold til den valgte USB Controller. For enkelt USB-enhedscontrollere vil det være ‘0’.
  • Nogle mikrocontrollere kan gøre brug af forskellige hardware Controller Interfaces. Se brugervejledningen til den valgte mikrocontroller for at vælge den korrekte indstilling.

Referer til Konfiguration for at få en detaljeret liste over alle tilgængelige indstillinger.

Systemressourcekonfiguration

For korrekt drift kræver USB-værtskomponenten nogle systemkonfigurationsindstillinger. Kravene er:

  • Der kræves en ekstra stakstørrelse på 512 byte. Dette kan konfigureres i enhedens fil (Stack_Size).
  • USB-enhedskomponenten bruger CMSIS-RTOS-tråde. Hvis RTX v5 anvendes, er det ikke nødvendigt at foretage ændringer i RTX-indstillingerne, da alle ressourcer allokeres statisk. Hvis RTX v4 anvendes, skal du ændre følgende indstillinger i filen:
    • Og øge antallet af samtidig kørende brugertråde med antallet af tråde, der kræves af USB-værten
    • Og øge antallet af tråde med bruger-forudsat stakstørrelse med antallet af tråde, der kræves af USB-værten
    • Forøg den samlede stakstørrelse for tråde med brugerforudsat stakstørrelse med størrelsen af tråde, der kræves af USB-værten
    • Aktiverer brugertimere

For yderligere oplysninger:

se afsnittet Ressourcekrav for USB-værtskomponenten i afsnittet Ressourcekrav.

Konfiguration af USB-enheder, der kan tilsluttes

I USBH_Config_HID.h, USBH_Config_MSC.h, USBH_Config_CDC.h eller USBH_Config_CustomClass.h kan du angive antallet af samtidige USB-enheder, som USB-værten understøtter. Dette har en indvirkning på den mængde hukommelse, der vil blive reserveret i dit program til tilknytning af USB-enheder. Eksemplerne viser, hvordan man konfigurerer en USB-vært til at interagere med forskellige HID-, MSC- eller CDC-periferienheder.

User Code Implementation

filer indeholder funktionsskabeloner til at understøtte forskellige USB-enhedsklasser på USB-værten. De tilgængelige funktioner er forklaret i referenceafsnittet i USB-værtskomponenten. Disse rutiner kan tilpasses til mikrocontroller-applikationens behov, hvis der er behov for andre funktioner end standardfunktionaliteten.

Følgende skabeloner er tilgængelige for USB-værtskomponenten:

Skabelonnavn Formål
USBH_MSC.c Nødvendige funktioner for at understøtte MSC-enheder. Skabelonen kan findes her.
USBH_PL2303.c Nødvendige funktioner til at understøtte Prolific PL2303 USB til seriel RS232-adapter. Skabelonen kan findes her.
USBH_User_CustomClass.c Nødvendige funktioner til at understøtte en hvilken som helst USB-enhedsklasse. Skabelonen kan findes her.

Debugging

USB-værtskomponenten distribueres i biblioteksform og tillader ikke direkte debugning af dens kode. Den kan dog nemt konfigureres til at generere debug-hændelser og give dynamisk synlighed for komponentens drift.

Følgende varianter kan vælges for USB:CORE-softwarekomponenten i vinduet Administrer køretidsmiljø:

  • Debug: Denne variant understøtter hændelsesannotationer for og gør det meget nemt at analysere USB-værtskomponentens interne drift under programdebugning. Støtte til hændelsesoptager nedenfor forklarer, hvordan du konfigurerer og bruger denne variant.
  • Release: Denne variant indeholder ikke yderligere debuggingkode. Brug denne variant, når du implementerer applikationen.

Figuren nedenfor viser valg af Debug-varianten.

usbh_debug_variant.png

Den USB Host:Debug Events beskriver de hændelser, der er implementeret i USB-enhedskomponenten.

Event Recorder Support

er et kraftfuldt værktøj, der giver synlighed til den dynamiske udførelse af programmet.

USB-værtskomponenten genererer et bredt sæt af debughændelser til hændelsesoptageren og implementerer den nødvendige infrastruktur til grænseflade med den.

For at bruge hændelsesoptageren er det nødvendigt at oprette et image med understøttelse af hændelsesgenerering. De nødvendige trin er:

  1. : i RTE-administrationsdialogen vælges Debug-varianten for softwarekomponenten USB:CORE.
  2. : i RTE-administrationsdialogen aktiveres softwarekomponenten Compiler:Event Recorder.
  3. Sørg for, at Event Recorder initialiseres fortrinsvis ved, hvis CMSIS-RTOS2 RTX v5 anvendes, eller alternativt ved at kalde funktionen i applikationskoden.
  4. Konfiguration af hændelsesoptageren: Juster om nødvendigt standardkonfigurationen af hændelsesoptageren.
  5. Byg applikationskoden op, download den til målhardwaren og start debug-sessionen.

Nu, når USB-værten genererer hændelsesoplysninger, kan de ses i .

Konfiguration af hændelsesoptageren

Dette afsnit beskriver konfigurationsindstillingerne for hændelsesoptageren. Brugen kræver debug-varianten af softwarekomponenten USB:CORE; se Support for hændelsesoptager for yderligere oplysninger.

USB Event Generation Configuration

Vælg USB:CORE-debug-varianten, så tilføjes filen USB_Debug.c til dit projekt. Brug denne fil til at indstille konfigurationen af hændelsesgenerering for USB core, drivere og enhedsklasser separat. Filen er tilgængelig for USB-enheds- og værtskomponenter.

USBH_USB_Debug_c.png

USB_Debug.c-fil til konfiguration af hændelsesgenerering

Følgende indstillinger er tilgængelige for konfiguration af hændelsesgenerering for hvert modul:

  • Off betyder, at ingen hændelser genereres af modulet
  • Errors betyder, at kun fejlhændelser genereres af modulet
  • Errors + API betyder, at fejl- og API-kaldshændelser genereres af modulet
  • All betyder, at alle tilgængelige hændelser genereres af modulet
  • . Ud over fejl- og API-kaldshændelser indeholder dette også drifts- og detaljerede hændelser.

Hændelses-id’er

USB-værtskomponenten bruger følgende hændelses-id’er:

Komponent Hændelses-ID
USBH_Core 0xB0
USBH_Driver 0xB1
USBH_CC 0xB2
USBH_CDC 0xB3
USBH_HID 0xB4
USBH_MSC 0xB5