Treiber programmieren unter WINXP

Persönliche Seite #320475
Lesenswert?
• ▲
▼
Windows NT Device Driver Development
by Peter Viscarola and W. Anthony Mason
The classic, and best selling book of all time, about how to write
device drivers for Windows. Although this book was written for Windows
NT V4.0, it still contains lots of good technical information. NOTE:
Does not cover WDM.

und

http://www.lob.de/cgi-bin/work/outputexpert?id=4432bf377aea6&frame=yes&flag=new&menupic=yes&mode=viewone&titnr=212103185&linkcol=005c21&stich=wdm+driver+&katalog=255

Lass Dir aber von vornherein gesagt sein, der Weg ist extrem
steinig.

Was hast Du genau vor?
Gast #320476
Lesenswert?
• ▲
▼
wow.. siehe mal an ;)
ich habe vor ein und halb jahren etwa schon einen treiber unter windows
2000 für meine studienarbeit entwickelt. es war ein normaler
standardtreiber, der letztendlich mit einer interruptroutine
ausgestattet wurde, die dann meine selbstgebastelte ISA-Karte
ansteuerte. Mein Vorteil war, dass ich anhand einer Vorlage von
Microsoft schon loslegen konnte, verstehen musste ich es aber zunächst
trotzdem, sonst kommt man nich weit in der Kernelwelt.

Also wenn du keine gute C Kenntnisse hast, wird es meiner meinug eher
bisle schwierig. zumindest solltest du keine probleme haben mit Zeiger,
structs, callbackroutinen etc..

also was du als aller erstes brauchst ist das DDK für win2k/xp, und den
MSVC Compiler (ich glaube sogar die pro edition). bei der DDK ist dann
auch ein manual dabei in englisch von Microsoft. Ich selbst habe aus
diesem Manual gelernt.
Ob es ein Buch gibt, weiss ich nicht. wäre vielleicht besser..

jedenfalls hab ich 2 wochen erstmal lesen müssen bevor ich überhaupt
meinen editor angeschmissen hab..

wenn du willst kann ich dir meine doku von meiner studienarbeit geben.
dort hab ich auch zusammenfassend einiges erklärt.

also grundsätzlich kommt es drauf an was du machen willst. wenn du
einen einfachen general purpose treiber schreiben willst dann gehts.

mfg
stephan
Gast #320477
Lesenswert?
• ▲
▼
Hallo,
ein guter Anlaufpunkt ist auch die MSDN community ;)
Das Buch ist zu empfehlen, um erstmal die grundsätzlichen Unterschiede
zwischen den vom Betriebssystem verwalteten Treibern und den DMA
Treiber zu begreifen.
Wenn nur maximal 64K ausreichen, lohnt es sich eine DriverQueue vom OS
selbst erzeugen und verwalten zu lassen.
Sobald es allerdings um größere Datenmengen oder DMA & Co geht, kommt
man bei Windows nicht darum herum ALLES und ich meine ALLES selbst zu
implementieren :(
Das unterscheidet MS von z.B. L*nux, wo auch ein "defekter" Treiber
mit insmod dynamisch geladen werden kann, ohne den berühmten "Bluee
Screen" zu haben ...
DDK gibt's hier:
http://www.microsoft.com/whdc/devtools/ddk/default.mspx
Infos zur Entwicklung hier:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/DeviceDriver.asp
Und als Buchtipp nimm das von MS direkt, die sind alle AddisonWesley
;)
Z.B.:
http://www.microsoft.com/mspress/africaandmiddleeast/Pages/WinXP_756.htm
http://www.microsoft.com/mspress/books/6262.asp
Achja und zum debuggen mit dem DDK brauchst Du einen zweiten Rechner an
der seriellen Schnittstelle ;)
Außer Du hast ein paar Tausend Teuronen für einen besseren Debugger in
Deiner Portokasse ;)
Viel Spaß beim "Autosadomasochismus",
Markus
Gast #320478
Lesenswert?
• ▲
▼
Oh mann, das erinnert mich an meinen Versuch, mal eben nen Treiber zu
programmieren.

Als ich dann aber das DDK hatte und mich versucht hatte einzulesen,
dacht ich mir ganz schnell, das lass ich mal lieber...
Gast #320479
Lesenswert?
• ▲
▼
hallo stephan
würde mich über deine studienarbeit freuen. hier ist meine adresse

email@tietke.com

habe vor einen ad Umsetzer mit 400MSPS auszuwerten. und da die mir
bekannten schnittstellen zu langsam sind wollte ich das über den
datenbus machen. natürlich immer nur züglich übertragen.

danke
Persönliche Seite #320480
Lesenswert?
• ▲
▼
.

  "... über den Datenbus machen."

Welchen? Ist der AD-Wandler auf einer PCI-Karte untergebracht?

Die Datenrate von 400MSPS ist über PCI nicht ansatzweise
transferierbar. Deine Hardware wird also einen Pufferspeicher verwenden
müssen, der dann -langsamer- über den PCI-Bus ausgelesen werden kann.

Falls Du Dir eine andere Hardwarelösung vorstellst: Beschreibe diese.

Meinst Du mit "züglich" zyklisch?
Gast #320483
Lesenswert?
• ▲
▼
Also, ich wollte auch mal einen Treiber für Windows programmieren. Habe
angefangen mich einzulesen und das ganze Thema nach kurzer Zeit wieder
beiseite gelegt. Das war glaub' noch zu Win98 Zeiten. Da mussten die
Treiber dann teilweise noch in Assembler geschrieben werden und so ein
Quark. Ich bekomme immer noch Gänsehaut, wenn ich an diese
Treiber-Geschichte denken...
Gast #320486
Lesenswert?
• ▲
▼
hallo,

das ich das zwischen speichern muss ist mir schon klar.  hier ist meine
idee sehr sehr sehr schnelle fifos zu nehmen. 400msps solls geben. und
diese immer wenn die voll sind, dann langsam über den pcibus senden.
als einheit wollte ich den spartan3 von xilinx nehmen.
Gast #320487
Lesenswert?
• ▲
▼
hallo..

im anhang meine interrupt routine aus meinem treiber für win2k.

fifos.. das erinnert mich noch mehr an soundkarten ;)
hier is der link zu meiner homepage für die studienarbeit.
ich habe es sozusagen freiwillig veröffentlicht.
http://hammer.outer-worldz.de/files/noizer.zip

startlink: http://hammer.outer-worldz.de

auf meiner seite sind ausser irrsinnigem zeug noch andere vergangene
projekte vor etwa 3 jahren aus der phase wo ich noch zu viel zeit hatte

;-P wie z.b. ein primitives selbstprogrammiertes Disketten OS in
assembler.

also wenn du schon einiges in C programmiert hast (am besten WINAPI
selbst!) und z.b. zwischen physikalischem und virtuellem speicher
unterscheiden kannst usw., wirst du dich in die Treiberwelt flot
einlesen können, so etwa 3 wochen intensive lesearbeit solltest du
dafür investieren. bei mir wars auch so ...
allerdings hab ich mit DMA noch nichts gemacht.. ich hab meine hardware
mit dem prozessor selbst angesteuert.

wie schon gesagt, ein dickes buch darüber besorgen und erstmal lesen.
vorher geht gar nbix.


mfg
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.