AVR-Programmierung - letzter Schritt

Gast #3282768
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe vor, einen atmega8 mit WinAVR mit C zu programmieren.
Da ich kein ISP-Kabel besitze, will ich einen Arduino Mega 2560 in 
seiner Funktion als "AVRISP" verwenden (siehe Anhang).
Ich habe mich nun mit diversen Tutorials beschäftigt und die absoluten 
Grundlagen auch mehr oder weniger verstanden.
Nun habe ich den vorschriftsgemäß über den Arduino mit dem PC 
verbundenen atmega8, ein einfaches Programm und schließlich die Makefile 
(dort bin ich mir allerdings noch nicht 100%ig sicher).

Meine Frage wäre nun, wie ich den µC konkret mithilfe von WinAVR 
programmiere, wenn ich grundätzlich alles fertig vorliegen habe.

Also "welche knöpfe muss ich drücken", damit das Programm, wenn mit 
Makefile und AVRISP alles stimmt, auf dem µC geladen wird?

Ich würde mich sehr freuen, wenn mir jemand weiterhelfen könnte.

Gruß
Maths


Als Testprogramm habe ich folgenden Code geschrieben:
1
#include <avr/io.h>
2
#include <util/delay.h>
3

4
int main(void){
5

6
  DDRD = 0xff;
7
  
8
  while(1){
9
    PORTD = 0xff;
10
    _delay_ms(1000);
11
    PORTD = 0x00;
12
    _delay_ms(1000);
13
  }
14
  
15
  return 0;
16

17
}

Beim Makefile habe ich mit Hilfe von "MFile" aus dem WinAVR-Paket 
lediglich "MCU = atmega8", "AVRDUDE_PROGRAMMER = avrisp" und 
"AVRDUDE_PORT = com4" gesetzt. Den rest habe ich im Ausgangszustand 
belassen.
Angehängte Dateien:
#3282918
Lesenswert?
• ▲
▼
Hallo.

Anbei ein grober Ueberblick:

1) Programm/ Firmware schreiben, sagen wir datei.c.

2) Diese mittels "avr-gcc datei.c -c -o datei.o" compilieren -> erzeugt 
datei.o

3) Dieses Binaerobject linken: "avr-gcc datei.o -o datei.elf". Dies 
erzeugt eine fertige firmware im "[e]xtended [l]inker [f]ormat"
Diese Datei enthaelt alle Sektionen deiner Firmware getrennt. (Flash, 
PROGMEM, EEPROM, initialisierte und nicht initialisierte Varibalen)

4a) Eine Datei generieren, die die gewünschten Sektionen enthaelt und in 
den AVR geladen werden kann. Da bei AVR die .text 
(Maschinencode+PROGMEM) und .data (initialisierte Variablen) in den 
Flashspeicher geladen werden muessen, erstellt  "avr-objcopy -j .text -j 
.data -O ihex datei.elf datei.hex" die notwenige HEX Datei (im ihex 
Format)

4b) Sollte ein zusaetzlich EEPROM Inhalt benoetigt werden: "avr-objcopy 
-j .eeprom -O ihex datei.elf NUR-eeprom.hex" Die eeprom.hex muss 
allerdings separat in den AVR geschrieben werden.

5) "datei.hex" im gewünschten Programm auswählen und einprogrammieren

6) AVR starten - Spass haben  ;-)

MfG

Antwort schreiben

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.

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.