Nach der Fehlermeldung sieht es so aus, als würden da Libs fehlen.
Alles mit #include eingebunden? Alle *.h und *.c Dateien eingebunden?
Hilfreich wäre das ganze Programm, damit ich es selbst im AVR-Studio testen kann.
Szenario:
ich bin gerade am Display basteln und habe das Testprogramm für den NiboBee von m.a.r.v.i.n etwas modifiziert.
Das klappte so lange bestens, bis ich anfing, die Liniensensoren mittels der line.h- Bibliothek einzubinden.
Dann war nichts mehr wie vorher:
Irgendetwas klappt mit den Bibliotheken nicht.Code:avr-gcc -mmcu=atmega16 -Wl,-Map=NiboBee_Intelligence.map NiboBee_Intelligence.o -L"C:\Programme\NIBObeeLib\lib" -lnibobee_line -lnibobee_base -lnibobee_utils -lnibobee_usart -lnibobee_i2c -lnibobee_line -o NiboBee_Intelligence.elf C:\Programme\NIBObeeLib\lib\libnibobee_line.a(line.o): In function `line_readPersistent': line.c:(.text.line_readPersistent+0x10): undefined reference to `__eerd_block' C:\Programme\NIBObeeLib\lib\libnibobee_line.a(line.o): In function `line_writePersistent': line.c:(.text.line_writePersistent+0x10): undefined reference to `__eewr_block' make: *** [NiboBee_Intelligence.elf] Error 1 Build failed with 2 errors and 0 warnings...
Ich probiere da nun schon einige Stunden herum, erfolglos.
Erkenntnis: das Problem tritt genauso auf, wenn ich das Liniensensor-Programm aus dem Tutorial benutze- und _das_ funktioniert eigentlich problemlos.
Es muss also in den Einstellungen des AVR-Studios irgendwo ein Fehler sein. Leider ist _dort_ das Tutorial überhaupt keine Hilfe, da mit keinem Wort erklärt wird, wozu die ganzen Projekteinstellungen überhaupt gut sind, sondern nur, welche zu tätigen sind.
Kurz gesagt: Hilfe. [-(
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Nach der Fehlermeldung sieht es so aus, als würden da Libs fehlen.
Alles mit #include eingebunden? Alle *.h und *.c Dateien eingebunden?
Hilfreich wäre das ganze Programm, damit ich es selbst im AVR-Studio testen kann.
Wie gesagt: selbst das lausige Liniensensor-Programm aus dem Tutorial wird- mit den selben Fehlermeldungen- _nicht_ compiliert.
Falls du das nicht hast:
Ich vermute ebenfalls, dass da irgendeine Bibliothek fehlt, aber inzwischen habe ich die im Tut genannten (erklärt wirds ja nicht) Projekteinstellungen mehrmals überprüft, finde aber nichts dran auszusetzen.Code:#include <nibobee/iodefs.h> #include <nibobee/led.h> #include <nibobee/line.h> int main() { led_init(); line_init(); while(1==1) { enable_interrupts(); led_set(LED_L_YE, line_get(LINE_L)>160); led_set(LED_L_RD, line_get(LINE_L)>240); led_set(LED_R_YE, line_get(LINE_R)>160); led_set(LED_R_RD, line_get(LINE_R)>240); } return 0; }
Das Problem tritt _immer_ auf, wenn ich, wie hier, die line.h benutzen will- Programme, die die nicht brauchen laufen bestens.
Ich habe mal alle Dateien in mein Standard Verzeichnis kopiert.
Und es lässt sich einwandfrei kompilieren.
Also muss es ein Fehler im Dateiverzeichnis sein, Bibliothek fehlt keine.
Ich vermute irgendeine fehlerhafte Projekteinstellung, denn auch neu installieren (ich benutze sowieso die Standardpfade) der Bibliothek hat nicht geholfen.
Wie gesagt, andere Programme, die nicht line.h benötigen, laufen problemlos durch den Compiler.
Nur leider erklärt weder das NiboBee-Tut noch die Hilfe vom AVR-Studio, _was_ man da eigentlich tut.
Deine AVR-Libc Version ist sehr wahrscheinlich neuer als die, mit der die NiboBee-Libs erstellt wurden. Das AVR-Libc interne EEPROM-Interface hat sich kürzlich etwas verändert.
Versuche folgendes:
Code:#include <avr/eeprom.h> void __eewr_block (const void *src, void *dst, size_t n) { eeprom_write_block(src,dst,n); } void __eerd_block (void *dst, const void *src, size_t n) { eeprom_read_block(dst,src,n); }
MfG
Stefan
Danke, Stefan: it works!!
Und das mit dem neu ist sehr wohl möglich: ich hab diesen Rechner erst am Dienstag eingerichtet und nun natürlich von allem die aktuellsten Versionen hier.
Naja, in zwei, drei Tagen hab ich meinen wieder.
Lesezeichen