Treiber in .NET?

spaudanjo

Mitglied
hi!

mal ne krasse frage:

haltet ihr es für denkbar, dass in nicht allzuferner zeit die ersten gerätertreiber, die komplett in .net-code geschrieben sind, verfügbar sein werden? oder spricht etwas prinzipiell dagegen (wenn ja, was?), treiber in managed code zu erstellen. immerhin habe ich auch noch nie was von einem javabasierten treiber gehört. das wesentliche an java und .net ist ja gerade die abstraktion von system- und hardwarenahen angelegenheiten, aber was für spezielle anforderungen haben denn gerätetreiber an eine programmiersprache?

mfg, spaudanjo.
 
Hallo

Also mir fällt da nur eine Anforderung ein, die Java und .NET beide nicht erfüllen: Hardware-Nähe.
Für Treiber empfiehlt sich meiner Meinung nach eher Assembler. Vielleicht ANSI C wäre noch brauchbar, aber .NET und Java sind allein schon wegen der OOP zu weit von der Hardware weg, als dass Treiber zu schreiben damit sinnvoll wäre.

Gruß, Niko
 
Wieso soll Hardwarenähe eine Voraussetzung sein? Treiberprogrammierung wird doch bestimmt auch mit dem CTS möglich sein.
C++ ist auch OO und zugleich sehr Maschinennah. Wieso ist direkter Zugriff auf den Speicher eine Voraussetzung? Wenn man in .NET/Java ein nette Interface à la
Code:
Hardware.SendByte(125);
Hardware.GetByte();
hat sollte das doch genau so möglich sein, wie mit Assembler/C/++. Selbstverständlich werden verwaltete Sprachen nie an die Performance von Maschinencode herankommen.
Ich denke aber nicht, dass wir unsere Grafikkarten in den nächsten paar Jahren von Bytecode kontrollieren lassen werden.

Allerdings könnte ich mir verwaltete Treiber bei externen Geräten (Messgeräte, USB-Schnick-Schnack, Drucker?) gut vorstellen. Microsoft möchte .NET ja gerne auch zur Steuerung von Endbenutzergeräten (z.B. einem Toaster) verwenden.
 
Sunray hat gesagt.:
Selbstverständlich werden verwaltete Sprachen nie an die Performance von Maschinencode herankommen.
Ich denke aber nicht, dass wir unsere Grafikkarten in den nächsten paar Jahren von Bytecode kontrollieren lassen werden.

Allerdings könnte ich mir verwaltete Treiber bei externen Geräten (Messgeräte, USB-Schnick-Schnack, Drucker?) gut vorstellen. Microsoft möchte .NET ja gerne auch zur Steuerung von Endbenutzergeräten (z.B. einem Toaster) verwenden.

Aber bei richtigen Geräte-Treibern (nicht für USB-Spielereien) geht es doch gerade um Performance!
Sicher ist es auch machbar, in einer nicht Hardwarenahen Programmiersprache Treiber zu erstellen (vielleicht sogar in QBasic?:D). Aus Performance-Gründen halte ich das aber nicht für sinnvoll. Ergo denke ich nicht, dass sich das ausbreitet, oder dass es in naher Zukunft Treiber für Grafikkarten etc. in .NET/Java geben wird bzw. dass diese sich durchsetzen. Wieso mit dem Traktor (.NET/Java/etc.) auf die Autobahn fahren, wenn man einen Ferarri (Assembler) hat? Dass allerdings bei einer Maus oder anderem USB-Schnickschnack die Performance nicht so wichtig ist, stimmt wohl auch; hier könnte es also schon möglich sein, mit .NET/Java einen Treiber zu schreiben.

Sunray hat gesagt.:
Wieso soll Hardwarenähe eine Voraussetzung sein? Treiberprogrammierung wird doch bestimmt auch mit dem CTS möglich sein.
C++ ist auch OO und zugleich sehr Maschinennah. Wieso ist direkter Zugriff auf den Speicher eine Voraussetzung? Wenn man in .NET/Java ein nette Interface à la
Code:
Hardware.SendByte(125);
Hardware.GetByte();
hat sollte das doch genau so möglich sein, wie mit Assembler/C/++.
C++ und andere OOP-Sprachen sind darauf ausgelegt, von Menschen intuitiv verstanden/erfasst zu werden. Treiberprogrammierung hat aber mehr mit "Register-Roulette" als mit intuitiv verständlichem Code zu tun, also ist OOP zwar kein direktes Hindernis, aber eben so unnötig wie z.B. die elektrischen Fensterheber in unserem oben erwähnten Ferrari: Sie sind bequemer, um die Fenster zu öffnen, aber sie verschleiern die wahre Fensterhebe-Mechanik mehr als die Mechanischen Fensterkurbeln. :D

Gruß, Niko
 
Es scheint doch verwaltete Treiber zu geben:
Das Betriebssystem JavaOS scheint ausschliesslich Treiber in Java zu verwenden...
Wie sinnvoll das ist sei dahingestellt...
 
moin


Es gibt spezielle DDK (Driver Development Kits) mit denen du sowas realisieren kannst.
Geh mal bei Microsoft gucken, da wirst du fündig werden.


mfg
umbrasaxum
 
vielen dank für die zahlreichen und informativen antworten!

die frage die sich mir jetzt stellt: ist treiberprogrammierung "generell" schwierig und was für absolute hardcore-progger mit 6 semestern info-studio oder ist es bei einfachen geräten gar nicht so schwer!?

gibts da vieleicht gute resourcen für einsteiger im internet

das DDK scheint es ja leider nicht kostenlos zu geben! haste davon vieleicht mal nen screenshot, damit ich ne ahnung hab wie sowas aussieht?

mfg, spaudanjo.
 
Zurück