Liebe Linux User Group,
ich bin Student an der FH-Offenburg und arbeite zur Zeit gerade an meiner Diplomarbeit. In dieser soll ich einen Treiber für eine Messwerterfassungskarte der Fa. ADDI-DATA entwickeln, welcher die COMEDI- Schnittstelle benutzt (weitere Informationen zu COMEDI: http://stm.lbl.gov/comedi) http://stm.lbl.gov/comedi) .
Leider habe ich noch keine grössere Erfahrung in Linux, dafür jetzt um so grössere bei der Installation der Schnittstelle. Eure Email- Adresse habe ich unter Linux.de gefunden, ich hoffe Ihr könnt mir helfen. Ich arbeite zur Zeit unter SuSE 7.1 mit dem Kernel 2.2.18, die Kernelquellen (linux.rpm unter d3/CD3) sind installiert und es ist mir auch möglich den Kernel zu compilieren. (Kommandos make dep; Make clean, make bzImage). Leider treten bereits bei der compilierung der Module (make modules) Assembler Warnungen auf:
/tmp/ccIaCk3d.s: Assembler messages /tmp/ccIaCk3d.s:X: Warning: Ignoring changed section attributes for .modinfo.
Leider weis ich nicht, wie ich diese Problem beheben kann. Auch wenn ich ein Firmeninternes Modul für Linux compiliere, erscheint der selbe Fehler. Es wäre klasse, wenn ihr mir hierzu auch einige Tips geben könntet. Ich bezweifle nämlich, dass mein System mit solchen Fehlermeldungen richtig installiert ist.
Mein eigentliches Problem ist jedoch die Installation der COMEDI- Schnittstelle:
Ich habe zwei Verzeichnisse erstellt /source/comedi und /source/comedilib unter welchen die *.tar's gespeichert wurden (Version COMEDI: 0.7.59 und COMEDILIB: 0.7.15). Die *.tar's wurden entpackt und als erstes die COMEDILIB mit 'make' installiert. Hierbei gab es keine Probleme. Danach wurde unter COMEDI als erstes 'make' aufgerufen, was ein makefile konfigurierte. Ich habe die Ausgaben als make.log protokolliert. Bei den Punkten in der Mitte wurde nur nach entsprechenden Treibern gefragt. Dies hat jedoch mit Sicherheit keinen Einfluss auf die Funktionalität:
make.log:
sh scripts/Configure Enter location of Linux source tree [/usr/src/linux]: using LINUXDIR=/usr/src/linux Kernel source version is 2.2.18 # # Using defaults found in scripts/config.dist # * * Comedi Features * Trig compatibility (say yes) (CONFIG_COMEDI_TRIG) [N/y/?] (NEW) Verbose Debugging (CONFIG_COMEDI_DEBUG) [Y/n/?] Kernel Comedilib (CONFIG_COMEDI_KLIB) [M/n/?] * * Hardware device drivers * Data Translation boards (CONFIG_COMEDI_DT) [Y/n/?] National Instruments boards (CONFIG_COMEDI_NI) [Y/n/?] AT-MIO E series (CONFIG_COMEDI_NI_ATMIO) [M/n/?]
... ... ...
(NEW) Skeleton driver (CONFIG_COMEDI_SKEL) [M/n/?] Real-time command emulator (timer) (CONFIG_COMEDI_RT_TIMER) [M/n/?] Makefiles for comedi should now be configured. Run 'make dep ; make' to compile, and then 'make install' to install.
If comedi has never been installed on your system, then run 'make dev' to build the device nodes '/dev/comedi*'.
Danach habe ich nochmals 'make' mit der Option 'dev' aufgerufen. Auch dieses Kommando hat ohne Probleme funktioniert, und die vier COMEDI device nodes wurden erstellt. Somit konnte 'make dep ; make' aufgerufen werden. Und hier kamen einige Fehlermeldungen:
'Make dep ; make' Log:
mkdir modules mkdir: cannot create directory `modules': File exists make: [_mod_comedi] Error 1 (ignored) make -C comedi CFLAGS="-Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -D__KERNEL__ -I /source/comedi/include -I /usr/src/linux/include -I . -D__MODBUILD__ -DMODULE" MAKING_MODULES=1 modules make[1]: Entering directory `/source/comedi/comedi' ld -r -o comedi.o comedi_fops.o proc.o range.o drivers.o kvmem.o trig.o comedi_ksyms.o make -C drivers modules make[2]: Entering directory `/source/comedi/comedi/drivers' gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -D__KERNEL__ -I /source/comedi/include -I /usr/src/linux/include -I . -D__MODBUILD__ -DMODULE -I ../ -I ./ -c -o das08-old.o das08-old.c das08-old.c: In function `das08_attach': das08-old.c:298: structure has no member named `iosize' das08-old.c: In function `das08_detach': das08-old.c:388: structure has no member named `iosize' make[2]: *** [das08-old.o] Error 1 make[2]: Leaving directory `/source/comedi/comedi/drivers' make[1]: *** [_modsubdir_drivers] Error 2 make[1]: Leaving directory `/source/comedi/comedi' make: *** [_mod_comedi] Error 2
Und wird hiernach das Kommando 'make install' durchgeführt, erscheint diese abschliessende Meldung:
'make install' Kog:
mkdir -p /lib/modules/2.2.18/misc install -d /lib/modules/2.2.18/misc install /lib/modules/2.2.18/misc install: too few arguments Try `install --help' for more information. make: *** [install] Error 1
Ich würde Euch bitten, wenn Ihr irgendwelche Ideen oder Hilfen habt, sie mir unbedingt zu schreiben. Ich wirklich dankbar für jede noch so kleine Winzigkeit. Wie desagt beschränkt sich meine Linuxerfahrung auf etwa 3,5 Monate, was mit Sicherheit ein Teil der Probleme, die ich beschrieben habe, erklärt.
Vielen Dank für Eure Mühen!!
Mit freundlichen Grüssen,
Eric
********************************************************************** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager.
This footnote also confirms that this email message has been swept by MIMEsweeper for the presence of computer viruses.
**********************************************************************
On Thu, Jun 21, 2001 at 12:25:31PM +0200, Stolz.Eric wrote:
Liebe Linux User Group,
Leider habe ich noch keine grössere Erfahrung in Linux, dafür jetzt um so grössere bei der Installation der Schnittstelle. Eure Email- Adresse habe ich unter Linux.de gefunden, ich hoffe Ihr könnt mir helfen. Ich arbeite zur Zeit unter SuSE 7.1 mit dem Kernel 2.2.18, die Kernelquellen (linux.rpm unter d3/CD3) sind installiert und es ist mir auch möglich den Kernel zu compilieren. (Kommandos make dep; Make clean, make bzImage). Leider treten bereits bei der compilierung der Module (make modules) Assembler Warnungen auf:
/tmp/ccIaCk3d.s: Assembler messages /tmp/ccIaCk3d.s:X: Warning: Ignoring changed section attributes for .modinfo.
Leider weis ich nicht, wie ich diese Problem beheben kann. Auch wenn ich ein Firmeninternes Modul für Linux compiliere, erscheint der selbe Fehler. Es wäre klasse, wenn ihr mir hierzu auch einige Tips geben könntet. Ich bezweifle nämlich, dass mein System mit solchen Fehlermeldungen richtig installiert ist.
Also, was ich in den Kernelquellen gefunden habe, sind Makros wie das folgende:
#define MODULE_AUTHOR(name) \ const char __module_author[] __attribute__((section(".modinfo"))) = \ "author=" name
Weil es mich so nebenbei auch mal interessieren würde (und dein Problem evtl. löst), Was genau macht die expandierte Form des Makros, v.a. der __attribute__ Teil? Sind das gcc Erweiterungen?
Sowit ich das überflogen habe, wird .modinfo aber nur für Informationen über das Modul benötigt (Author, Kernelversion etc.) Wenn es sich per insmod laden läßt, sollte es schätzungsweise trotzdem gehen.
Mein eigentliches Problem ist jedoch die Installation der COMEDI- Schnittstelle:
[snip]
mkdir modules mkdir: cannot create directory `modules': File exists make: [_mod_comedi] Error 1 (ignored)
Hier hast du wahrscheinlich das 2. Mal make aufgerufen, so daß modules als Verzeichnis schon existierte. Ist also nicht weiter schlimm.
[snip]
make[2]: Entering directory `/source/comedi/comedi/drivers' gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -D__KERNEL__ -I /source/comedi/include -I /usr/src/linux/include -I . -D__MODBUILD__ -DMODULE -I ../ -I ./ -c -o das08-old.o das08-old.c das08-old.c: In function `das08_attach': das08-old.c:298: structure has no member named `iosize' das08-old.c: In function `das08_detach': das08-old.c:388: structure has no member named `iosize' make[2]: *** [das08-old.o] Error 1 make[2]: Leaving directory `/source/comedi/comedi/drivers' make[1]: *** [_modsubdir_drivers] Error 2 make[1]: Leaving directory `/source/comedi/comedi' make: *** [_mod_comedi] Error 2
Das riecht ein wenig nach Programmierfehler. Schreib mal einen Bug-Report (d.h. das, was du uns geschickt hast) an den Entwickler, der in der README oder sonstwo drinsteht. Da der sich mit dem Programm auf jeden Fall besser auskennt, sollte er dir helfen können.
Falls ich es nicht vergesse, Zeit und Lust hab, und das Problem recht oberflächlich ist, schaue ich mir das Programm auch mal an, aber verlaß dich lieber nicht drauf. :)
Und wird hiernach das Kommando 'make install' durchgeführt, erscheint diese abschliessende Meldung:
Wenn die Kompilierung fehlgeschlagen hat, brauchst du make install gar nicht erst zu versuchen. Im besten Fall hast du nur ein halbfertiges Projekt auf deiner Platte.
Mit freundlichen Grüssen,
Eric
cu, Ulf
On Thu, Jun 21, 2001 at 12:25:31PM +0200, Stolz.Eric wrote:
Liebe Linux User Group,
Hallo,
<schnipp>
'Make dep ; make' Log:
mkdir modules mkdir: cannot create directory `modules': File exists make: [_mod_comedi] Error 1 (ignored) make -C comedi CFLAGS="-Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -D__KERNEL__ -I /source/comedi/include -I /usr/src/linux/include -I . -D__MODBUILD__ -DMODULE" MAKING_MODULES=1 modules make[1]: Entering directory `/source/comedi/comedi' ld -r -o comedi.o comedi_fops.o proc.o range.o drivers.o kvmem.o trig.o comedi_ksyms.o make -C drivers modules make[2]: Entering directory `/source/comedi/comedi/drivers' gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -D__KERNEL__ -I /source/comedi/include -I /usr/src/linux/include -I . -D__MODBUILD__ -DMODULE -I ../ -I ./ -c -o das08-old.o das08-old.c das08-old.c: In function `das08_attach': das08-old.c:298: structure has no member named `iosize'
Hier steht doch der Fehler... Einfach mal nachschauen, welche structur der Compiler hier meint und warum auf ein memeber namens 'iosize' zugegriffen wird, was wahrscheinlich nicht existiert. Wenn der Quellcode zu buggy ist, einfach einen Bugreport senden.
Ich würde Euch bitten, wenn Ihr irgendwelche Ideen oder Hilfen habt, sie mir unbedingt zu schreiben. Ich wirklich dankbar für jede noch so kleine Winzigkeit. Wie desagt beschränkt sich meine Linuxerfahrung auf etwa 3,5 Monate,
Und da schon ein Kernelmodul zu programmieren, das halte ich für gewagt...
Ciao, Tobias
On Sat, Jun 23, 2001 at 01:42:13PM +0200, Tobias Koenig wrote:
Winzigkeit. Wie desagt beschränkt sich meine Linuxerfahrung auf etwa 3,5 Monate,
Und da schon ein Kernelmodul zu programmieren, das halte ich für gewagt...
Kommt drauf an. Wenn er vorher schon ein Unix-Guru war sind die 3,5 Monate bestimmt ausreichend ;-)
Reinhard
On Sat, Jun 23, 2001 at 01:05:25PM +0200, Reinhard Foerster wrote:
On Sat, Jun 23, 2001 at 01:42:13PM +0200, Tobias Koenig wrote:
Winzigkeit. Wie desagt beschränkt sich meine Linuxerfahrung auf etwa 3,5 Monate,
Und da schon ein Kernelmodul zu programmieren, das halte ich für gewagt...
Kommt drauf an. Wenn er vorher schon ein Unix-Guru war sind die 3,5 Monate bestimmt ausreichend ;-)
Ein Unix-Guru dürfte wohl kaum Probleme bei der Installation von Linux haben :)
Ciao, Tobias
lug-dd@mailman.schlittermann.de