52
Het schrijven van een Het schrijven van een device driver device driver voor Windows 2000 deel 2

Het schrijven van een device driver voor Windows 2000 deel 2

Embed Size (px)

Citation preview

Page 1: Het schrijven van een device driver voor Windows 2000 deel 2

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

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

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

USB protocolUSB protocol

Page 5: Het schrijven van een device driver voor Windows 2000 deel 2

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

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

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

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

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

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

11

USB protocol

Lagenmodel

endpointverzameling

Page 12: Het schrijven van een device driver voor Windows 2000 deel 2

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

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

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

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

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

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 19: Het schrijven van een device driver voor Windows 2000 deel 2

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

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

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

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

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

EZ-USB oplossingEZ-USB oplossing

Page 25: Het schrijven van een device driver voor Windows 2000 deel 2

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

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

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

28

EZ-USB oplossing

Page 29: Het schrijven van een device driver voor Windows 2000 deel 2

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

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

31

EZ-USB oplossing

Page 32: Het schrijven van een device driver voor Windows 2000 deel 2

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

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

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

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

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

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

Uitleg device driversUitleg device drivers

Page 39: Het schrijven van een device driver voor Windows 2000 deel 2

39

Device driversUitleg device drivers

• IRQL’s

• Overlapped

• Buffermechanisme

Page 40: Het schrijven van een device driver voor Windows 2000 deel 2

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

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

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

43

Device driversBuffermechanismen

• Buffered I/O

• Direct I/O– In– Uit

Page 44: Het schrijven van een device driver voor Windows 2000 deel 2

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

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

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

47

Device driversEinde uitleg device drivers

• IRQL’s

• Overlapped

• Buffermechanismen

Page 48: Het schrijven van een device driver voor Windows 2000 deel 2

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

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

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

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

EindeEinde

Deze PowerPoint presentatie is Deze PowerPoint presentatie is desgewenst te downloaden vanaf:desgewenst te downloaden vanaf:

stage.sools.comstage.sools.com