RoboterCC - Robotic Code Compiler
Forum Roboter.CC Webseite Fragen und Probleme BGX1 - Fehler mit internem Linker (__strlen_P)

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Banner

Letzte Themen

Site-Statistic

  • 7416 private projects
  • 378 public projects
  • 16172649 lines compiled
  • 58122 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Fragen und Probleme zur Roboter.CC-Plattform können hier diskutiert werden.
  • Seite:
  • 1

THEMA: BGX1 - Fehler mit internem Linker (__strlen_P)

BGX1 - Fehler mit internem Linker (__strlen_P) 6 Jahre 11 Monate her #4029

  • Aeonslide
  • Aeonslides Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 1
Hallo, ich habe ein Programm in C geschrieben, das die Liniensensoren permanent auswerten und den Wert auf der BGX1-Displayerweiterung ausgeben soll.
Das Kompilieren klappt fehlerfrei, doch beim build spuckt der Linker ein paar Fehlermeldungen aus. Kann sich jemand einen Reim darauf machen und mir helfen das Problem zu lösen?

In den Compilersettings habe ich BGX-Support und printf angeschaltet.
Lib 3.4 und avr-gcc 4.3.4.

/* NIBObee C project */

/* Includes für den Zugriff auf die NIBObee Bibliothek */
#include <nibobee/iodefs.h> // digitale Ein-/Ausgänge allgemein
#include <nibobee/i2cmaster.h>
#include <nibobee/bgx1.h>
#include <nibobee/analog.h> // analoge Eingänge
#include <nibobee/led.h> // Ein-/Ausschalten der LEDs
#include <nibobee/delay.h>
#include <nibobee/clock.h> // Funktionen zur genauen Zeiterfassung/Verzögerung (optional)
#include <nibobee/odometry.h> // Auswertung der Drehimpulse der Räder
#include <nibobee/motpwm.h> // Ansteuerung der Motoren
#include <nibobee/motpid.h> // Ansteuerung der Motoren
#include <nibobee/sens.h> // Fühler
#include <nibobee/base.h> // Basisfunktionen / Initialisierung
#include <nibobee/line.h>

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>


char text[32];
uint8_t sensr, sensc, sensl;

int main() {

i2c_init();
bgx1_init();
analog_init();
line_init();
//set_output_group(IO_SENS); //ist das notwendig?
sei();
delay(1500);
void bgx1_reset();




while (1) {

sensr = bgx1_getAnalog(line_get(LINE_R));
sensc = bgx1_getAnalog(line_get(LINE_C));
sensl = bgx1_getAnalog(line_get(LINE_L));
sprintf(text, "%d = Rechts\n %d = Mitte\n %d = Links\n", (uint8_t)sensr, (uint8_t)sensc, (uint8_t)sensl);
bgx1_termGoto(0,1);
bgx1_termPrint(text);


}
return 0;

}


Die Fehlermeldung:


compiling main.c ...
compiled 54 lines
creating bgx1signal.zip ...
linking program ...
/opt/avr/niborobolib-3.4/lib/nibobee-m16-15/libnibobee_bgx1.a(bgx1.o): In function `bgx1_termPrint_P':
bgx1.c:(.text.bgx1_termPrint_P+0x16): undefined reference to `__strlen_P'
/opt/avr/niborobolib-3.4/lib/nibobee-m16-15/libnibobee_bgx1.a(bgx1.o): In function `bgx1_textWidth_P':
bgx1.c:(.text.bgx1_textWidth_P+0x16): undefined reference to `__strlen_P'
/opt/avr/niborobolib-3.4/lib/nibobee-m16-15/libnibobee_bgx1.a(bgx1.o): In function `bgx1_print_P':
bgx1.c:(.text.bgx1_print_P+0x16): undefined reference to `__strlen_P'

Vielen Dank für´s Anschauen.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

BGX1 - Fehler mit internem Linker (__strlen_P) 6 Jahre 10 Monate her #4031

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
Hmm..

füge doch mal noch eine Zeile hinter dem "'include <stdio.h>" ein:
#include <avr/pgmspace.h>

weil das strlen_P() bzw. __strlen_P() ist in den pgmspace Utils enthalten, und für den "Datenzugriff" (das Lesen) von Daten aus dem Flashspeicher gedacht.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
  • Seite:
  • 1
Ladezeit der Seite: 0.052 Sekunden

Werbung