-         
+ Antworten
Ergebnis 1 bis 4 von 4

Thema: srf08 MEGA32 Programmieren in C

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2004
    Beiträge
    9

    srf08 MEGA32 Programmieren in C

    Ich bin noch der totale Noob und will den srf08 an den Mega 32 anschließen. Ich hab mir nen Beispielprogramm runtergeladen, aber ne fette fehlermeldung:

    Code:
    -------- begin --------
    avr-gcc (GCC) 3.3.1
    Copyright (C) 2003 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    
    Compiling: srf08.c
    avr-gcc -c -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=srf08.lst  -std=gnu99 srf08.c -o srf08.o
    
    Linking: srf08.elf
    avr-gcc -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=srf08.o  -std=gnu99 srf08.o   --output srf08.elf -Wl,-Map=srf08.map,--cref -lm
    C:\WinAVR\bin\..\lib\gcc-lib\avr\3.3.1\..\..\..\..\avr\lib\avr5\crtm32.o(.init9+0x0): undefined reference to `main'
    srf08.o(.text+0x4): In function `srf08_init':
    C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:25: undefined reference to `i2c_init'
    srf08.o(.text+0x8):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:26: undefined reference to `i2c_start'
    srf08.o(.text+0x10):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:26: undefined reference to `i2c_transmit'
    srf08.o(.text+0x16):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:27: undefined reference to `i2c_transmit'
    srf08.o(.text+0x1c):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:28: undefined reference to `i2c_transmit'
    srf08.o(.text+0x20):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:31: undefined reference to `i2c_start'
    srf08.o(.text+0x28):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:32: undefined reference to `i2c_transmit'
    srf08.o(.text+0x30):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:33: undefined reference to `i2c_stop'
    srf08.o(.text+0x48): In function `srf08_set_gain':
    C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:44: undefined reference to `i2c_start'
    srf08.o(.text+0x50):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:44: undefined reference to `i2c_transmit'
    srf08.o(.text+0x56):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:45: undefined reference to `i2c_transmit'
    srf08.o(.text+0x5c):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:46: undefined reference to `i2c_transmit'
    srf08.o(.text+0x60):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:47: undefined reference to `i2c_stop'
    srf08.o(.text+0x82): In function `srf08_set_range':
    C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:57: undefined reference to `i2c_start'
    srf08.o(.text+0x8a):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:57: undefined reference to `i2c_transmit'
    srf08.o(.text+0x90):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:58: undefined reference to `i2c_transmit'
    srf08.o(.text+0x96):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:59: undefined reference to `i2c_transmit'
    srf08.o(.text+0x9a):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:60: undefined reference to `i2c_stop'
    srf08.o(.text+0xac): In function `srf08_ping':
    C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:74: undefined reference to `i2c_start'
    srf08.o(.text+0xb4):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:74: undefined reference to `i2c_transmit'
    srf08.o(.text+0xba):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:75: undefined reference to `i2c_transmit'
    srf08.o(.text+0xc0):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:76: undefined reference to `i2c_transmit'
    srf08.o(.text+0xc4):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:79: undefined reference to `i2c_start'
    srf08.o(.text+0xcc):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:80: undefined reference to `i2c_transmit'
    srf08.o(.text+0xd2):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:81: undefined reference to `i2c_stop'
    srf08.o(.text+0xda):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:85: undefined reference to `i2c_start'
    srf08.o(.text+0xe2):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:85: undefined reference to `i2c_transmit'
    srf08.o(.text+0xe8):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:86: undefined reference to `i2c_transmit'
    srf08.o(.text+0xec):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:87: undefined reference to `i2c_start'
    srf08.o(.text+0xf6):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:87: undefined reference to `i2c_transmit'
    srf08.o(.text+0xfc):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:88: undefined reference to `i2c_receive'
    srf08.o(.text+0x104):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:89: undefined reference to `i2c_receive'
    srf08.o(.text+0x10a):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:90: undefined reference to `i2c_stop'
    srf08.o(.text+0x124): In function `srf08_read_register':
    C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:104: undefined reference to `i2c_start'
    srf08.o(.text+0x12c):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:104: undefined reference to `i2c_transmit'
    srf08.o(.text+0x132):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:105: undefined reference to `i2c_transmit'
    srf08.o(.text+0x136):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:106: undefined reference to `i2c_start'
    srf08.o(.text+0x140):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:106: undefined reference to `i2c_transmit'
    srf08.o(.text+0x14a):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:109: undefined reference to `i2c_receive'
    srf08.o(.text+0x152):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:112: undefined reference to `i2c_receive'
    srf08.o(.text+0x158):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:114: undefined reference to `i2c_stop'
    srf08.o(.text+0x16a): In function `srf08_change_i2c_address':
    C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:125: undefined reference to `i2c_start'
    srf08.o(.text+0x172):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:125: undefined reference to `i2c_transmit'
    srf08.o(.text+0x178):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:126: undefined reference to `i2c_transmit'
    srf08.o(.text+0x17e):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:127: undefined reference to `i2c_transmit'
    srf08.o(.text+0x182):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:128: undefined reference to `i2c_stop'
    srf08.o(.text+0x186):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:130: undefined reference to `i2c_start'
    srf08.o(.text+0x18e):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:130: undefined reference to `i2c_transmit'
    srf08.o(.text+0x194):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:131: undefined reference to `i2c_transmit'
    srf08.o(.text+0x19a):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:132: undefined reference to `i2c_transmit'
    srf08.o(.text+0x19e):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:133: undefined reference to `i2c_stop'
    srf08.o(.text+0x1a2):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:135: undefined reference to `i2c_start'
    srf08.o(.text+0x1aa):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:135: undefined reference to `i2c_transmit'
    srf08.o(.text+0x1b0):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:136: undefined reference to `i2c_transmit'
    srf08.o(.text+0x1b6):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:137: undefined reference to `i2c_transmit'
    srf08.o(.text+0x1ba):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:138: undefined reference to `i2c_stop'
    srf08.o(.text+0x1be):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:140: undefined reference to `i2c_start'
    srf08.o(.text+0x1c6):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:140: undefined reference to `i2c_transmit'
    srf08.o(.text+0x1cc):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:141: undefined reference to `i2c_transmit'
    srf08.o(.text+0x1d2):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:142: undefined reference to `i2c_transmit'
    srf08.o(.text+0x1d6):C:\Dokumente und Einstellungen\blak299321\Desktop\srf08_test_program_for_gcc_and_avr/srf08.c:143: undefined reference to `i2c_stop'
    make : *** [srf08.elf] Error 1
    
    > Process Exit Code: 2

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.04.2004
    Ort
    Nähe Köln
    Alter
    50
    Beiträge
    247
    Hallo

    Ich tippe mal darauf, das du die I2C Datei nicht mit eingebunden hast, oder der Pfad dahin nicht stimmt. Das heißt er findet die ganzen I2C Funktionen nicht.

    Aber ohne Code, kann man da wenig zu sagen.

    MFG
    Dieter

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    29
    Beiträge
    674
    das sieht sehr danach aus, dass du die I²C-Befehle verwendest, ohne die entsprechende Datei einzubinden
    ich schätz mal, dass du wissen willst, wie du das richtig machst, dafür müsstest du aber deinen Code posten

    du könntest aber schonmal schauen, ob du die richtige Datei für I²C eingebunden hast, was aber eigentlich nicht sein dürfte...

  4. #4
    Neuer Benutzer
    Registriert seit
    28.10.2004
    Ort
    Ulm
    Beiträge
    1
    Hallo,

    es stimmt eine ganze Menge nicht:

    1)
    Es wird keine C-Quelldatei uebersetzt, in der die main() Funktion
    enthalten ist bzw. das erzeugte Objektfile wird beim linken nicht
    beachtet (crtm32.o(.init9+0x0): undefined reference to `main')
    Die Datei crtm32.o initialisiert vordefinierte Variablen und springt
    anschliessend main() an. Bei dir fehlt aber main().

    2)
    Der Linker hat keinen Pfad zur AVR-LIBC mit den I²C-Funktionen
    (undefined reference to `i2c_xxx'). Da gibt es eine weitere Option
    fuer Linker, mit der er angewiesen wird die STDLIB zu verwenden.
    -> Poste mal dein Makefile.

    Prinzipiell werden deine C-Dateien richtig übersetzt. Es knirscht im
    2. Schritt, dem Linken. Hier werden die einzelnen Objektdateien der
    jeweiligen C-Quelldateien zu einer Datei zusammengebunden. Das
    Ergebnis des Linkers kann dann vom AVR ausgeführt werden.

    Grüße
    Markus

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •