ExtremC Geschrieben 11. Januar 2003 Geschrieben 11. Januar 2003 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. Zitieren
SgtBadAzz Geschrieben 11. Januar 2003 Geschrieben 11. Januar 2003 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 Zitieren
nic_power Geschrieben 11. Januar 2003 Geschrieben 11. Januar 2003 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 Zitieren
SgtBadAzz Geschrieben 11. Januar 2003 Geschrieben 11. Januar 2003 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 Zitieren
nic_power Geschrieben 11. Januar 2003 Geschrieben 11. Januar 2003 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 Zitieren
ExtremC Geschrieben 12. Januar 2003 Autor Geschrieben 12. Januar 2003 @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++. Zitieren
Orffi Geschrieben 12. Januar 2003 Geschrieben 12. Januar 2003 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 Zitieren
SgtBadAzz Geschrieben 12. Januar 2003 Geschrieben 12. Januar 2003 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 Zitieren
nic_power Geschrieben 12. Januar 2003 Geschrieben 12. Januar 2003 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 Zitieren
SgtBadAzz Geschrieben 13. Januar 2003 Geschrieben 13. Januar 2003 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 Zitieren
gugelhupf Geschrieben 13. Januar 2003 Geschrieben 13. Januar 2003 Evtl. von Interesse hier: http://www.wischrop-net.de/nt/index_dipl_down.htm Zitieren
nic_power Geschrieben 13. Januar 2003 Geschrieben 13. Januar 2003 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 Zitieren
ExtremC Geschrieben 13. Januar 2003 Autor Geschrieben 13. Januar 2003 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. Zitieren
nic_power Geschrieben 13. Januar 2003 Geschrieben 13. Januar 2003 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 Zitieren
Empfohlene Beiträge
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.