Het schrijven van een device driver

advertisement
Het schrijven van een device driver
voor Windows 2000
deel 2
Over deze presentatie



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


Uitleg USB protocol
Cypress EZ-USB oplossing
3
USB protocol
USB protocol
USB protocol
•
•
•
•
•
•
•
Algemeen
Snelheden
Lagenmodel
Soorten endpoints
Descriptors
Klassespecificaties
Driverimplementatie
5
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
6
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
7
USB protocol
Low speed
•
•
•
•
Zeer langzaam
10 – 100 kbit/s
Zeer goedkoop
USB kabel permanent bevestigd
Geen gegarandeerde snelheden
8
USB protocol
Full speed
• Redelijk snel
• Redelijk goedkoop
0,5 – 10 Mbit/s
9
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
10
USB protocol
Lagenmodel
endpoint
verzameling
11
USB protocol
Communicatie
IN
DATA
ACK
OUT
DATA
STALL
 bijv.
token
evt. data
status
token
evt. data
status
 fases
Pakket
Pakket
Pakket
Pakket
Pakket
Pakket
transactie
transactie
•
•
•
•
Control verzoek
Bulk overdracht
Isochrone overdracht
Interrupt overdracht
12
USB protocol
Soorten endpoints
•
•
•
•
•
Control
Bulk
Isochronous
Interrupt
Alle bidirectioneel, initiatief vanuit host
13
USB protocol
Control endpoint
•
•
•
•
Besturingsverzoeken aan het apparaat
Gegarandeerd 10% bandbreedte
Herhaalde verzending tot 3 maal
Voorbeelden:
– GET_DESCRIPTOR
– SET_CONFIGURATION
– SET_INTERFACE
14
USB protocol
Bulk endpoints
• 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 herhaald verzenden
Voorbeelden:
– Audio stream
– Video stream
16
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
USB protocol
Descriptors
Bron: http://www.beyondlogic.org/usbnutshell/usb5.htm
18
USB protocol
String descriptors
• 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 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
• UsbBuildXxx macro’s
• IoCallDriver functie
21
USB protocol
Einde USB protocol
•
•
•
•
•
•
Snelheden
Lagenmodel
Soorten endpoints
Descriptors
Klassespecificaties
Driverimplementatie
22
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 MP3 device
USB experimenteerbord
25
EZ-USB oplossing
EZ-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
26
EZ-USB oplossing
Cypress EZ-USB toolkit
• Firmware voor Keil C51
– Keil uVision 2 benodigd
• Test programma (EZ-USB Control Panel)
• Broncode van een universele driver
• Veel documentatie
27
EZ-USB oplossing
28
EZ-USB oplossing
USB MP3 Device
• Twee stereo MP3 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 I2C bus
8 LEDs
4 drukknoppen, optioneel als interrupts
2 RS232 poorten
LCD aansluiting
Standaardheaders voor uitbreidingen voor
printplaat Peter Klijn
30
EZ-USB oplossing
31
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
• 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.
USB
Slot USB


USB protocol
EZ-USB oplossing
35
Device drivers
Inhoud device drivers


Tips
Vervolg uitleg over device drivers
36
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
37
Uitleg device drivers
Device drivers
Uitleg device drivers
• IRQL’s
• Overlapped
• Buffermechanisme
39
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
Device drivers
IRQL (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
41
Device drivers
Overlapped
• 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
42
Device drivers
Buffermechanismen
• Buffered I/O
• Direct I/O
– In
– Uit
43
Device drivers
Buffered I/O
User mode
Kernel mode
Invoerbuffer
Systeembuffer
uitvoering DispatchDeviceControl routine
Uitvoerbuffer
Systeembuffer
44
Device drivers
Direct I/O (in)
User mode
Kernel mode
gebruikersbuffer wordt gevuld
MDL
MDL wordt gemapt in het geheugen
uitvoering DispatchDeviceControl routine,
waarbij gebruikgemaakt wordt van inhoud
van gemapt geheugen
45
Device drivers
Direct I/O (uit)
User mode
MDL
Kernel mode
MDL wordt gemapt in het geheugen
uitvoering DispatchDeviceControl routine,
waarbij geschreven wordt naar gemapt
geheugen
inhoud van gebruikersbuffer
wordt gebruikt
46
Device drivers
Einde uitleg device drivers
• IRQL’s
• Overlapped
• Buffermechanismen
47
Vragen
Er kunnen nu vragen over device drivers
gesteld worden.
Device drivers
Slot device drivers


Tips
Uitleg over device drivers
49
Verdere stage


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.
Einde
Deze PowerPoint presentatie is desgewenst
te downloaden vanaf:
stage.sools.com
Download