Zum Inhalt springen

Treiber schreiben


ExtremC

Empfohlene Beiträge

Originally posted by ExtremC

Mein Dozent meinte, daß Treiber in C++ geschrieben sind. Hat das von euch schonmal jemand gemacht. Ich bin zwar kein AE sondern SI, aber gerade als SI sollte man sowas können.

Also soweit ich weiss sind ein Grossteil der Treiber, ich beziehe mich auf Windows NT, in C und teilweise in Assembler geschrieben sind.

Und dein Dozent meinte als FISI sollte man das koennen ? Kann er das denn ?

Ich weiss bei mir im Studium hatte einer eine Diplomarbeit bei der er einen Treiber

fuer so ein Digi-Board fuer Windows NT geschrieben hat. Bis er das alles so einigermassen drauf hatte und der Treiber dann einigermassen lief hat das so

ca. 3 Monate gedauert.

Wenn man keine eigene Hardware entwickelt dann braucht man auch keine Treiber

schreiben zu koennen.

Treiber sind aber nicht in C++ geschrieben eher in C oder Assember.

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by ExtremC

Mein Dozent meinte, daß Treiber in C++ geschrieben sind. Hat das von euch schonmal jemand gemacht. Ich bin zwar kein AE sondern SI, aber gerade als SI sollte man sowas können.

Die Programmiersprache haengt natuerlich auch vom Betriebssystem ab. Bei Unix-basierten Systemen wird in der Regel C verwendet. Treiber-Impementierungen koennen beliebig komplex werden, daher denke ich nicht, dass das zum Basiswissen gehoert.

Ich bin gerade dabei einen Treiber fuer eine Videokarten von HPUX10 nach 11 zu portieren und selbst da wirds schon knifflig, da sich die Kernelschnittstellen an einigen Stellen geaendert haben (und der Originaltreiber - vorsichtig ausgedrueckt - miserablen Code enthaelt).

Nic

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by nic_power

Die Programmiersprache haengt natuerlich auch vom Betriebssystem ab. Bei Unix-basierten Systemen wird in der Regel C verwendet. Treiber-Impementierungen koennen beliebig komplex werden, daher denke ich nicht, dass das zum Basiswissen gehoert.

Ich bin gerade dabei einen Treiber fuer eine Videokarten von HPUX10 nach 11 zu portieren und selbst da wirds schon knifflig, da sich die Kernelschnittstellen an einigen Stellen geaendert haben (und der Originaltreiber - vorsichtig ausgedrueckt - miserablen Code enthaelt).

Nic

Gibt HP den Sourcecode fuer die Treiber heraus ? Oder schreibst du das vollkommen neu ?

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by SgtBadAzz

Gibt HP den Sourcecode fuer die Treiber heraus ? Oder schreibst du das vollkommen neu ?

Frank

Es handelt sich um keinen Originaltreiber von HP, sondern um einen Treiber von einer Firma die vor ein paar Jahren pleite gegangen ist. Freundlicherweise wurde der Web-Server noch fuer ca. ein Jahr am Netz gelassen und saemtlichen Quellen freigegeben.

HP gibt im allgemeinen keine Treiberquellen nach aussen, allerdings gibts brauchbare Informationen und Beispielimlementierungen, die man sich kostenlos von der HP-Web Seite besorgen kann.

Nic

Link zu diesem Kommentar
Auf anderen Seiten teilen

@ll

danke für die Antworten. Find ich erstmal ganz interessant, gerade was die Treiberquellen angeht.

@SGTBadAss

Ich meinte, daß es als Fisi ganz gut ist, wenn man Treiber schreiben kann und nich der Dozent meinte das. Der Fisi ist doch hardware-orientierter und daher passt es ganz gut, finde ich.

Und die Betriebssysteme sind also in C geschrieben. Ginge es dann eigentlich trotzdem, Treiber in C++ zu schreiben?

Oft ist es so, daß bei Laptops, die Soundkarte(vielleicht auch andere Geräte) nicht von Linux angesprochen werden kann, unter Windows dann schon. Muß man da eigentlich am Treiber noch viel umschreiben oder wird das ganze dann einfacher?

Und mit Assembler einen Treiber zu schreiben, stelle ich mir einfacher vor, da Assembler maschinenorientierter ist als C/C++.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du hast noch nicht in Assembler programmiert, richtig?

In einer maschinennahen Programmiersprache zu programmieren bedeutet, daß man sich um alle Details kümmern muß. Die Programmiersprache nimmt einem nichts ab. Es ist also bei weitem nicht leichter. Treiberprogrammierung ist prinzipiell nicht trivial, egal welche Sprache man nimmt, aber ich glaube nicht, daß es mit Assembler leichter ist.

HTH

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by ExtremC

[@SGTBadAss

Ich meinte, daß es als Fisi ganz gut ist, wenn man Treiber schreiben kann und nich der Dozent meinte das. Der Fisi ist doch hardware-orientierter und daher passt es ganz gut, finde ich.

Und die Betriebssysteme sind also in C geschrieben. Ginge es dann eigentlich trotzdem, Treiber in C++ zu schreiben?

Oft ist es so, daß bei Laptops, die Soundkarte(vielleicht auch andere Geräte) nicht von Linux angesprochen werden kann, unter Windows dann schon. Muß man da eigentlich am Treiber noch viel umschreiben oder wird das ganze dann einfacher?

Und mit Assembler einen Treiber zu schreiben, stelle ich mir einfacher vor, da Assembler maschinenorientierter ist als C/C++.

Also ich weiss das ein Grossteil von NT in C geschrieben ist und ein kleinerer Teil in C++.

Na ja ob es zum FISI besser passt weiss ich nicht, ich weiss aber einen Treiber zu schreiben von Grund auf ist nicht trivial, einer in meinem Studium hat sowas als Diplomarbeit gemacht fuer NT , das war nicht so einfach.

Assembler ... na ja , ich denke nicht das es einfacher ist darin Treiber zu schreiben als in C, in C++ denke ich macht das nicht soviel Sinn.

Die Vorteile von C++ kann man , IMHO, bei der Entwicklung von sowas wie Treibern wohl nicht so voll ausspielen und Assembler lohnt sich wohl in den meisten Faellen nicht das es gegenueber C wohl , gemessen am Aufwand, nicht mehr praktikabel ist.

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by SgtBadAzz

Also ich weiss das ein Grossteil von NT in C geschrieben ist und ein kleinerer Teil in C++.

Na ja ob es zum FISI besser passt weiss ich nicht, ich weiss aber einen Treiber zu schreiben von Grund auf ist nicht trivial, einer in meinem Studium hat sowas als Diplomarbeit gemacht fuer NT , das war nicht so einfach.

Assembler ... na ja , ich denke nicht das es einfacher ist darin Treiber zu schreiben als in C, in C++ denke ich macht das nicht soviel Sinn.

In Assembler wird nur noch in den seltensten Faellen entwickelt. Alle Betriebssysteme stellen eine wohl definierte Schnittstelle zur Treiberprogrammierung bereit auf die man auch tunlichst zurueckgreifen sollte.

Nic

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by nic_power

In Assembler wird nur noch in den seltensten Faellen entwickelt. Alle Betriebssysteme stellen eine wohl definierte Schnittstelle zur Treiberprogrammierung bereit auf die man auch tunlichst zurueckgreifen sollte.

Nic

Ich kann auf diese Schnittstelle auch in Assembler zurueckgreifen wenn es denn sein muss, das eine schliesst das andere nicht aus. Die Frage ist ob es Sinn macht und da denke ich eher weniger.

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by SgtBadAzz

Ich kann auf diese Schnittstelle auch in Assembler zurueckgreifen wenn es denn sein muss, das eine schliesst das andere nicht aus. Die Frage ist ob es Sinn macht und da denke ich eher weniger.

Frank

Naja, man kann auch von Assembler aus seine Java-Scripte ausfuehren ;). Die Kernel-APIs sind in der selben Sprache verfuegbar, in der auch der Kernel implementiert ist. Unixbasierte Systeme stellen ueblicherweise eine wohldokumentierte C-Schnittstelle zur Treiberimplementierung bereit. Es macht heute keine Sinn mehr, Treiber in Assembler zu implementieren (von einigen exotischen Ausnahmen mal abgesehen), da Assembler Code nur mit sehr grossem Aufwand portier- und wartbar ist. Bei C++ basierten Treiberschnittstellen kommt dann noch hinzu, dass Du das Demangling der Funktionen per Hand machen darfst (und das ist eine Arbeit die man nichtmal seinem schlimmsten Feind an den Hals wuenscht).

Nic

Link zu diesem Kommentar
Auf anderen Seiten teilen

Na gut. Ihr habt gewonnen. In Assembler einen Treiber zu programmieren ist schwieriger. Ich hatte ja auch noch nie nen Treiber programmiert, jedoch schonmal in Assembler programmiert. Sehr einfache Sachen, wie Ampel-Schaltung und Halbschrittmotor. Da brauchte ich ja nur die Register mit den richtigen Zahlen zu laden und dann lief das Ding. Ein bekannter von mir meinte, daß auf Maschinen-Ebene der Assembler-Code einfacher wäre als der C/C++-Code. Beim Treiber für z.B.ne Nic scheint dies wohl nicht mehr so zu sein.

@gugelhupf

Guter Link.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

Falls Interesse besteht, kann ich die Treiberquelle fuer den HPUX11.00 Port der Parallax-Video Treiber bei Bedarf auf meine Web-Seite packen. Das kann allerdings noch ein paar Tage dauern. Der Treiber ist inzwischen zwar im Kernel und die Karte wird (offensichtlich) auch erkannt, allerdings faellt die Video-Extension fuer den X-Server "auf die Nase" was sich in einem Core-Dump manifestiert. Ich muss also wohl noch ein bisschen debuggen ;(

Nic

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...