T.P.A. SoolsNLTommy Sools - interactief CVTommy Sools

Terug naar overzicht
31 jan 2005 - 13 jul 2005Onderzoek­sstage Device Drivers Fontys Hogescholen Eindhoven Inhoudsopgave practicumhandleiding

Inhoudsopgave practicumhandleiding

  • Les 1: omgeving
    • §1.1: het installeren van de Microsoft DDK en hulpmiddelen
    • §1.2: het installeren van een driver
  • Les 2: buitenkant van een driver
    • §2.1: installatie, starten en stoppen van een driver
    • §2.2: aanroepen van een bestaande loopbackdriver
  • Les 3: binnenkant van een driver
    • §3.1: debuggen van een driver
    • §3.2: opbouw van een driver
  • Les 4: EZ-USB-oplossing
    • §4.1: EZ-USB Control Panel
    • §4.2: aanroepen van de EZ-USB-standaarddriver
  • Les 5: bestuderen van EZ-USB-standaarddriver
  • Les 6+7: aanpassen van EZ-USB-standaarddriver
  • Les 8: installatie van een driver
  • Appendix: theorie

Tweede stage

"Aan de slag met device drivers"

Deze pagina bevat een archief van bestanden die gemaakt zijn tijdens mijn tweede stage bij Fontys Technische Informatica. Ook staan er nog nuttige links. Omdat het maken van een website slechts een bijzaak was tijdens de stage, is de pagina bescheiden gebleven.

PowerPoint presentaties:

prs-4.ppt:
  De PowerPoint presentatie bij de voordracht over device drivers.
prs2-2.ppt:
  De PowerPoint presentatie bij de voordracht over USB en device drivers.
tkd-1.ppt:
  De PowerPoint presentatie bij de voordracht op de stageterugkomdag.
epr-1.zip: (08-07-2005)
  De PowerPoint presentaties bij de voordracht op het colloquium.
prses7.zip: (29-09-2005)
  De PowerPoint presentaties bij de voordracht voor ES7.

Bestanden i.v.m. EZ-USB:

exp-1.zip: (02-11-2005)
  Voorbeeldprojecten voor Keil uVision 2 i.c.m. het experimenteerbord van Jan Blanken. Het exp_hyper1 voorbeeld is tevens bruikbaar met het USB MP3 Device van Jan Blanken. Voor een goede werking is het aan te raden het .zip bestand uit te pakken naar de Cypress\Usb\Examples map. In de meeste projectmappen is een bestand leesmij.txt aanwezig met enige uitleg. Let op dat de projecten exp_jog en exp_car bij de C++ Builder applicatie's in "jog-1_ply-1.zip" horen.
car-2.doc: (02-11-2005)
  Voorstel voor de carrier applicatie. Dit voorstel is gemaakt voordat de applicatie zelf is geschreven (ply-1.zip)
jog-1_ply-1.zip: (02-11-2005)
  C++ Builder broncode en .hex bestanden voor zowel het jog shuttle paneel, als voor de carrierapplicatie, die demonstreert hoe er met de EZ-USB standaarddriver gecommuniceerd. De broncode van de firmware staat in exp-1.zip.

Bestanden i.v.m. DMX:

dmx-1.doc: (02-11-2005)
  Algemene uitleg over DMX, de DMX interface en de werking van het parallelle protocol van de DMX interface.
dmx-1.zip: (02-11-2005)
  De driver voor de DMX interface.

Algemene bestanden i.v.m. de stage, USB en het schrijven van device drivers:

stv-1.zip: (19-12-2005)
  Het stageverslag inclusief het plan van aanpak.
ppt-1.zip:
  Een eenvoudig testprogramma voor de parallelle loopbackplug, gebruikmakend van een algemene poortdriver. Voor alle duidelijkheid: dit is niet een mooie manier om toegang te krijgen tot poorten, maar is wel functioneel om de werking van de parallelle poort te kunnen controleren zonder dat er direct een aangepaste driver geschreven hoeft te worden. Tevens demonstreert de broncode hoe het aanroepen van een (bestaande of eigengemaakte) driver vanuit een applicatie in zijn werk gaat.
uch8-1.zip:
  Het sequentiediagram bij de voorbeelddriver uit hoofdstuk 8 van The Windows 2000 Device Driver Book.
jub-1.doc: (21-06-2005)
  Toelichting op de aangepaste versie 1 van de EZ-USB standaarddriver.
jub-1.zip: (21-06-2005)
  Aangepaste versie 1 van de EZ-USB standaarddriver. Let op dat deze versie mogelijk instabiel kan zijn, gebruik deze dus alleen op een test PC.
Hulpmiddelen bij het schrijven van een Device Driver

Nuttige links over USB:

Officiële USB documentatie
Officiële USB klassespecificaties
Beyond Logic
  Uitgebreide informatie over USB (“USB in a Nutshell”) en diverse driverprojecten.
USBMan
  Verzameling van USB gerelateerde informatie en links.
USBSnoopy
  USB analyseprogramma (sniffer).
Libusb
  Universele driver en library voor USB communicatie in Windows, zodat er geen eigen driver geschreven hoeft te worden.
EZ-USB datasheet
EZ-USB Development Kit
WDM USB Driver Interface
  Uitleg over de werking van een USB devicedriver.

Nuttige links over C programmeren:

Cursus C programmeren
  Met name het onderdeel “Structures” is belangrijk zodat je weet wat een "union" is en hoe een structure precies gebruikt kan worden in C.
Het schrijven van DLLs in C
Keil: 8051 Interrupt Vectors
  Informatie over interrupt nummers bij de Keil compiler (PDF).

Nuttige links over driverontwikkeling (algemeen):

Microsoft Developers Network
  Documentatie van Microsoft
The Windows 2000 Device Driver Book
  Site bij boek over driverontwikkeling.
Walter Oney Software
  Site bij boek over driverontwikkeling.
OSR Online
  Nuttige hulpprogramma's: DeviceTree, Driver Loader.
Sysinternals
  Nuttige hulpprogramma's: DebugView, Process Explorer, WinObj.
microsoft.public.win32.programmer.kernel
  Toepasselijke nieuwsgroep.
CodeProject: driver development deel 1
CodeProject: driver development deel 2
CodeProject: driver development deel 3
CodeProject: driver development deel 4
CodeProject: driver development deel 5
Microsoft: WHDC
  Talrijke informatie over drivers en alles wat daarmee te maken heeft.
Microsoft: praktische tips over device drivers
Uitleg over device drivers (Franstalig)
WDM Quick Reference Card
  Handig overzicht van datastructuren en constanten die van belang zijn binnen een driver.

Nuttige links over driverontwikkeling (detail):

MSDN: documentatie bug-check schermen
Microsoft: lijst met zaken die verboden zijn binnen een device drivers
MSDN: Windows DDK, Device Installation
  Diepgaande informatie over de installatie van driver via .inf bestanden.
Discussie over het gebruik van de HAL functies voor het lezen en schrijven van poorten
Microsoft: beschrijving verschillende buffer mechanismen binnen een driver
MSDN: verschil tussen interruption en pre-emption
Code Project: SetupDi voorbeeld
  Artikel over het opsommen van apparaten.
Windows NT Driver Build Methods and Tools
  Artikel over het builden van een Windows driver.
MSDN: documentatie buildomgeving
MSDN: praktische uitleg Sources bestand
Microsoft: Windows Driver Foundation
  De toekomst van Windows device drivers.

Nuttige maar minder relevante links:

Code Project: leuk artikel over de werking van de parallelle poort
Beyond Logic: voorbeeld van het gebruik van een parallelle poort IRQ in MS-DOS
  Kijk onder het kopje "Using the Parallel Port’s IRQ".
I2C FAQ
Yeori's Workroom
  Diepgaande projecten en links i.v.m. Windows programmeren en devicedriverontwikkeling.
Mathijs Down Under
  Site over de stage van een informatica medestudent in Australië.



Sequentiediagram van voorbeelddriver met executable/Win32-API/IO-manager/PPort.sys

Sequentiediagram van voorbeelddriver met executable/Win32-API/IO-manager/PPort.sys

knoppenpaneel.pngUSB-'carrierapplicatie' communicerend met bestaande I²C-jogshuttlehardware

USB-'carrierapplicatie' communicerend met bestaande I²C-jogshuttlehardware

lcd.pngUSB-audioafspeelapplicatie met PS/2-toetsenbordinvoer en 4bit-LCD-uitvoer

USB-audioafspeelapplicatie met PS/2-toetsenbordinvoer en 4bit-LCD-uitvoer