Title: Het schrijven van een device driver
1Het schrijven van een device driver
voor Windows 2000
deel 2
2Over deze presentatie
- Gedeelte over USB (30 min.)
- Gedeelte over device drivers (15 min.)
- Vragen kunnen gesteld worden na elk deelonderwerp
en aan het einde
3Inhoud USB
USB
- Uitleg USB protocol
- Cypress EZ-USB oplossing
4USB protocol
5USB protocol
- Algemeen
- Snelheden
- Lagenmodel
- Soorten endpoints
- Descriptors
- Klassespecificaties
- Driverimplementatie
6Algemeen
- Erg gemakkelijk voor de eindgebruiker
- Erg complex voor ontwikkelaars
- Host controller, hubs en apparaten
- Piramidesysteem, max. 127 apparaten
- Apparaten bevatten min. één functie
7Algemeen (2)
- Host controller heeft I/O adressen en IRQ
- USB root hubs en alles wat erop is aangesloten
hebben geen I/O adressen of IRQs
8Low speed
- Zeer langzaam 10 100 kbit/s
- Zeer goedkoop
- USB kabel permanent bevestigd
- Geen gegarandeerde snelheden
9Full speed
- Redelijk snel 0,5 10 Mbit/s
- Redelijk goedkoop
10High 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
11Lagenmodel
endpoint verzameling
12Communicatie
Pakket
Pakket
Pakket
Pakket
Pakket
Pakket
- Control verzoek
- Bulk overdracht
- Isochrone overdracht
- Interrupt overdracht
13Soorten endpoints
- Control
- Bulk
- Isochronous
- Interrupt
- Alle bidirectioneel, initiatief vanuit host
14Control endpoint
- Besturingsverzoeken aan het apparaat
- Gegarandeerd 10 bandbreedte
- Herhaalde verzending tot 3 maal
- Voorbeelden
- GET_DESCRIPTOR
- SET_CONFIGURATION
- SET_INTERFACE
15Bulk endpoints
- Gebruikt overgebleven bandbreedte ?
- geen bandbreedte gegarandeerd
- Middelmatige hoeveelheden data
- Foutcorrectie en herhaald verzenden
- Voorbeelden
- Scanner data
16Isochronous endpoints
- Gegarandeerde bandbreedte
- Grote hoeveelheden data
- Geen foutcorrectie of herhaald verzenden
- Voorbeelden
- Audio stream
- Video stream
17Interrupt endpoints
- Gegarandeerde maximumvertraging
- (1 ms 32 ms)
- Onregelmatige kleine hoeveelheden data
- Herhaald verzenden
- Resulteert niet in een echte interrupt
- er is sprake van polling
18Descriptors
Bron http//www.beyondlogic.org/usbnutshell/usb5.
htm
19String descriptors
- Unicode karakterset
- Verschillende talen
- Kan naar verwezen worden vanuit
- Device, Configuration Endpoint descriptors
20USB 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
21Driverimplementatie
- URBs USB Request Blocks
- UsbBuildXxx macros
- IoCallDriver functie
22Einde USB protocol
- Snelheden
- Lagenmodel
- Soorten endpoints
- Descriptors
- Klassespecificaties
- Driverimplementatie
23Vragen
- Er kunnen nu vragen over het USB protocol gesteld
worden.
24EZ-USB oplossing
25EZ-USB oplossing
- Cypress EZ-USB chip
- Cypress EZ-USB toolkit
- USB MP3 device
- USB experimenteerbord
26EZ-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
27Cypress EZ-USB toolkit
- Firmware voor Keil C51
- Keil uVision 2 benodigd
- Test programma (EZ-USB Control Panel)
- Broncode van een universele driver
- Veel documentatie
28(No Transcript)
29USB 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
30USB 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
31(No Transcript)
32USB 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
33Einde 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
34Vragen
- Er kunnen nu vragen over de EZ-USB oplossing
gesteld worden.
35Slot USB
USB
- USB protocol
- EZ-USB oplossing
36Inhoud device drivers
Device drivers
- Tips
- Vervolg uitleg over device drivers
37Tips
- 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
38Uitleg device drivers
39Uitleg device drivers
- IRQLs
- Overlapped
- Buffermechanisme
40Interrupt Request Levels (IRQL)
Device drivers
- 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
41IRQL (2)
Device drivers
- HIGH_LEVEL
- Geen geheugenallocatie
- DIRQL hardware IRQLs
- DISPATCH_LEVEL
- Page faults zijn uit den boze
- APC_LEVEL
- PASSIVE_LEVEL
- Page faults mogen voorkomen
42Overlapped
- 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
43Buffermechanismen
- Buffered I/O
- Direct I/O
- In
- Uit
44Buffered I/O
Kernel mode
User mode
Invoerbuffer
Systeembuffer
uitvoering DispatchDeviceControl routine
Uitvoerbuffer
Systeembuffer
45Direct I/O (in)
Kernel mode
User mode
gebruikersbuffer wordt gevuld
MDL
MDL wordt gemapt in het geheugen
uitvoering DispatchDeviceControl routine, waarbij
gebruikgemaakt wordt van inhoud van gemapt
geheugen
46Direct I/O (uit)
Kernel mode
User mode
MDL
MDL wordt gemapt in het geheugen
uitvoering DispatchDeviceControl routine, waarbij
geschreven wordt naar gemapt geheugen
inhoud van gebruikersbuffer wordt gebruikt
47Einde uitleg device drivers
- IRQLs
- Overlapped
- Buffermechanismen
48Vragen
- Er kunnen nu vragen over device drivers gesteld
worden.
49Slot device drivers
Device drivers
- Tips
- Uitleg over device drivers
50Verdere stage
- Stage duurt nog circa 11 weken
- Vrijwel elke dag tot aan de zomervakantie
beschikbaar voor vragen over device drivers in
lokaal 0.153
51Vragen
- Algemene vragen over deze presentatie kunnen nu
gesteld worden.
52Einde
- Deze PowerPoint presentatie is desgewenst te
downloaden vanaf - stage.sools.com