Forum: Mikrocontroller und Digitale Elektronik Treiber programmieren unter WINXP


von max (Gast)


Lesenswert?

hallo,

habe vor einen Treiber unter WinXP zu entwickeln und wollte mich
erkundigen ob hier jemand eine Buchempfehlung für mich hat. in C/C++
keine ich mich ganz gut aus. eigentlich mehr C als C++. Also sollte das
darauf schon hinaus laufen.

danke

von Rufus Τ. F. (rufus) Benutzerseite


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?

von stephan (Gast)


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

von Markus (Gast)


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

von Marcel (Gast)


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

von max (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


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?

von René K. (king)


Lesenswert?

Nochmals zum Thema Buch: Der Petzold der Treiber-Programmierung heißt
'Walter Oney', das (aktuelle) Buch heißt 'Programming the Microsoft
Windows Driver Model'. Wenn man Treiber programmiert, besitzt man
dieses, IMO.

von Christoph _. (chris)


Lesenswert?

Das Windows DDK gibt es seit geraumer Zeit zwar nicht mehr umsonst,
dafür gibt es seit einigen Monaten das KMDF, das "Kernel-Mode Driver
Framework". Ich habe es selbst nicht ausprobiert, es aber soll das
aktuelle DDK darstellen:
http://www.microsoft.com/whdc/driver/wdf/KMDF_pkg.mspx

von Unbekannter (Gast)


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

von Peter (Gast)


Lesenswert?

Versuchs doch mal bei www.jungo.com.
Ich programmiere damit eine selbstentwickelte PCI Karte.
Im Pinzip ist dein Treiber an einem Tag fertig.

von Marcel (Gast)


Lesenswert?

Laut Wikipedia kann PCI-Express pro Lane 240MB/s - mit zwei Lanes also
etwa 400MB. Das dürfte aber ziemlich hartes Pflaster werden

von max (Gast)


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.

von stephan (Gast)


Angehängte Dateien:

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

von max (Gast)


Lesenswert?

danke für den link, und respekt für die die arbeit. sieht wirklich gut
aus deine soundkarte, wann kommt die 5.1 dolby version :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.