Het schrijven van een device driver voor Windows 2000.

Slides:



Advertisements
Verwante presentaties
Stage bij Technische Informatica
Advertisements

PROS2 Les 13 Programmeren en Software Engineering 2.
De zin en onzin van escrow
Serieel naar parallel omzetting
Embedded systemen Embedded software.
™.
Stijn Hoppenbrouwers Software Engineering les 1 Algemene inleiding en Requirements Engineering.
WEB toepassingen. Wat is een WEB toepassing of applicatie t.t.z... een WEB applicatie is een applicatieprogramma welke je via internet kunt gebruiken,
gebouw applicaties binnen een gebouwbesturingssysteem
Centrale Controle-Stuureenheid
Applicatie virtualisatie
Kennismaking met de computerconfiguratie
Hardware (1) NSG Informatica.
Het schrijven van een device driver voor Windows 2000 deel 2.
Extern Geheugen Lol.
Opleiding ICT © J.W. Jonker Dia 1/22 Systemen Besturingssoftware Windows XP Mark van Heck.
1 nüMaps Lifetime Europe: installatie procedure. 2 Product verpakking.
1 Device driver. 2 Hardware Operating Systeem Prog1Prog2 System calls/ API Device drivers Gebruiker afschermen van de hardware.
ADuC8xx MICROCONVERTER
Auteursomgeving voor Digitale Componenten
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.
De implementatie van de UIML standaard in UIML.NET Ingo Berben Eindwerk voorgedragen tot het behalen van de graad van bachelor in de informatica/ICT/kennistechnologie.
Installeren, configureren en onderhouden
Phoenix Contact ILC150ETH F. Rubben, Ing.. Phoenix Contact ILC150ETH F. Rubben, Ing.
Het gegevensverwerkend proces
Les 2 Basisbouwstenen (deel 1)
Assenstelsels en het plotten van Functies in LOGO
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 7(1): Flow of.
Opleiding ICT © J.W. Jonker Dia 1/16 Systemen Besturingssoftware Windows XP Mark van Heck.
Opleiding ICT © J.W. Jonker Dia 1/19 Systemen Besturingssoftware Windows XP Mark van Heck.
Systeemsoftware Hfdst 2
SIP File Recovery Tool. Agenda 18/10/2006Maken agenda + onderzoeken van verschillende filetypes 25/10/2006Uitzoeken hoe er effecient gelezen en geschreven.
Backup & Recovery Windows 2003 Server Onderhoud en Beheer Netwerken 4.
Rabobank Vlietstreek-Zoetermeer Sponsor v/h SeniorWeb 2 Stichting SeniorWeb Zoetermeer Basiscursus Windows Vista Uw docenten zijn:  Peter Blansjaar 
Presentatie Het BIOS (wat is dat) Rondkijken in het BIOS
Power PC Assembler. Assembler toolkit bevat Assembler zelf Linkerlibrarian.
Operating Systems Informatica.
Presentatie door: Martijn Schmid, Kathinka Veldkamp en Nynke Zwart
Presentatie Stageplaats Roose Ben 7IC Inhoud -Bedrijf -Functie in het bedrijf -Stage activiteiten -Project/opdrachten bespreking : - Assemblage.
Visual Basic.NET voor studenten De VB- ontwikkelomgeving Hoofdstuk 2.
Afstudeerproject ETHERFLOW:
Unity Real time Service Pack 10 update Installatie opties.
Les 2: Interactie in je space door middel van klikbare objecten en actionscript. Wat is actionscript en programmeren?
Les 7 Multiple Document Interface Programmeren met Visual Basic Karl Moens.
Etherflow Voor het aansluiten van een flowmeter op een Ethernet netwerk Afstudeerpresentatie Michel van der Net Elektrotechniek Avans Hogeschool Breda.
Basisfuncties Operating System.
PEMSY1http:// 1  Herhaling: combineren van assembler en C  Herhaling: subroutine  Oefening: melodie Klas EV2B: week.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Snelle naslag voor © 2012 Microsoft Corporation. Alle rechten voorbehouden. Lync Web App Deelnemen aan een Lync-vergadering met computeraudio Als u niet.
Les 1: Zaterdag 10 mei 2014 Wim Peeters
© imec 2000 © imec 2001 MAX+PLUS II Installatieprocedure.
Besturingssysteem Vaak wordt de Engelse term gebruikt: Operating System ( OS ) Plaats van het OS in een computersysteem: Hardware Applicatie Operating.
Instructie Programmeren Task 7
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Een embedded systeem: ARM bord.
HjH HjH 2 1.Windows XP, Vista worden niet meer ondersteund. - gevolgen beveiligingsproblemen; denk aan bank! - nieuwe hardware zal.
Inloggen >> Gegevensaanlevering en controle in Peridos In Release 3.3 van Peridos is er een nieuwe module gebouwd voor het aanleveren en bekijken van gegevens.
C++ Les 1: introductie. Programmeren Programma’s scripts Websites libraries (Sound, GUI, netwerking…)
Informatica Welkom! maandag 16 November Les B-5.
Operating Systems Informatica.
Smartphone via PC bedienen
Module 6 Basis pneumatiek
3 Hardware 3.1 De processor en intern geheugen
INGEBRUIKNAME & TESTEN
Webinar SharePoint Standaard Werkstromen
ASP.NET MVC Web Development
Besturingssystemen Ga verder met een muisklik..
Software Development fundamentals
Small Basic Console deel 2
Besturingssysteem.
Netwerken & Internet 1.
Transcript van de presentatie:

Het schrijven van een device driver voor Windows 2000

Over deze presentatie Tijdsduur is ongeveer één uur Tijdsduur is ongeveer één uur Het leren begrijpen van een device driver is erg lastig  Het leren begrijpen van een device driver is erg lastig  let goed op en maak tijdens relevante onderwerpen veel aantekeningen Vragen kunnen gesteld worden na elk deelonderwerp en aan het einde Vragen kunnen gesteld worden na elk deelonderwerp en aan het einde Algemeen

Inhoud Introductie (±5 min.) Introductie (±5 min.) Algemene toelichting op device drivers (±25 min.) Algemene toelichting op device drivers (±25 min.) Hulpmiddelen voor schrijven driver (±10 min.) Hulpmiddelen voor schrijven driver (±10 min.) Toelichting op “PPort” voorbeelddriver (±15 min.) Toelichting op “PPort” voorbeelddriver (±15 min.) Toelichting op Cypress EZ-USB oplossing (±5 min.) Toelichting op Cypress EZ-USB oplossing (±5 min.) Slot Slot Algemeen

Introductie

Introductie Wie ben ik Wie ben ik Waarom deze stage Waarom deze stage Voorkennis Voorkennis Werkzaamheden Werkzaamheden Introductie

Wie ben ik Tommy Sools Tommy Sools Student in derde jaar informatica (blok 11) Student in derde jaar informatica (blok 11) Stagiair bij technische informatica Stagiair bij technische informatica Begeleid door Ruud Ermers Begeleid door Ruud Ermers Introductie

Waarom deze stage Hobby elektronica Hobby elektronica Diverse computerinterface projecten die natuurlijk een device driver vereisen Diverse computerinterface projecten die natuurlijk een device driver vereisen Op zoek naar USB microcontroller oplossing Op zoek naar USB microcontroller oplossing Poging tot zelfstandig leren device drivers Poging tot zelfstandig leren device drivers Tenslotte de vraag of er binnen Fontys een module bestaat over device drivers Tenslotte de vraag of er binnen Fontys een module bestaat over device drivers Introductie

Voorkennis C++ binnen informaticamodulen (Visual Studio): C++ binnen informaticamodulen (Visual Studio): Programmeren in C Programmeren in C Low Level Programming Low Level Programming Interprocescommunicatie Interprocescommunicatie Events & Exceptions Events & Exceptions Geheugentechnieken en –beheer Geheugentechnieken en –beheer Gedurende twee kwartalen begeleiden practica C Programmeren (Borland C++ Builder) Gedurende twee kwartalen begeleiden practica C Programmeren (Borland C++ Builder) Introductie

Voorkennis (2) Veel hobbyprojecten met Borland Delphi Veel hobbyprojecten met Borland Delphi Programmeren aan administratiepakket Order-Direct tijdens eerste stage Programmeren aan administratiepakket Order-Direct tijdens eerste stage Hobbyprojecten met 8051 en AVR microcontrollers, vooral in assembler taal Hobbyprojecten met 8051 en AVR microcontrollers, vooral in assembler taal Introductie

Werkzaamheden Tweede stage, twintig weken, Tweede stage, twintig weken, momenteel zesde week Onderzoek doen naar de werking van device drivers Onderzoek doen naar de werking van device drivers Ter oefening een aantal drivers schrijven Ter oefening een aantal drivers schrijven Practicumhandleiding schrijven over device drivers voor Windows 2000 Practicumhandleiding schrijven over device drivers voor Windows 2000 Introductie

Einde introductie Interesse vanuit hobby Interesse vanuit hobby Ruim voldoende voorkennis en ervaring Ruim voldoende voorkennis en ervaring Stage duurt 20 weken Stage duurt 20 weken Doel is practicumhandleiding schrijven over Windows 2000 driverontwikkeling Doel is practicumhandleiding schrijven over Windows 2000 driverontwikkeling Introductie

Vragen Er kunnen nu vragen over de introductie gesteld worden.

Hulpmiddelen

Hulpmiddelen ComputersystemenComputersystemen Microsoft Visual Studio 6.0Microsoft Visual Studio 6.0 Microsoft Windows 2000 DDK (SP1)Microsoft Windows 2000 DDK (SP1) DebugViewDebugView LoadDrvLoadDrv Talloze andere optionele hulpprogramma’sTalloze andere optionele hulpprogramma’s Hulpmiddelen

Computersystemen PC voor ontwikkelingPC voor ontwikkeling PC voor testenPC voor testen Hulpmiddelen

Ontwikkelsysteem Besturingssysteem is niet relevant,Besturingssysteem is niet relevant, bijv. Windows 2000 of XP Driver nooit testen op ontwikkelsysteemDriver nooit testen op ontwikkelsysteem Hulpmiddelen

Testsysteem Windows 2000 Professional,Windows 2000 Professional, met alle service packs en updates Zorgen voor een herstelmogelijkheid,Zorgen voor een herstelmogelijkheid, bijv. Norton Ghost Hulpmiddelen

Microsoft Visual Studio 6.0 Sjabloon “DDAppWiz.awx” installerenSjabloon “DDAppWiz.awx” installeren Als projectinstellingen goed zijn Als projectinstellingen goed zijn  compileren via Tools  Build Resultaat is.sys bestandResultaat is.sys bestand Checked Build tegenover Free BuildChecked Build tegenover Free Build –Aan te passen via DBG define –Ook van toepassing op Windows zelf Hulpmiddelen

Microsoft Visual Studio 6.0 (2) Hulpmiddelen

DebugView Toont berichten die Checked Build van driver genereert met DbgPrintToont berichten die Checked Build van driver genereert met DbgPrint DebugView geeft geen informatie weer gegenereerd vanuit ISR’sDebugView geeft geen informatie weer gegenereerd vanuit ISR’s Hulpmiddelen

DebugView (2) Werkt ook na bugcheck schermen:Werkt ook na bugcheck schermen: –“Startup & Recovery” instellingen goedzetten –Zorgen dat DebugView draait tijdens crash –Binnen DebugView kiezen voor File  Process Crash Dump en “memory.dmp” in Windows map selecteren Hulpmiddelen

DebugView (3) Hulpmiddelen

LoadDrv Installatie, starten, stoppen van een driverInstallatie, starten, stoppen van een driver Hulpmiddelen

Einde hulpmiddelen Twee computersystemenTwee computersystemen Verschillende software benodigdVerschillende software benodigd Hulpmiddelen

Vragen Er kunnen nu vragen over hulpmiddelen bij het schrijven van device drivers gesteld worden.

Device drivers

Device Drivers Waarom een device driver Aanroepen van een driver Opbouw van een driver Interrupt Request Levels (IRQL’s) Interrupt Service Routines (ISR’s) en Deferred Procedure Calls (DPC’s) Device drivers

Waarom een device driver Vereist door ontwerp van Windows voor –stabiliteit –beveiliging Applicatie hoeft minder intelligent te zijn; er is minder dubbele code Apparaat kan gedeeld worden met meerdere applicaties Device drivers

Aanroepen van een driver Keuze voor Borland C++ Builder De meeste drivers kunnen benaderd worden alsof het bestanden zijn, dus met de volgende Win32 API functies: –CreateFile –WriteFile –ReadFile –CloseFile Device drivers

Aanroepen van een driver (2) Daarnaast kan met sommige drivers de volgende functie gebruikt worden: DeviceIoControl Invoer aan de functie is: –IOCTL code die het soort verzoek aangeeft Gegenereerd door CTL_CODE macro uit winioctl.h –Invoer- en uitvoerbuffer Device drivers

Aanroepen van een driver (3) Vanwege ingewikkeldheid van aanroepen worden deze in een aparte unit of vaak in een DLL geplaatst Device drivers

Opbouw van een driver Plaats binnen Windows DriverEntry routine DriverUnload routine I/O Request Packet (IRP) Dispatch routines Voorbeelden IRP’s Device drivers

Plaats binnen Windows Device drivers ApplicatieWin32 APII/O ManagerDevice Driver ongemerktAPI functie aanroep dispatch routine Hardware HAL macro’s IoXxx functie- aanroepen

DriverEntry routine Ontvangt pointer naar Driver Object Wordt aangeroepen wanneer de driver door Windows geladen wordt Initialiseert pointers naar andere routines, zoals DriverUnload, AddDevice en StartIo Initialiseert MajorFunction array die pointers bevat naar elke dispatch functie Device drivers

DriverEntry (2) Creëert Device Object voor elk apparaat –Device Object heeft gebruikergedefinieerde Device Extensie voor opslag van variabelen in niet-gepagineerd geheugen Creëert voor elk device eventueel een symbolic link: –de naam die een applicatie kan gebruiken met CreateFile Device drivers

DriverUnload routine Wordt alleen aangeroepen als de driver uit het geheugen wordt geladen voordat het afsluiten van Windows in gang is gezet Als deze routine ontbreekt blijft de driver in het geheugen totdat Windows wordt afgesloten Als er iets speciaals moet gebeuren als Windows wordt afgesloten moet IRP_MJ_SHUTDOWN worden afgehandeld Device drivers

I/O Request Packet (IRP) Meestal aangemaakt door I/O Manager als gevolg van Win32 API aanroep Verplaatst zich vanaf de I/O Manager door de driver Device drivers

Dispatch routines Worden aangeroepen door de I/O manager door de MajorCode uit de IRP als index te gebruiken voor de MajorFunction array van de driver Handelen codes zoals IRP_MJ_CREATE, IRP_MJ_WRITE en dergelijke af, die vaak samenhangen met een bepaalde Win32 API aanroep Device drivers

Dispatch routines (2) Completeren IRP door aanroep van IoCompleteRequest of IRP in StartIo wachtrij zetten door aanroep van IoMarkIrpPending Device drivers

Voorbeelden IRP’s IRP_MJ_CREATE: Wordt verzonden als CreateFile wordt aangeroepen IRP_MJ_CLOSE: Wordt verzonden als CloseFile wordt aangeroepen Device drivers

Voorbeelden IRP’s (2) IRP_MJ_WRITE: Wordt verzonden als een applicatie WriteFile aanroept Kopieert of gebruikt buffer van gebruiker Device drivers

Voorbeelden IRP’s (3) IRP_MJ_READ: Wordt verzonden als een applicatie ReadFile aanroept Kopieert naar of schrijft in buffer van gebruiker Device drivers

Voorbeelden IRP’s (4) IRP_MJ_DEVICE_CONTROL: Wordt verzonden als een applicatie DeviceIoControl aanroept Bevat meestal één groot case statement die de verschillende IOCTL codes afhandelt Device drivers

Einde opbouw van een driver Driver bevindt zich tussen I/O Manager en hardware DriverEntry routine is beginpunt DriverUnload routine is optioneel I/O Request Packets (IRP’s) verplaatsen zich door de driver Dispatch routines worden gebruikt om IRP’s af te handelen Verschillende soorten IRP’s Device drivers

Interrupt Request Levels (IRQL) Delen van een driver worden vanuit verschillende contexten aangeroepen Afhankelijk van deze context verschilt het IRQL nummer Hoe hoger het IRQL, hoe beperkter een driver is in zijn aanroepen Code binnen een hoger IRQL kan niet onderbroken worden door code met een lager of gelijk IRQL Device drivers

IRQL (2) Voorbeelden van IRQL’s (hoog naar laag): –DIRQL: hardware IRQL’s Van toepassing binnen een ISR voor hardware Niet alloceren van niet-gepagineerd geheugen –DISPATCH_IRQL Van toepassing binnen een DPC routine Alleen alloceren van niet-gepagineerd geheugen –APC_IRQL –PASSIVE_IRQL Van toepassing binnen dispatch routines Alloceren van gepagineerd geheugen Device drivers

ISR’s en DPC’s Interrupt Service Routine (ISR) wordt aangeroepen wanneer er een hardware interrupt optreedt IRQL = een DIRQL ISR plant Deferred Procedure Call (DPC) Windows voert DPC’s uit zodra het IRQL daalt tot DISPATCH_LEVEL DPC regelt tijdsintensieve zaken of zaken die alleen op een lager IRQL mogelijk zijn Device drivers

Einde device drivers Nut device driver Aanroepen van een driver Opbouw driver IRQL’s ISR’s en DPC’s Device drivers

Vragen Er kunnen nu vragen over device drivers gesteld worden.

PPort voorbeelddriver

Pport driver StartIo principe Terugloopplug Werking Probleem Oplossingen PPort driver

StartIo principe StartIo principe: Dispatch routine roept IomarkIrpPending aan om IRP in wachtrij te plaatsen IoStartPacket haalt IRP uit wachtrij en roept de StartIo routine aan, die verwerking uitvoert afhankelijk van de MajorCode StartIo routine roept IoStartNextPacket aan zodat volgende IRP uit wachtrij verwerkt kan worden PPort driver

StartIo principe (2) StartIo routine zorgt voor serialisatie StartIo routine verzorgt de eigenlijke I/O met de hardware Hoeft niet verplicht gebruikt te worden PPort driver

Terugloopplug Als hardware wordt er een terugloopplug op de parallelle poort gebruikt Genereren van interrupt mogelijk via Reset uitgang (gekoppeld aan Ack ingang) PPort driver

Werking StartIo ontvangt IRP StartIo roept TransmitByte aan TransmitByte genereert interrupt ISR roept TransmitByte aan Als bytes op zijn dan plant de ISR een DPC in, die de IRP completeert DPC completeert IRP PPort driver

Probleem Bugcheck scherm: MULTIPLE_IRP_COMPLETE_REQUEST Oorzaak: DPC wordt dubbel uitgevoerd, dus ook de ISR wordt dubbel uitgevoerd PPort driver

Oplossingen Oplossing 1: Binnen ISR regel verwijderen: WriteControl(pDevExt, CTL_DEFAULT) Zorgt ervoor dat het Interrupt Enabled bit wordt uitgeschakeld Veroorzaakt bugcheck scherm bij afsluiten van Windows: DRIVER_IRQL_NOT_LESS_OR_EQUAL PPort driver

Oplossingen (2) Oplossing 2: Bijhouden of de DPC al is uitgevoerd nadat een interrupt is gegenereerd Werkt alleen goed als de interrupt door jezelf gegenereerd wordt; acceptabel voor deze driver maar onmogelijk binnen de meeste drivers PPort driver

Einde PPort driver StartIo principe Terugloopplug StartIo, ISR en DPC implementatie Probleem Voorlopige oplossing PPort driver

Vragen Er kunnen nu vragen over de PPort driver gesteld worden.

EZ-USB oplossing

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

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 EZ-USB oplossing

Cypress EZ-USB toolkit Firmware voor Keil C51 –Keil uVision 2 benodigd Broncode van een universele driver Veel documentatie EZ-USB oplossing

USB MP3 Device Rob Looijmans Jan Blanken Ron van Balen Gerard Akse EZ-USB oplossing

USB MP3 Device (2) 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

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

USB experimenteerbord (2) Hardware gereed voor 18 april a.s. 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

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 EZ-USB oplossing

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

Slot

Verdere stage Stage duurt nog circa 14 weken Stage duurt nog circa 14 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 Slot

Slot Hulpmiddelen Hulpmiddelen Device drivers Device drivers Pport driver Pport driver EZ-USB oplossing EZ-USB oplossing Slot

Vragen Algemene vragen over deze presentatie kunnen nu gesteld worden.

Einde Deze PowerPoint presentatie is desgewenst te downloaden vanaf: stage.sools.com