Hallo,
ich habe folgendes Problem. Ich wollte für meinen ATmega1280 ein
Bootloader schreiben. Also versuchte ich einen genau wie bei dem
Tutorial „AVR_Bootloader_in_C_-_eine_einfache_Anleitung“ einen zu
Programmieren.
Da dieser schon nicht funktionierte habe ich einfach Programm
geschrieben das nur eine LED Toggeln lässt.
1 | #include <avr/io.h>
|
2 |
|
3 | #define LIFEBITCONT PB3
|
4 | #define LIFEBITCONT_PORT PORTB
|
5 | #define LIFEBITCONT_DDR DDRB
|
6 |
|
7 | int main()
|
8 | {
|
9 | LIFEBITCONT_DDR |= (1<<LIFEBITCONT);
|
10 | do{
|
11 | LIFEBITCONT_PORT ^= (1<<LIFEBITCONT);
|
12 | }while(1);
|
13 | return 0;
|
14 | }
|
Flashe ich das Programm ohne der Linker Option (-Ttext=0x1E000)
funktioniert das Programm wunderbar. Aber das Programm soll ja in die
Bootloader Section.
Wenn ich das Programm mit der Linker Option (-Ttext=0x1E000) Kompiliere
und mir die HEX File anschaue sieht auch alles richtig aus, zumindest
mit den Adressen. Das Programm fängt ab Adresse 0001E000 an und geht bis
0001E125. Also alles im grünen Bereich.
Wenn ich dann aber das Programm Flashe , macht der µC nichts. Lese ich
mir dann den Flash wieder aus und schaue mir das HEX File an steht
nichts mehr drin.
Als Programmer benutze ich den AVRISP mkII.
Meine Fuses sollten auch richtig sein siehe Anhang.
Benutze ich den Bootlader „AVR-Bootloader mit Verschlüsselung von Hagen
Re“ funktioniert dieser ohne Probleme. Schau ich mir aber die HEX Datei
an fängt dieser erst bei 0001FC00 an. Warum???
Ich hoffe das ihr mir helfen könnt.
Vielen Dank schon mal.