Linux 15.070 Themen, 107.540 Beiträge

Aus einer .c und einer .h ein Treiber-Modul schaffen - wie?

gerfield / 11 Antworten / Baumansicht Nickles

Hallo,

ich habe hier einen kleinen Compaq Deskpro EN stehen. Dieser hat nur einen PCI-Slot, und weil ich diesen mit einer vernünftigen Grafikkarte füllen möchte, muss die onBoard Netzwerkkarte laufen.
Es ist ein "ThunderLAN", auch "TLAN" gennant, Chip entwickelt von Compaq und TI. Tatsächlich fand ich auch einen Treiber, hier:

--> http://sourceforge.net/projects/tlan/

Ich habe die tar.gz entpackt, darin befindet sich:

- ChangeLog
- tlan.c
- tlan.h
- tlan.txt

Die ChangeLog hilft mir natürlich nicht, in der tlan.txt stehen einige Parameter drin, die ich per insmod angeben kann, aber nicht, wie ich aus dem tlan.c und dem tlan.h ein Treiber-Modul tlan.o schaffe!.

Jemand eine Idee?

GrußgerfieldIn a world without walls and fenceswho needs Windows and Gates?
bei Antwort benachrichtigen
higgl gerfield „Aus einer .c und einer .h ein Treiber-Modul schaffen - wie?“
Optionen

hi gerf,

eine *.o datei bekommst du, wenn du den linkerlauf nicht startest. das geht mit der option "-c" bei gcc. die "tlan.h" wird in die *.c included, sie braucht also nicht kompilliert werden.

normal dürfte also ein

gcc -c tlan.c

ausreichen.

das ist aber sehr sehr vage, ich habe da nicht wirklich ahnung.
vielleicht kann karsten dazu noch mehr sagen.

hth

Never argue with an idiot. They drag you down to their level and then beat you with experience.
bei Antwort benachrichtigen
gerfield higgl „hi gerf, eine .o datei bekommst du, wenn du den linkerlauf nicht startest. das...“
Optionen

Wenn ich das so eingebe, dann kommen haufenweise Fehlermeldungen. Anscheinend mag er den Code nicht .....

GrußgerfieldIn a world without walls and fenceswho needs Windows and Gates?
bei Antwort benachrichtigen
mr.escape gerfield „Wenn ich das so eingebe, dann kommen haufenweise Fehlermeldungen. Anscheinend...“
Optionen
dann kommen haufenweise Fehlermeldungen.
Das sind wohl fehlende/falsche pfade für include-files und libraries.

Diese pfade müssen (mindestens) vorhanden sein (relativ zum standard include-pfad):

#include <linux/module.h>

#include "tlan.h"
//#include <asm/io.h>
//#include <asm/types.h>
//#include <linux/netdevice.h>

#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/pci.h>
#include <linux/etherdevice.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/mii.h>


mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen
gerfield mr.escape „ Das sind wohl fehlende/falsche pfade für include-files und libraries. Diese...“
Optionen

Ich habe mir die .c-Datei angeschaut, dort stehen diese include-Dateien schon drin. Ich habe dann testweise einen Ordner linux in den Ordner erstellt, wo auch die tlan.c und tlan.h sind + darin alle Dateien kopiert, die per include eingebunden sind - kein Erfolg.

Noch eine Idee? Wie kann ich die Fehlermeldungen alle in eine Datei schreiben um sie hier zu posten?

GrußgerfieldIn a world without walls and fenceswho needs Windows and Gates?
bei Antwort benachrichtigen
mr.escape gerfield „Ich habe mir die .c-Datei angeschaut, dort stehen diese include-Dateien schon...“
Optionen
Ich habe mir die .c-Datei angeschaut, dort stehen diese include-Dateien schon drin.
Da habe ich ja die informationen her.

Ich habe dann testweise einen Ordner linux in den Ordner erstellt, wo auch die tlan.c und tlan.h sind + darin alle Dateien kopiert, die per include eingebunden sind - kein Erfolg.
Dieser ordner "linux" sollte schon (mit inhalt) vorhanden und korrekt konfiguriert (standard-include-pfad) sein.
Diese header-dateien können durchaus andere, hier nicht aufgeführte header-dateien einbinden. Dateien, die mit <datei.h> eingebunden werden, beziehen sich auf den/die standard-include-pfad(e) und dateien, die mit "datei.h" eingebunden werden, auf den lokalen pfad. Ein kopieren ist damit vermutlich nicht zielführend.

Wie kann ich die Fehlermeldungen alle in eine Datei schreiben um sie hier zu posten?
Einfach hier posten (aber nicht ganze romane, sondern max. nur ca. die ersten hundert zeilen). Evtl. in mehreren portionen.
Ansonsten ist web/ftp-space erforderlich.

mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen
gerfield mr.escape „ Da habe ich ja die informationen her. Dieser ordner linux sollte schon mit...“
Optionen

Funktioniert es denn bei dir?

Wenn ja, könntest du mir das fertig kompilierte Modul tlan.o als Mail zuschicken (Adresse s. Visitenkarte)?

GrußgerfieldIn a world without walls and fenceswho needs Windows and Gates?
bei Antwort benachrichtigen
mr.escape gerfield „Funktioniert es denn bei dir? Wenn ja, könntest du mir das fertig kompilierte...“
Optionen

Ich fürchte, das wirst du schon selber machen müssen.
Als kleine hilfe:
http://www.faqs.org/docs/kernel/x145.html

Vielleicht versuche ich es später am vormittag mal selbst, mal sehen.
mr.escape

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen
gerfield mr.escape „Ich fürchte, das wirst du schon selber machen müssen. Als kleine hilfe:...“
Optionen

Mir ist nun sogar aufgefallen, das er Kernel (2.4.27) sogar schon ein tlan.o beinhaltet :-o

Leider funktioniert das aber nicht, er findet die Karte nicht.

Mir ist das langsam zu aufwendig, - ich lasse die PCI-Karte drin und versuche mit der internen Graka fertig zu werden. Problem: Wenn ich den X starte, wird sehr oft das Bild falsch dargestellt (man sieht doppelt, oder man sieht nur viele verschiedene Punkte/Striche, manchmal der ganze Bildschirm türkis, ganz komisch) oder bleibt gleich schwarz und es bleibt nur noch der Reset. Läuft es aber erstmal (nach mehrmaligen Versuchen), dann geht's auch.

Ich werde dazu noch bisschen mit dpkg-reconfigure xserver-xfree86 rum spielen, mal sehen, was es bringt ....


Auf jeden Fall muss ich allen danken die versucht haben zu helfen! Vielen Dank!

GrußgerfieldIn a world without walls and fenceswho needs Windows and Gates?
bei Antwort benachrichtigen
higgl gerfield „Ich habe mir die .c-Datei angeschaut, dort stehen diese include-Dateien schon...“
Optionen

diese dateien liegen normalerweise in

/usr/local/include

ich habe gerade bei meinem debian nachgeschaut, da ist dieser ordner leer. ich suche mal nach dem packet, dass diese dateien beinhaltet...

Never argue with an idiot. They drag you down to their level and then beat you with experience.
bei Antwort benachrichtigen
higgl Nachtrag zu: „diese dateien liegen normalerweise in /usr/local/include ich habe gerade bei...“
Optionen

das war schwachsinn. die header liegen alle unter
/usr/include/ bzw. /usr/include/linux

Never argue with an idiot. They drag you down to their level and then beat you with experience.
bei Antwort benachrichtigen
KarstenW gerfield „Aus einer .c und einer .h ein Treiber-Modul schaffen - wie?“
Optionen

Da hier ein Kernelmodul kompiliert werden soll, muß man erstmal herausfinden für welche Kernelversion dieser Treiber programmiert wurde. Dann müssen die passenden Kernelsourcen installiert sein. Also für einen 2.6.8er Kern müssen auch die 2.6.8er Kernelsourcen installiert werden.

Dieses Kernelmodul muß dann mit "modprobe Treiber" oder "insmod Treiber" in den Speicherbereich des Betriebsystemkerns geladen werden.

PS: Dieser Treiber ist von 2002:

Posted By: chessman
Date: 2002-09-06 07:29
Summary: TLAN v1.15 now on Sourceforge

The current version of the TLAN driver v1.15 is in linux 2.4.19.

Wenn du dir einen eigenen Betriebsystemkern kompilieren würdest, dann würdest du sehen das unter "Device Driver--->Networking support--->Ethernet (10 or 100 Mbit)---->TI TunderLan support" schon der richtige Treiber bei den Kernelsourcen dabei ist.

Du brauchst also nur einen eigenen Kern zu kompilieren und die Unterstützung für TI Thunder Lan zu aktivieren.

Das ist ja auch der Sinn einen eigenen Kern zu kompilieren. Bei einem monolitischen Betriebsystemkern laufen alle Treiber und Netzwerkprotokolle im Betriebsystemkern. Da die Rechner sehr unterschiedlich in der Ausstattung sind, kann man immer einen eignen Kern speziell für den jeweiligen Kern kompilieren.

Man kann aber auch immer Treiber nachinstallieren. Dabei wird gegen die Headerdateien des Betriebsystemkerns ein Interface kompiliert und man kann dann dieses Kernelmodul mit "modprobe" in den Betriebsystemkern (direkt in den Speicherbereich des Betriebsystemkerns) laden.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen