Het schrijven van een device driver - PowerPoint PPT Presentation

About This Presentation
Title:

Het schrijven van een device driver

Description:

Het schrijven van een device driver voor Windows 2000 deel 2 Over deze presentatie Gedeelte over USB ( 30 min.) Gedeelte over device drivers ( 15 min.) Vragen ... – PowerPoint PPT presentation

Number of Views:58
Avg rating:3.0/5.0
Slides: 53
Provided by: Tommy67
Category:
Tags: device | driver | een | het | schrijven | van

less

Transcript and Presenter's Notes

Title: Het schrijven van een device driver


1
Het schrijven van een device driver
voor Windows 2000
deel 2
2
Over deze presentatie
  • Gedeelte over USB (30 min.)
  • Gedeelte over device drivers (15 min.)
  • Vragen kunnen gesteld worden na elk deelonderwerp
    en aan het einde

3
Inhoud USB
USB
  • Uitleg USB protocol
  • Cypress EZ-USB oplossing

4
USB protocol
5
USB protocol
  • Algemeen
  • Snelheden
  • Lagenmodel
  • Soorten endpoints
  • Descriptors
  • Klassespecificaties
  • Driverimplementatie

6
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
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 IRQs

8
Low speed
  • Zeer langzaam 10 100 kbit/s
  • Zeer goedkoop
  • USB kabel permanent bevestigd
  • Geen gegarandeerde snelheden

9
Full speed
  • Redelijk snel 0,5 10 Mbit/s
  • Redelijk goedkoop

10
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
Lagenmodel
endpoint verzameling
12
Communicatie
Pakket
Pakket
Pakket
Pakket
Pakket
Pakket
  • Control verzoek
  • Bulk overdracht
  • Isochrone overdracht
  • Interrupt overdracht

13
Soorten endpoints
  • Control
  • Bulk
  • Isochronous
  • Interrupt
  • Alle bidirectioneel, initiatief vanuit host

14
Control endpoint
  • Besturingsverzoeken aan het apparaat
  • Gegarandeerd 10 bandbreedte
  • Herhaalde verzending tot 3 maal
  • Voorbeelden
  • GET_DESCRIPTOR
  • SET_CONFIGURATION
  • SET_INTERFACE

15
Bulk endpoints
  • Gebruikt overgebleven bandbreedte ?
  • geen bandbreedte gegarandeerd
  • Middelmatige hoeveelheden data
  • Foutcorrectie en herhaald verzenden
  • Voorbeelden
  • Scanner data

16
Isochronous endpoints
  • Gegarandeerde bandbreedte
  • Grote hoeveelheden data
  • Geen foutcorrectie of herhaald verzenden
  • Voorbeelden
  • Audio stream
  • Video stream

17
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

18
Descriptors
Bron http//www.beyondlogic.org/usbnutshell/usb5.
htm
19
String descriptors
  • Unicode karakterset
  • Verschillende talen
  • Kan naar verwezen worden vanuit
  • Device, Configuration Endpoint descriptors

20
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
Driverimplementatie
  • URBs USB Request Blocks
  • UsbBuildXxx macros
  • IoCallDriver functie

22
Einde USB protocol
  • Snelheden
  • Lagenmodel
  • Soorten endpoints
  • Descriptors
  • Klassespecificaties
  • Driverimplementatie

23
Vragen
  • Er kunnen nu vragen over het USB protocol gesteld
    worden.

24
EZ-USB oplossing
25
EZ-USB oplossing
  • Cypress EZ-USB chip
  • Cypress EZ-USB toolkit
  • USB MP3 device
  • USB experimenteerbord

26
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

27
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

28
(No Transcript)
29
USB 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
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

31
(No Transcript)
32
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

33
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

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

35
Slot USB
USB
  • USB protocol
  • EZ-USB oplossing

36
Inhoud device drivers
Device drivers
  • Tips
  • Vervolg uitleg over device drivers

37
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

38
Uitleg device drivers
39
Uitleg device drivers
  • IRQLs
  • Overlapped
  • Buffermechanisme

40
Interrupt 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

41
IRQL (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

42
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

43
Buffermechanismen
  • Buffered I/O
  • Direct I/O
  • In
  • Uit

44
Buffered I/O
Kernel mode
User mode
Invoerbuffer
Systeembuffer
uitvoering DispatchDeviceControl routine
Uitvoerbuffer
Systeembuffer
45
Direct 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
46
Direct 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
47
Einde uitleg device drivers
  • IRQLs
  • Overlapped
  • Buffermechanismen

48
Vragen
  • Er kunnen nu vragen over device drivers gesteld
    worden.

49
Slot device drivers
Device drivers
  • Tips
  • Uitleg over device drivers

50
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

51
Vragen
  • Algemene vragen over deze presentatie kunnen nu
    gesteld worden.

52
Einde
  • Deze PowerPoint presentatie is desgewenst te
    downloaden vanaf
  • stage.sools.com
Write a Comment
User Comments (0)
About PowerShow.com