Het schrijven van een device driver voor Windows 2000 deel 2
2 Over deze presentatie Gedeelte over USB (±30 min.) Gedeelte over USB (±30 min.) Gedeelte over device drivers (±15 min.) Gedeelte over device drivers (±15 min.) Vragen kunnen gesteld worden na elk deelonderwerp en aan het einde Vragen kunnen gesteld worden na elk deelonderwerp en aan het einde
3 Inhoud USB Uitleg USB protocol Uitleg USB protocol Cypress EZ-USB oplossing Cypress EZ-USB oplossing USB
USB protocol
5 Algemeen Snelheden Lagenmodel Soorten endpoints Descriptors Klassespecificaties Driverimplementatie
USB protocol 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
USB protocol 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 IRQ’s
USB protocol 8 Low speed Zeer langzaam10 – 100 kbit/s Zeer goedkoop USB kabel permanent bevestigd Geen gegarandeerde snelheden
USB protocol 9 Full speed Redelijk snel0,5 – 10 Mbit/s Redelijk goedkoop
USB protocol 10 High speed Zeer snel25 – 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
USB protocol 11 Lagenmodel endpoint verzameling
USB protocol 12 Communicatie Pakket transactie Control verzoek Bulk overdracht Isochrone overdracht Interrupt overdracht tokenevt. datastatustokenevt. datastatus fasesINDATAACKOUTDATASTALL bijv.
USB protocol 13 Soorten endpoints Control Bulk Isochronous Interrupt Alle bidirectioneel, initiatief vanuit host
USB protocol 14 Control endpoint Besturingsverzoeken aan het apparaat Gegarandeerd 10% bandbreedte Herhaalde verzending tot 3 maal Voorbeelden: –GET_DESCRIPTOR –SET_CONFIGURATION –SET_INTERFACE
USB protocol 15 Bulk endpoints Gebruikt overgebleven bandbreedte geen bandbreedte gegarandeerd Middelmatige hoeveelheden data Foutcorrectie en herhaald verzenden Voorbeelden: –Scanner data
USB protocol 16 Isochronous endpoints Gegarandeerde bandbreedte Grote hoeveelheden data Geen foutcorrectie of herhaald verzenden Voorbeelden: –Audio stream –Video stream
USB protocol 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’
USB protocol 18 Descriptors Bron:
USB protocol 19 String descriptors Unicode karakterset Verschillende talen Kan naar verwezen worden vanuit Device, Configuration & Endpoint descriptors
USB protocol 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
USB protocol 21 Driverimplementatie URB’s: USB Request Blocks UsbBuildXxx macro’s IoCallDriver functie
USB protocol 22 Einde USB protocol Snelheden Lagenmodel Soorten endpoints Descriptors Klassespecificaties Driverimplementatie
Vragen Er kunnen nu vragen over het USB protocol gesteld worden.
EZ-USB oplossing
25 EZ-USB oplossing Cypress EZ-USB chip Cypress EZ-USB toolkit USB MP3 device USB experimenteerbord
EZ-USB oplossing 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
EZ-USB oplossing 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
EZ-USB oplossing 28
EZ-USB oplossing 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
EZ-USB oplossing 30 USB experimenteerbord 32 kilobyte extra RAM geheugen EEPROM via I 2 C bus 8 LEDs 4 drukknoppen, optioneel als interrupts 2 RS232 poorten LCD aansluiting Standaardheaders voor uitbreidingen voor printplaat Peter Klijn
EZ-USB oplossing 31
EZ-USB oplossing 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
EZ-USB oplossing 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
Vragen Er kunnen nu vragen over de EZ-USB oplossing gesteld worden.
35 Slot USB USB protocol USB protocol EZ-USB oplossing EZ-USB oplossing USB
36 Inhoud device drivers Tips Tips Vervolg uitleg over device drivers Vervolg uitleg over device drivers Device drivers
Tips 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
Uitleg device drivers
Device drivers 39 Uitleg device drivers IRQL’s Overlapped Buffermechanisme
Device drivers 40 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 Device drivers
41 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 Device drivers
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
Device drivers 43 Buffermechanismen Buffered I/O Direct I/O –In –Uit
Device drivers 44 Buffered I/O Invoerbuffer Uitvoerbuffer Systeembuffer User mode Kernel mode Systeembuffer uitvoering DispatchDeviceControl routine
Device drivers 45 Direct 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
Device drivers 46 Direct 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
Device drivers 47 Einde uitleg device drivers IRQL’s Overlapped Buffermechanismen
Vragen Er kunnen nu vragen over device drivers gesteld worden.
49 Slot device drivers Tips Tips Uitleg over device drivers Uitleg over device drivers Device drivers
50 Verdere stage Stage duurt nog circa 11 weken Stage duurt nog circa 11 weken Vrijwel elke dag tot aan de zomervakantie beschikbaar voor vragen over device drivers in lokaal Vrijwel elke dag tot aan de zomervakantie beschikbaar voor vragen over device drivers in lokaal 0.153
Vragen Algemene vragen over deze presentatie kunnen nu gesteld worden.
Einde Deze PowerPoint presentatie is desgewenst te downloaden vanaf: stage.sools.com