AVR ATMEGA8 hex file erstellen

Gast #4898012
Hallo,

ich hab seit 5 Jahren mal wieder meinen Atmega8 ausgepackt.....

Nun wollte ich ein altes (shittiges) Programm wieder kompilieren und 
Linken!

Leider krieg ich das nicht mehr hin!

der findet die inkludierten Dateien nicht! oder so

Wie bekomme ich denn aus den 3 Dateien mein hex file?

VG
Angehängte Dateien:
Gast
das ist die Fehlermeldung -->

$ sudo avr-gcc -g -Os -mmcu=atmega8 -o main.elf main.c
In file included from main.c:46:0:
/usr/lib/avr/include/avr/delay.h:36:2: warning: #warning "This file has 
been moved to <util/delay.h>." [-Wcpp]
 #warning "This file has been moved to <util/delay.h>."
  ^
/tmp/ccwGQNMz.o: In Funktion `main':
/media/interne_festplatte/data/Dokumente/Aktionen/AVR_Projekte/Herzen/sr 
c/main.c:(.text.startup+0x2):  Nicht definierter Verweis auf 
`avr_spi_master_init'
/tmp/ccwGQNMz.o: In Funktion `__vector_6':
/media/interne_festplatte/data/Dokumente/Aktionen/AVR_Projekte/Herzen/sr 
c/main.c:305:  Nicht definierter Verweis auf `avr_spi_send_word'
collect2: error: ld returned 1 exit status
rollinator@Z:~/Schreibtisch/interne_festplatte/data/Dokumente/Aktionen/A 
VR_Projekte/Herzen/src$
Gast
1
<util/delay.h> This file has been moved to <util/delay.h>
2

3
und
4

5
Nicht definierter Verweis auf `avr_spi_send_word'

Was ist daran jetzt unklar? Erstes sollst du deine Includes für die 
Datei delay.h genau wie in der Warnungs angezeigt korrigieren.

Zweitens ist dein Programm unvollständig. Du hast versucht, nur aus der 
main.c alleine ein ausführbares Programm (*.elf) zu erstellen. Dann 
fehlt Dir aber der ganze code aus der Datei spi.c. Die musst du auch 
compilieren.
Gast
Stefan U. schrieb:
> Zweitens ist dein Programm unvollständig. Du hast versucht, nur aus der
> main.c alleine ein ausführbares Programm (*.elf) zu erstellen. Dann
> fehlt Dir aber der ganze code aus der Datei spi.c. Die musst du auch
> compilieren.

#und wie kann ich dem sagen, dass der natürlich auch die includes mit 
einkompilieren soll?
Gast
Das hat er ja gemacht. Die spi.h (und weitere) hast du mit den #include 
Zeilen eingebungen.

Aber die spi.c hast du nicht eingebunden, die sollst du als 
Kommandozeilenparameter dem gcc übergeben - oder ein Makefile verwenden.
Gast
Stefan U. schrieb:
> Aber die spi.c hast du nicht eingebunden, die sollst du als
> Kommandozeilenparameter dem gcc übergeben - oder ein Makefile verwenden.

hmmh dann habe ich zwei object files!
Wie kriege ich die miteinander verbunden?
Gast
ok sorry für meine Blödheit!!!

ohne gleich ein make file zu basteln, so ist natürlich der Ablauf:



compile all c-files: -->

avr-gcc -g -Os -mmcu=atmega8 -c spi.c -c main.c

link all object files: -->

avr-gcc -g -mmcu=atmega8 -o flash.elf main.o spi.o

creating hex file for avrdude to throw onto the controller: -->

avr-objcopy -j .text -j .data -O ihex flash.elf flash.hex

use avrdude, dude!

sudo avrdude -p atmega8 -c stk500v2 -P /dev/ttyUSB0 -U flash:w:flash.hex

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.