Het schrijven van een device driver voor Windows

  • Slides: 52
Download presentation
Het schrijven van een device driver voor Windows 2000 deel 2

Het schrijven van een device driver voor Windows 2000 deel 2

Over deze presentatie n n n Gedeelte over USB Gedeelte over device drivers (±

Over deze presentatie n n n Gedeelte over USB Gedeelte over device drivers (± 30 min. ) (± 15 min. ) Vragen kunnen gesteld worden na elk deelonderwerp en aan het einde 2

USB Inhoud USB n n Uitleg USB protocol Cypress EZ-USB oplossing 3

USB Inhoud USB n n Uitleg USB protocol Cypress EZ-USB oplossing 3

USB protocol

USB protocol

USB protocol • • USB protocol Algemeen Snelheden Lagenmodel Soorten endpoints Descriptors Klassespecificaties Driverimplementatie

USB protocol • • USB protocol Algemeen Snelheden Lagenmodel Soorten endpoints Descriptors Klassespecificaties Driverimplementatie 5

Algemeen • • • USB protocol Erg gemakkelijk voor de eindgebruiker Erg complex voor

Algemeen • • • USB protocol Erg gemakkelijk voor de eindgebruiker Erg complex voor ontwikkelaars Host controller, hubs en apparaten Piramidesysteem, max. 127 apparaten Apparaten bevatten min. één functie 6

Algemeen (2) USB protocol • Host controller heeft I/O adressen en IRQ • USB

Algemeen (2) USB protocol • Host controller heeft I/O adressen en IRQ • USB root hubs en alles wat erop is aangesloten hebben geen I/O adressen of IRQ’s 7

Low speed • • USB protocol Zeer langzaam 10 – 100 kbit/s Zeer goedkoop

Low speed • • USB protocol Zeer langzaam 10 – 100 kbit/s Zeer goedkoop USB kabel permanent bevestigd Geen gegarandeerde snelheden 8

Full speed • Redelijk snel • Redelijk goedkoop USB protocol 0, 5 – 10

Full speed • Redelijk snel • Redelijk goedkoop USB protocol 0, 5 – 10 Mbit/s 9

High speed USB protocol • Zeer snel 25 – 500 Mbit/s • Nog vrij

High speed USB protocol • Zeer snel 25 – 500 Mbit/s • Nog vrij duur en moeilijker verkrijgbaar • Vereist speciale host controller en hubs voor optimale werking • Poorten op hostcontroller en hubs zorgen voor compatibiliteit met Low en Full speed 10

Lagenmodel USB protocol endpoint verzameling 11

Lagenmodel USB protocol endpoint verzameling 11

Communicatie USB protocol IN DATA ACK OUT DATA STALL bijv. token evt. data status

Communicatie USB protocol IN DATA ACK OUT DATA STALL bijv. token evt. data status fases Pakket Pakket transactie • • Control verzoek Bulk overdracht Isochrone overdracht Interrupt overdracht 12

USB protocol Soorten endpoints • • • Control Bulk Isochronous Interrupt Alle bidirectioneel, initiatief

USB protocol Soorten endpoints • • • Control Bulk Isochronous Interrupt Alle bidirectioneel, initiatief vanuit host 13

Control endpoint • • USB protocol Besturingsverzoeken aan het apparaat Gegarandeerd 10% bandbreedte Herhaalde

Control endpoint • • USB protocol Besturingsverzoeken aan het apparaat Gegarandeerd 10% bandbreedte Herhaalde verzending tot 3 maal Voorbeelden: – GET_DESCRIPTOR – SET_CONFIGURATION – SET_INTERFACE 14

Bulk endpoints USB protocol • Gebruikt overgebleven bandbreedte geen bandbreedte gegarandeerd • Middelmatige hoeveelheden

Bulk endpoints USB protocol • Gebruikt overgebleven bandbreedte geen bandbreedte gegarandeerd • Middelmatige hoeveelheden data • Foutcorrectie en herhaald verzenden • Voorbeelden: – Scanner data 15

USB protocol Isochronous endpoints • • Gegarandeerde bandbreedte Grote hoeveelheden data Geen foutcorrectie of

USB protocol Isochronous endpoints • • Gegarandeerde bandbreedte Grote hoeveelheden data Geen foutcorrectie of herhaald verzenden Voorbeelden: – Audio stream – Video stream 16

USB protocol Interrupt endpoints • Gegarandeerde maximumvertraging (1 ms – 32 ms) • Onregelmatige

USB protocol Interrupt endpoints • Gegarandeerde maximumvertraging (1 ms – 32 ms) • Onregelmatige kleine hoeveelheden data • Herhaald verzenden • Resulteert niet in een “echte” interrupt; er is sprake van ‘polling’ 17

Descriptors USB protocol Bron: http: //www. beyondlogic. org/usbnutshell/usb 5. htm 18

Descriptors USB protocol Bron: http: //www. beyondlogic. org/usbnutshell/usb 5. htm 18

String descriptors USB protocol • Unicode karakterset • Verschillende talen • Kan naar verwezen

String descriptors USB protocol • Unicode karakterset • Verschillende talen • Kan naar verwezen worden vanuit Device, Configuration & Endpoint descriptors 19

USB protocol USB klassespecificatie • Uitgegeven door USB Implementors Forum • Definieert eisen aan

USB protocol USB klassespecificatie • Uitgegeven door USB Implementors Forum • Definieert eisen aan device wat betreft: – descriptors – interfaces – endpoints – verzoeken • Mogelijkheid tot algemene driver • Herkenbaar aan veld in Device descriptor 20

USB protocol Driverimplementatie • URB’s: USB Request Blocks • Usb. Build. Xxx macro’s •

USB protocol Driverimplementatie • URB’s: USB Request Blocks • Usb. Build. Xxx macro’s • Io. Call. Driver functie 21

USB protocol Einde USB protocol • • • Snelheden Lagenmodel Soorten endpoints Descriptors Klassespecificaties

USB protocol Einde USB protocol • • • Snelheden Lagenmodel Soorten endpoints Descriptors Klassespecificaties Driverimplementatie 22

Vragen Er kunnen nu vragen over het USB protocol gesteld worden.

Vragen Er kunnen nu vragen over het USB protocol gesteld worden.

EZ-USB oplossing

EZ-USB oplossing

EZ-USB oplossing • • Cypress EZ-USB chip Cypress EZ-USB toolkit USB MP 3 device

EZ-USB oplossing • • Cypress EZ-USB chip Cypress EZ-USB toolkit USB MP 3 device USB experimenteerbord 25

EZ-USB oplossing EZ-USB chip • Cypress AN 2131 • Snelheid effectief 6 MHz (24

EZ-USB oplossing EZ-USB chip • Cypress AN 2131 • Snelheid effectief 6 MHz (24 MHz ÷ 4 klokpulsen) • 8 kilobyte intern RAM • Dataoverdracht van MCU naar USB module via RAM geheugen • Laden van firmware via USB 26

EZ-USB oplossing Cypress EZ-USB toolkit • Firmware voor Keil C 51 – Keil u.

EZ-USB oplossing Cypress EZ-USB toolkit • Firmware voor Keil C 51 – Keil u. Vision 2 benodigd • Test programma (EZ-USB Control Panel) • Broncode van een universele driver • Veel documentatie 27

EZ-USB oplossing 28

EZ-USB oplossing 28

EZ-USB oplossing USB MP 3 Device • Twee stereo MP 3 naar analoog decoders

EZ-USB oplossing USB MP 3 Device • Twee stereo MP 3 naar analoog decoders verbonden via SPI bus via UART met EZUSB processor • Functioneert als terugloopapparaat en genereert een test sinustoon via een speciaal commando • Functioneert in de toekomst als USB geluidskaart 29

EZ-USB oplossing USB experimenteerbord • • 32 kilobyte extra RAM geheugen EEPROM via I

EZ-USB oplossing USB experimenteerbord • • 32 kilobyte extra RAM geheugen EEPROM via I 2 C bus 8 LEDs 4 drukknoppen, optioneel als interrupts 2 RS 232 poorten LCD aansluiting Standaardheaders voor uitbreidingen voor printplaat Peter Klijn 30

EZ-USB oplossing 31

EZ-USB oplossing 31

EZ-USB oplossing USB experimenteerbord (2) • Hardware is deze week gereed • Als voorbeeld

EZ-USB oplossing USB experimenteerbord (2) • Hardware is deze week gereed • Als voorbeeld wordt een aangepaste driver geschreven • Geschikt als voorbeeldhardware bij het schrijven van een eigen driver • Geschikt om te leren werken met een 8051 processor 32

EZ-USB oplossing Einde EZ-USB oplossing • Handige toolkit, inclusief alle benodigde broncode en documentatie

EZ-USB oplossing Einde EZ-USB oplossing • Handige toolkit, inclusief alle benodigde broncode en documentatie • Tenminste twee projecten maken op dit moment gebruik van de EZ-USB chip • Het toekomstgerichte experimenteerbord zorgt dat Cypress EZ-USB voorlopig de standaard is binnen Fontys 33

Vragen Er kunnen nu vragen over de EZ-USB oplossing gesteld worden.

Vragen Er kunnen nu vragen over de EZ-USB oplossing gesteld worden.

USB Slot USB n n USB protocol EZ-USB oplossing 35

USB Slot USB n n USB protocol EZ-USB oplossing 35

Device drivers Inhoud device drivers n n Tips Vervolg uitleg over device drivers 36

Device drivers Inhoud device drivers n n Tips Vervolg uitleg over device drivers 36

Tips • IN en OUT zijn lege strings, maar ze bieden wel meer duidelijkheid

Tips • IN en OUT zijn lege strings, maar ze bieden wel meer duidelijkheid • Noem dispatch routines altijd algemeen bijv. niet “Bel. Dispatch. Create”, maar “Dispatch. Create” • Maak geen gebruik van CUString klasse • Gebruik Kd. Print i. p. v. Dbg. Print 37

Uitleg device drivers

Uitleg device drivers

Device drivers Uitleg device drivers • IRQL’s • Overlapped • Buffermechanisme 39

Device drivers Uitleg device drivers • IRQL’s • Overlapped • Buffermechanisme 39

Device drivers Interrupt Request Levels (IRQL) • Code binnen een bepaald IRQL kan niet

Device drivers Interrupt Request Levels (IRQL) • Code binnen een bepaald IRQL kan niet geïnterrumpeerd door code met een lager of gelijk IRQL • Code binnen PASSIVE_LEVEL en APC_LEVEL kan wel worden onderbroken door het pre-emption mechanisme voor threads, bij hogere levels kan dat niet • Hoe hoger het IRQL, hoe beperkter een driver is in zijn aanroepen 40

IRQL (2) Device drivers • HIGH_LEVEL Geen geheugenallocatie • DIRQL: hardware IRQL’s • DISPATCH_LEVEL

IRQL (2) Device drivers • HIGH_LEVEL Geen geheugenallocatie • DIRQL: hardware IRQL’s • DISPATCH_LEVEL Page faults zijn uit den boze • APC_LEVEL • PASSIVE_LEVEL Page faults mogen voorkomen 41

Overlapped Device drivers • Aanroep aan Write. File, Read. File en Device. Io. Control

Overlapped Device drivers • Aanroep aan Write. File, Read. File en Device. Io. Control is altijd synchroon, ongeacht driverimplementatie • Create. File met FILE_FLAG_OVERLAPPED en extra parameter aan overige functies langdurige operaties gaan asynchroon 42

Device drivers Buffermechanismen • Buffered I/O • Direct I/O – In – Uit 43

Device drivers Buffermechanismen • Buffered I/O • Direct I/O – In – Uit 43

Buffered I/O User mode Kernel mode Invoerbuffer Systeembuffer Device drivers uitvoering Dispatch. Device. Control

Buffered I/O User mode Kernel mode Invoerbuffer Systeembuffer Device drivers uitvoering Dispatch. Device. Control routine Uitvoerbuffer Systeembuffer 44

Direct I/O (in) User mode Device drivers Kernel mode gebruikersbuffer wordt gevuld MDL wordt

Direct I/O (in) User mode Device drivers Kernel mode gebruikersbuffer wordt gevuld MDL wordt gemapt in het geheugen uitvoering Dispatch. Device. Control routine, waarbij gebruikgemaakt wordt van inhoud van gemapt geheugen 45

Direct I/O (uit) User mode MDL Device drivers Kernel mode MDL wordt gemapt in

Direct I/O (uit) User mode MDL Device drivers Kernel mode MDL wordt gemapt in het geheugen uitvoering Dispatch. Device. Control routine, waarbij geschreven wordt naar gemapt geheugen inhoud van gebruikersbuffer wordt gebruikt 46

Device drivers Einde uitleg device drivers • IRQL’s • Overlapped • Buffermechanismen 47

Device drivers Einde uitleg device drivers • IRQL’s • Overlapped • Buffermechanismen 47

Vragen Er kunnen nu vragen over device drivers gesteld worden.

Vragen Er kunnen nu vragen over device drivers gesteld worden.

Device drivers Slot device drivers n n Tips Uitleg over device drivers 49

Device drivers Slot device drivers n n Tips Uitleg over device drivers 49

Verdere stage n n Stage duurt nog circa 11 weken Vrijwel elke dag tot

Verdere stage n n Stage duurt nog circa 11 weken Vrijwel elke dag tot aan de zomervakantie beschikbaar voor vragen over device drivers in lokaal 0. 153 50

Vragen Algemene vragen over deze presentatie kunnen nu gesteld worden.

Vragen Algemene vragen over deze presentatie kunnen nu gesteld worden.

Einde Deze Power. Point presentatie is desgewenst te downloaden vanaf: stage. sools. com

Einde Deze Power. Point presentatie is desgewenst te downloaden vanaf: stage. sools. com