Forum: Mikrocontroller und Digitale Elektronik AVR ATMEGA8 hex file erstellen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von ATMEGA-Verleger (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

von Mitlesa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ATMEGA-Verleger schrieb:
> oder so

- Entwicklungsumgebung angeben

- Fehlermeldungen posten

von ATMEGA-Verleger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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$

von ATMEGA-Verleger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
keine IDE nur im Editor  "geany"

von MaWin (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ATMEGA-Verleger schrieb:
> $ sudo avr-gcc

Achduje. Nein. Tue es nicht.

von ATMEGA-Verleger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> ATMEGA-Verleger schrieb:
>> $ sudo avr-gcc
>
> Achduje. Nein. Tue es nicht.

Das hilft mir jetzt so gar nicht.... klar benötige ich für avr-gcc kein 
sudo aber darum geht's nicht

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
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.

von ATMEGA-Verleger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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?

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
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.

von ATMEGA-Verleger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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?

von ATMEGA-Verleger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.