www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Treiber programmieren unter WINXP


Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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=443...

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

Was hast Du genau vor?

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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=...
Und als Buchtipp nimm das von MS direkt, die sind alle AddisonWesley
;)
Z.B.:
http://www.microsoft.com/mspress/africaandmiddleea...
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

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: René König (king)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christoph __ (chris)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Peter (Gast)
Datum:

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

Autor: Marcel (Gast)
Datum:

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

Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: stephan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Beitrag #2390277 wurde von einem Moderator gelöscht.
Beitrag #2390281 wurde von einem Moderator gelöscht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.