![Page 1: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/1.jpg)
Het schrijven van een device Het schrijven van een device driverdriver
voor Windows 2000
deel 2
![Page 2: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/2.jpg)
22
Over deze presentatieOver deze presentatie
Gedeelte over USBGedeelte over USB ((±30±30 min.)min.)
Gedeelte over device driversGedeelte over device drivers((±15±15 min.) min.)
Vragen kunnen gesteld worden na Vragen kunnen gesteld worden na elk deelonderwerp en aan het eindeelk deelonderwerp en aan het einde
![Page 3: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/3.jpg)
33
Inhoud USBInhoud USB
Uitleg USB protocolUitleg USB protocol Cypress EZ-USB oplossingCypress EZ-USB oplossing
USB
![Page 4: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/4.jpg)
USB protocolUSB protocol
![Page 5: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/5.jpg)
5
USB protocol
USB protocol
• Algemeen• Snelheden• Lagenmodel• Soorten endpoints• Descriptors• Klassespecificaties• Driverimplementatie
![Page 6: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/6.jpg)
6
USB protocol
Algemeen
• Erg gemakkelijk voor de eindgebruiker
• Erg complex voor ontwikkelaars• Host controller, hubs en apparaten• Piramidesysteem, max. 127
apparaten• Apparaten bevatten min. één functie
![Page 7: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/7.jpg)
7
USB protocol
Algemeen (2)
• 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
![Page 8: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/8.jpg)
8
USB protocol
Low speed
• Zeer langzaam 10 – 100 kbit/s
• Zeer goedkoop
• USB kabel permanent bevestigd
• Geen gegarandeerde snelheden
![Page 9: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/9.jpg)
9
USB protocol
Full speed
• Redelijk snel 0,5 – 10 Mbit/s
• Redelijk goedkoop
![Page 10: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/10.jpg)
10
USB protocol
High speed
• 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
![Page 11: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/11.jpg)
11
USB protocol
Lagenmodel
endpointverzameling
![Page 12: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/12.jpg)
12
USB protocol
Communicatie
Pakket PakketPakket Pakket PakketPakket
transactie transactie
• Control verzoek• Bulk overdracht• Isochrone overdracht• Interrupt overdracht
token evt. data status token evt. data status fases
IN DATA ACK OUT DATA STALL bijv.
![Page 13: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/13.jpg)
13
USB protocol
Soorten endpoints
• Control
• Bulk
• Isochronous
• Interrupt
• Alle bidirectioneel, initiatief vanuit host
![Page 14: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/14.jpg)
14
USB protocol
Control endpoint
• Besturingsverzoeken aan het apparaat
• Gegarandeerd 10% bandbreedte
• Herhaalde verzending tot 3 maal
• Voorbeelden:– GET_DESCRIPTOR– SET_CONFIGURATION– SET_INTERFACE
![Page 15: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/15.jpg)
15
USB protocol
Bulk endpoints
• Gebruikt overgebleven bandbreedte geen bandbreedte gegarandeerd
• Middelmatige hoeveelheden data
• Foutcorrectie en herhaald verzenden
• Voorbeelden:– Scanner data
![Page 16: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/16.jpg)
16
USB protocol
Isochronous endpoints
• Gegarandeerde bandbreedte
• Grote hoeveelheden data
• Geen foutcorrectie of herhaald verzenden
• Voorbeelden:– Audio stream– Video stream
![Page 17: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/17.jpg)
17
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’
![Page 18: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/18.jpg)
18
USB protocol
Descriptors
Bron: http://www.beyondlogic.org/usbnutshell/usb5.htm
![Page 19: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/19.jpg)
19
USB protocol
String descriptors
• Unicode karakterset
• Verschillende talen
• Kan naar verwezen worden vanuit
Device, Configuration & Endpoint descriptors
![Page 20: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/20.jpg)
20
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
![Page 21: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/21.jpg)
21
USB protocol
Driverimplementatie
• URB’s: USB Request Blocks
• UsbBuildXxx macro’s
• IoCallDriver functie
![Page 22: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/22.jpg)
22
USB protocol
Einde USB protocol
• Snelheden• Lagenmodel• Soorten endpoints• Descriptors• Klassespecificaties• Driverimplementatie
![Page 23: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/23.jpg)
VragenVragen
Er kunnen nu vragen over het USB Er kunnen nu vragen over het USB protocol gesteld worden.protocol gesteld worden.
![Page 24: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/24.jpg)
EZ-USB oplossingEZ-USB oplossing
![Page 25: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/25.jpg)
25
EZ-USB oplossingEZ-USB oplossing
• Cypress EZ-USB chip• Cypress EZ-USB toolkit• USB MP3 device• USB experimenteerbord
![Page 26: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/26.jpg)
26
EZ-USB oplossingEZ-USB chip
• Cypress AN2131
• 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
![Page 27: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/27.jpg)
27
EZ-USB oplossingCypress EZ-USB toolkit
• Firmware voor Keil C51– Keil uVision 2 benodigd
• Test programma (EZ-USB Control Panel)
• Broncode van een universele driver• Veel documentatie
![Page 28: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/28.jpg)
28
EZ-USB oplossing
![Page 29: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/29.jpg)
29
EZ-USB oplossingUSB MP3 Device
• Twee stereo MP3 naar analoog decoders
verbonden via SPI bus via UART met EZ-USB processor
• Functioneert als terugloopapparaat en genereert een test sinustoon via een speciaal commando
• Functioneert in de toekomst als USB geluidskaart
![Page 30: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/30.jpg)
30
EZ-USB oplossingUSB experimenteerbord
• 32 kilobyte extra RAM geheugen• EEPROM via I2C bus• 8 LEDs• 4 drukknoppen, optioneel als interrupts• 2 RS232 poorten• LCD aansluiting• Standaardheaders voor uitbreidingen voor
printplaat Peter Klijn
![Page 31: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/31.jpg)
31
EZ-USB oplossing
![Page 32: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/32.jpg)
32
EZ-USB oplossingUSB 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
![Page 33: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/33.jpg)
33
EZ-USB oplossingEinde 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
![Page 34: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/34.jpg)
VragenVragen
Er kunnen nu vragen over de EZ-USB Er kunnen nu vragen over de EZ-USB oplossing gesteld worden.oplossing gesteld worden.
![Page 35: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/35.jpg)
3535
Slot USBSlot USB
USB protocolUSB protocol EZ-USB oplossingEZ-USB oplossing
USB
![Page 36: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/36.jpg)
3636
Inhoud device driversInhoud device drivers
TipsTips Vervolg uitleg over device driversVervolg uitleg over device drivers
Device drivers
![Page 37: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/37.jpg)
37
Tips
Tips
• IN en OUT zijn lege strings,
maar ze bieden wel meer duidelijkheid
• Noem dispatch routines altijd algemeen
bijv. niet “BelDispatchCreate”,
maar “DispatchCreate”
• Maak geen gebruik van CUString klasse
• Gebruik KdPrint i.p.v. DbgPrint
![Page 38: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/38.jpg)
Uitleg device driversUitleg device drivers
![Page 39: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/39.jpg)
39
Device driversUitleg device drivers
• IRQL’s
• Overlapped
• Buffermechanisme
![Page 40: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/40.jpg)
40
Device driversInterrupt 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
Device drivers
![Page 41: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/41.jpg)
41
Device driversIRQL (2)
• HIGH_LEVEL
Geen geheugenallocatie
• DIRQL: hardware IRQL’s
• DISPATCH_LEVEL
Page faults zijn uit den boze
• APC_LEVEL
• PASSIVE_LEVEL
Page faults mogen voorkomen
Device drivers
![Page 42: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/42.jpg)
42
Device driversOverlapped
• Aanroep aan WriteFile, ReadFile en DeviceIoControl is altijd synchroon, ongeacht driverimplementatie
• CreateFile met FILE_FLAG_OVERLAPPED en
extra parameter aan overige functies langdurige operaties gaan asynchroon
![Page 43: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/43.jpg)
43
Device driversBuffermechanismen
• Buffered I/O
• Direct I/O– In– Uit
![Page 44: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/44.jpg)
44
Device driversBuffered I/O
Invoerbuffer
Uitvoerbuffer
Systeembuffer
User mode Kernel mode
Systeembuffer
uitvoering DispatchDeviceControl routine
![Page 45: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/45.jpg)
45
Device driversDirect I/O (in)
MDL
User mode Kernel mode
uitvoering DispatchDeviceControl routine,waarbij gebruikgemaakt wordt van inhoud van gemapt geheugen
MDL wordt gemapt in het geheugen
gebruikersbuffer wordt gevuld
![Page 46: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/46.jpg)
46
Device driversDirect I/O (uit)
MDL
User mode Kernel mode
uitvoering DispatchDeviceControl routine,waarbij geschreven wordt naar gemapt geheugen
MDL wordt gemapt in het geheugen
inhoud van gebruikersbuffer wordt gebruikt
![Page 47: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/47.jpg)
47
Device driversEinde uitleg device drivers
• IRQL’s
• Overlapped
• Buffermechanismen
![Page 48: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/48.jpg)
VragenVragen
Er kunnen nu vragen over device Er kunnen nu vragen over device drivers gesteld worden.drivers gesteld worden.
![Page 49: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/49.jpg)
4949
Slot device driversSlot device drivers
TipsTips Uitleg over device driversUitleg over device drivers
Device drivers
![Page 50: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/50.jpg)
5050
Verdere stageVerdere stage
Stage duurt nog circa 11 wekenStage duurt nog circa 11 weken Vrijwel elke dag tot aan de Vrijwel elke dag tot aan de
zomervakantie beschikbaar voor zomervakantie beschikbaar voor vragen over device drivers in lokaal vragen over device drivers in lokaal 0.1530.153
![Page 51: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/51.jpg)
VragenVragen
Algemene vragen over deze Algemene vragen over deze presentatie kunnen nu gesteld worden.presentatie kunnen nu gesteld worden.
![Page 52: Het schrijven van een device driver voor Windows 2000 deel 2](https://reader036.vdocuments.net/reader036/viewer/2022062513/5551a0ef4979591f3c8b9961/html5/thumbnails/52.jpg)
EindeEinde
Deze PowerPoint presentatie is Deze PowerPoint presentatie is desgewenst te downloaden vanaf:desgewenst te downloaden vanaf:
stage.sools.comstage.sools.com