Hallo,
ich will für eine eigene USB Audio Karte einen Windows Treiber bauen.
Hat jemand damit Erfahrung oder kann mir Quellen nennen wo ich Gute
Informationen finde. Am besten gleich mit Code.
Das ganze USB Zeugs ist übrigens nicht das Problem, sondern wie man so
einen Treiber schreibt.
Peter
Peter schrieb:> Hat jemand damit Erfahrung oder kann mir Quellen nennen wo ich Gute> Informationen finde. Am besten gleich mit Code.
Microsoft bietet ein Driver Development Kit an...
Bin ja schon am lesen, nur wenn jemand gleich sagt es geht oder es geht
nicht nimm DAS. Dann würde es mir etliche Stunden lesen und suchen
ersparen.
Peter
Peter schrieb:> ich will für eine eigene USB Audio Karte einen Windows Treiber bauen.
Wenn die die USB-Audio-Standardgeräteklasse implementiert, musst Du das
gar nicht, weil dann nämlich der bei Windows standardmäßig enthaltene
Treiber für diese Geräteklasse verwendet wird.
Windows-Devicetreiber-Entwicklung ist alles andere als trivial, Du musst
wirklich einen sehr guten Grund dafür haben, Dich damit zu
beschäftigen.
Der Compiler ist hierbei das geringste Problem, die kostenlose
Express-Version des Visual Studio sollte ausreichen.
Rufus Τ. Firefly schrieb:> Peter schrieb:>> ich will für eine eigene USB Audio Karte einen Windows Treiber bauen.>> Wenn die die USB-Audio-Standardgeräteklasse implementiert, musst Du das> gar nicht, weil dann nämlich der bei Windows standardmäßig enthaltene> Treiber für diese Geräteklasse verwendet wird.
sehe ich auch so. Es gibt nur ganz wenige Fälle wo es Sinn macht von der
USB-Audio-Klasse abzuweichen. Z.B. wenn man für professionelles
Studioequipment genau definiterte Latenzen braucht.
> Windows-Devicetreiber-Entwicklung ist alles andere als trivial, Du musst> wirklich einen sehr guten Grund dafür haben, Dich damit zu> beschäftigen.
Full Ack. Es kommen noch die Unterschiede zwischen 32 und 64 Bit
Versionen von Windows hinzu und für 64 Bit brauchst Du im Normalfall ein
Zertifikat um den Treiber signieren zu können (kostet mehrere 100 EUR
pro Jahr).
Peter schrieb:> Hat jemand damit Erfahrung oder kann mir Quellen nennen wo ich Gute> Informationen finde. Am besten gleich mit Code.
"Programming the Microsoft Windows Driver Model" von Walter Oney.
Wenn du das gelesen hast, weisst du erstens, was du alles beachten
musst, wirst du zweitens nie wieder auf die Idee kommen, selbst einen
Treiber zu schreiben.
Rufus Τ. Firefly schrieb:> Der Compiler ist hierbei das geringste Problem, die kostenlose> Express-Version des Visual Studio sollte ausreichen.
"System Requirements
Before you begin, you must first install Visual Studio Professional 2012
or above."
(http://msdn.microsoft.com/en-us/windows/hardware/hh852362)
mfg.
>Bin ja schon am lesen, nur wenn jemand gleich sagt es geht oder es geht
nicht nimm DAS. Dann würde es mir etliche Stunden lesen und suchen
ersparen.
Aeh. Ja. Ich kenn Leute die haben das mal bei WinNT durchgezogen. Unter
einem halben Jahr lief gar nicht. Ich bekam damals regelmaessig
Infomaterial von Sysinternals, einem Anbieter von Devicedriver Kits und
Kursen. Der Kurs dauerte damals 3 Tage oder eine Woche und kostete 4000
Pfund. Kursort war in England.
Dh. Lass es sein.
Nun das das keine wirkliche gute Idee ist war mir von Anfang an bewusst.
Nur gibt es keine 32 Bit/256kSampels Audio Treiber.
Windows macht von hause aus nur 16/48.
Ich will bis jetzt nur mein XP benutzen, ob das dann später unter WIN8
auch gehen soll wird sich zeigen.
Peter schrieb:> Nur gibt es keine 32 Bit/256kSampels Audio Treiber.>> Windows macht von hause aus nur 16/48.
Tja, dann wirst Du in den sauren Apfel beißen müssen.
Da Du anscheinend noch keinerlei Erfahrung auf dem Gebiet hast (sonst
hättest Du ja auch nicht so danach gefragt), mach Dich auf mehrere Jahre
Entwicklungszeit gefasst.
Rufus Τ. Firefly schrieb:> mach Dich auf mehrere Jahre Entwicklungszeit gefasst.
Und lass deine Fenster zumauern. Sonst fliegt der PC irgendwann auf
Strasse.
mfg.
Falls denn das Wissen da waere sowas als Standalone Geraet zu bauen,
wuerd ich erst mal das bauen. Wenn's dann geht ist die Integration in
einem PC schon ein Stueck naeher. Und speise das Standalone Geraet auch
mal zum Testen mit einem PC Netzteil.
> Wenn du das gelesen hast, weisst du erstens, was du alles beachten> musst, wirst du zweitens nie wieder auf die Idee kommen, selbst einen> Treiber zu schreiben.> > mach Dich auf mehrere Jahre Entwicklungszeit gefasst.>Und lass deine Fenster zumauern. Sonst fliegt der PC irgendwann auf>Strasse.
Full Ack 8-)
> Windows macht von hause aus nur 16/48.
woher hast du den diese Info? Wie hast du das getestet?
Seit Win98 SE kann windows 24/96. Hab ich selber komerziell mit USB
gemacht.
Thomas
Thomas schrieb:>> Windows macht von hause aus nur 16/48.> woher hast du den diese Info?
Er wird sich auf die USB-Audio-Standardgeräteklasse beziehen. Die
schränkt das ein. Natürlich kann man über USB auch mehr, das dann aber
nur mit einem eigenen Devicetreiber -- und den möchten der Herr ja
wohl auch erstellen.
Fensterzumauern reicht übrigens nicht. Der PC muss eingemauert werden,
da er sonst mit Äxten, Hämmern, Kettensägen und was auch immer gerade
zur Hand ist, zerfetzt werden wird.
Rufus Τ. Firefly schrieb:> Fensterzumauern reicht übrigens nicht. Der PC muss eingemauert werden,> da er sonst mit Äxten, Hämmern, Kettensägen und was auch immer gerade> zur Hand ist, zerfetzt werden wird.
was kann denn der arme PC dafür, daß der Benutzer ihm so ein
widerspenstiges Betriebssystem installiert hat, welches die
Treiberentwicklung so kompliziert macht?
Ich würde also eher die Festplatte und die Windows-CD bzw. -Schachtel
vor Zerstörung schützen. Die sind viel näher am Problem als der Rest der
Hardware. Und damit auch mehr gefährdet.
Der Aufwand, einen Kernel-Treiber zu schreiben, zu debuggen und zu
testen ist doch bei Linux kaum weniger hoch. Mag sein, dass es
stellenweise besser dokumentiert ist, aber wenn ich mal so typische
Quelltext vergleiche, ist das strukturell nicht viel Unterschied.
Christian R. schrieb:> Der Aufwand, einen Kernel-Treiber zu schreiben, zu debuggen und zu> testen ist doch bei Linux kaum weniger hoch.
Das ist doch nur wieder das übliche
Windows-ist-Scheisse-und-Linux-ist-viel-besser-Gelaber.
mfg.
Christian R. schrieb:> Der Aufwand, einen Kernel-Treiber zu schreiben, zu debuggen und zu> testen ist doch bei Linux kaum weniger hoch. Mag sein, dass es> stellenweise besser dokumentiert ist, aber wenn ich mal so typische> Quelltext vergleiche, ist das strukturell nicht viel Unterschied.
Im Gegensatz zu Windows, wo quasi alle Treiber Closed-Source sind, sind
unter Linux alle ernstzunehmenden Treiber im Kernel integriert und Open
Source.
Du hast also jede Menge funktionierenden Beispielcode der ähnliche
Probleme löst. Das alleine macht meiner Meinung schon einen wesentlichen
Unterschied aus.
Wenn man möchte, kann man unter Linux Treiber mittlerweile auch im
Userspace schreiben. Das vereinfacht die Entwicklung deutlich, da
reboots bei Änderungen wegfallen und man Werkzeuge wie einen Debugger,
Valgrind etc. verwenden kann. Allerdings geht durch den Userspace die
Latenz ein wenig hoch, ob das hier zum Problem wird oder nicht kann ich
so nicht beurteilen.
Andreas Schwarz schrieb:> USB Audio Class 2.0 macht mind. 192 kHz, 24 Bit und zig Kanäle.
Und unterstützt das der mit üblichen Windows-Versionen mitgelieferte
Standardgeräteklassentreiber?
In Ermangelung entsprechender Hardware kann ich das nicht prüfen; wenn
der Treiber das tun sollte, hat sich die Problemstellung des
Threadstarters gelöst, bzw. er kann sich mit dem nächsten Problem seines
Unterfangens beschäftigen.
Vielfach basiert USB Audio 2.0 auf den XMOS-Chips. Diese Teile
ermöglichen 24/192. Unter Linux das XMOS-Board einfach angesteckt und
Audacity spielt eine 192kHz-Datei bitperfekt mit 192kHz ab. Bei MacOS
soll es ähnlich sein. Nur Windows verhält sich anders: Man muss erst
einen Treiber kaufen und diesen dann installieren, um in den Genuss von
24 Bit und 192kHz Samplerate zu kommen.
Gerd E. schrieb:> Du hast also jede Menge funktionierenden Beispielcode der ähnliche> Probleme löst. Das alleine macht meiner Meinung schon einen wesentlichen> Unterschied aus.
Dann installier mal das WDK, dann bekommste du auch massig Beispiele
incl. aller Quellen und Doku. Natürlich ist der Windows Kernel an sich
Closed Source, aber ansonsten nimmt sich das nicht viel. Mit VS2012 ist
das WDK jetzt auch integraler Bestandteil von VS, ist nur noch ein
Plug-In, das macht die Sache nochmal einfacher. Ob es inzwischen bessere
Debug-Möglichkeiten als das FireWire oder Serial Kabel gibt, weiß ich
allerdigs nicht. Ist einige Zeit her, dass ich damit mal näher zu tun
hatte.
Hi Thomas,
> Peter schrieb:>> Hat jemand damit Erfahrung oder kann mir Quellen nennen wo ich Gute>> Informationen finde. Am besten gleich mit Code.> "Programming the Microsoft Windows Driver Model" von Walter Oney.> Wenn du das gelesen hast, weisst du erstens, was du alles beachten> musst, wirst du zweitens nie wieder auf die Idee kommen, selbst einen> Treiber zu schreiben.>
Ich hab's gelesen. Ich kann Thomas nur zu 100% recht geben. Selbst
beruflich würde ich mich inzwischen weigern, diesen unsäglichen Kram zu
programmieren. Und falls es privat ist: Tu Dir einen Gefallen und nutze
Deine Zeit sinnvoller als mit Windows-Treiberprogrammierung. Du wirst es
uns noch danken!!! ;-)
Gruß,
ist schon witzig, meist liest man ja Sätze wie:
"die Deppen von XY, wieder mal so ein sch.. der AMD treiber XY ist
Schei..., der Nvidia Treiber noch schei..iger..
sollte man die Programmierer nicht LOBEN, dass sie es, trotz aller
Widrigkeiten, geschafft haben, überhaupt ein Bild auf den LCD zu zaubern
;-)
wegen linux:
wenn ich mir anschauen, wie lange ich zu analogen Zeiten , auf DVB-S
Treiber gewartet habe, (um es dann irgendwan naufzugeben) und dann
später auf DVB-S2 treiber.. (um es dann wieder aufzugeben)
für Windows gab es das jeweils schon JAHRE vorher..
mir ist das egal, ob es unter linux EINFACHER ist, unter Windows geht es
auf jeden Fall SCHNELLER (das sind Fakten, warum es so ist, ist auch
klar... da kann "Linux" nicht viel dafür: da ist eher die Henne oder das
Ei schuld)
nochmal @to: willst du aufnehmen oder abspielen???
Robert L. schrieb:> wenn ich mir anschauen, wie lange ich zu analogen Zeiten , auf DVB-S> Treiber gewartet habe,
Das ist aber nicht Linux und den Linux-Treiber-Entwicklern vorzuwerfen,
sondern den Firmen, die die DVB-S (oder -T oder -C)-Chips herstellen und
hartnäckigst keinerlei Dokumentation rausrücken.
>vorzuwerfen
hab ich ja nicht
ich hab geschrieben werde schuld ist ...
zu dvb-s: ich glaube es lag eher an der proritäten/nicht freien
firmware, die der TREIBER jedes mal auf die karte schreiben musste,
damit sie überhaupt erst funktioniert