1 / 52

Het schrijven van een device driver

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 kunnen gesteld worden na elk deelonderwerp en aan het einde. USB. Inhoud USB. Uitleg USB protocol

Télécharger la présentation

Het schrijven van een device driver

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. USB Inhoud 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 IRQ’s

  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. IN DATA ACK OUT DATA STALL  bijv. token evt. data status token evt. data status  fases transactie transactie 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 • URB’s: USB Request Blocks • UsbBuildXxx macro’s • 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. 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

  29. 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

  30. 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

  31. 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

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

  33. USB Slot USB • USB protocol • EZ-USB oplossing

  34. Device drivers Inhoud device drivers • Tips • Vervolg uitleg over device drivers

  35. 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

  36. Uitleg device drivers

  37. Uitleg device drivers • IRQL’s • Overlapped • Buffermechanisme

  38. Device drivers 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

  39. Device drivers 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

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

  41. Buffermechanismen • Buffered I/O • Direct I/O • In • Uit

  42. Buffered I/O Kernel mode User mode Invoerbuffer Systeembuffer uitvoering DispatchDeviceControl routine Uitvoerbuffer Systeembuffer

  43. 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

  44. 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

  45. Einde uitleg device drivers • IRQL’s • Overlapped • Buffermechanismen

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

  47. Device drivers Slot device drivers • Tips • Uitleg over device drivers

  48. 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

More Related