Het schrijven van een device driver voor Windows 2000 deel 2

Preview:

Citation preview

Het schrijven van een device Het schrijven van een device driverdriver

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

33

Inhoud USBInhoud USB

Uitleg USB protocolUitleg USB protocol Cypress EZ-USB oplossingCypress EZ-USB oplossing

USB

USB protocolUSB protocol

5

USB protocol

USB protocol

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

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

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

8

USB protocol

Low speed

• Zeer langzaam 10 – 100 kbit/s

• Zeer goedkoop

• USB kabel permanent bevestigd

• Geen gegarandeerde snelheden

9

USB protocol

Full speed

• Redelijk snel 0,5 – 10 Mbit/s

• Redelijk goedkoop

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

11

USB protocol

Lagenmodel

endpointverzameling

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.

13

USB protocol

Soorten endpoints

• Control

• Bulk

• Isochronous

• Interrupt

• Alle bidirectioneel, initiatief vanuit host

14

USB protocol

Control endpoint

• Besturingsverzoeken aan het apparaat

• Gegarandeerd 10% bandbreedte

• Herhaalde verzending tot 3 maal

• Voorbeelden:– GET_DESCRIPTOR– SET_CONFIGURATION– SET_INTERFACE

15

USB protocol

Bulk endpoints

• Gebruikt overgebleven bandbreedte geen bandbreedte gegarandeerd

• Middelmatige hoeveelheden data

• Foutcorrectie en herhaald verzenden

• Voorbeelden:– Scanner data

16

USB protocol

Isochronous endpoints

• Gegarandeerde bandbreedte

• Grote hoeveelheden data

• Geen foutcorrectie of herhaald verzenden

• Voorbeelden:– Audio stream– Video stream

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’

19

USB protocol

String descriptors

• Unicode karakterset

• Verschillende talen

• Kan naar verwezen worden vanuit

Device, Configuration & Endpoint descriptors

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

21

USB protocol

Driverimplementatie

• URB’s: USB Request Blocks

• UsbBuildXxx macro’s

• IoCallDriver functie

22

USB protocol

Einde USB protocol

• Snelheden• Lagenmodel• Soorten endpoints• Descriptors• Klassespecificaties• Driverimplementatie

VragenVragen

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

EZ-USB oplossingEZ-USB oplossing

25

EZ-USB oplossingEZ-USB oplossing

• Cypress EZ-USB chip• Cypress EZ-USB toolkit• USB MP3 device• USB experimenteerbord

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

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

28

EZ-USB oplossing

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

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

31

EZ-USB oplossing

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

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

VragenVragen

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

3535

Slot USBSlot USB

USB protocolUSB protocol EZ-USB oplossingEZ-USB oplossing

USB

3636

Inhoud device driversInhoud device drivers

TipsTips Vervolg uitleg over device driversVervolg uitleg over device drivers

Device drivers

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

Uitleg device driversUitleg device drivers

39

Device driversUitleg device drivers

• IRQL’s

• Overlapped

• Buffermechanisme

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

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

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

43

Device driversBuffermechanismen

• Buffered I/O

• Direct I/O– In– Uit

44

Device driversBuffered I/O

Invoerbuffer

Uitvoerbuffer

Systeembuffer

User mode Kernel mode

Systeembuffer

uitvoering DispatchDeviceControl routine

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

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

47

Device driversEinde uitleg device drivers

• IRQL’s

• Overlapped

• Buffermechanismen

VragenVragen

Er kunnen nu vragen over device Er kunnen nu vragen over device drivers gesteld worden.drivers gesteld worden.

4949

Slot device driversSlot device drivers

TipsTips Uitleg over device driversUitleg over device drivers

Device drivers

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

VragenVragen

Algemene vragen over deze Algemene vragen over deze presentatie kunnen nu gesteld worden.presentatie kunnen nu gesteld worden.

EindeEinde

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

stage.sools.comstage.sools.com

Recommended