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
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?
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
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
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...
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
. "... ü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?
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.
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
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...
Versuchs doch mal bei www.jungo.com. Ich programmiere damit eine selbstentwickelte PCI Karte. Im Pinzip ist dein Treiber an einem Tag fertig.
Laut Wikipedia kann PCI-Express pro Lane 240MB/s - mit zwei Lanes also etwa 400MB. Das dürfte aber ziemlich hartes Pflaster werden
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.