Forum: Mikrocontroller und Digitale Elektronik Bootloader richtige Einsprungadresse finden


von Chris T. (chris0086)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
ich versuche grad den Artikel
http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung#Schritt_4_-_Flashen_und_Ausprobieren_des_Bootloaders_2

durchzuarbeiten und nach einem ersten Erfolg kam auch schon die 
Ernüchterung.
Am Anfang habe ich vergesser die Einprungadresse im Linker zu änern. 
Dadurch wurde der Code direkt ab 0x0000 geschrieben, nach Ausführen des 
Codes meldete sich natürlich der Bootloader über Putty.

Dann wollte ich mal die richtige Adresse eingeben:
Ich verwende einen Atmega162, und habe die Einsprungadresse wie im 
Artiekl erwähnt richtig ausgerechnet, so denke ich zumindest.
Die Tabellen befinden sich im Datenblatt
http://www.atmel.com/Images/Atmel-2513-8-bit-AVR-Microntroller-ATmega162_Datasheet.pdf
auf Seite 236.
Page size 64
Number of pages 128

128 Page (128 - 64) an Word-Adresse 0x1000, also Byteadresse 0x1000 * 2 
= 0x2000.

Wenn ich dann dem Linker mitteile  -Ttext=0x2000
und dann den µC flashe erhalte ich nichts mehr auf der Console.
Im Anhang sind noch die Fuseeinstellungen zum Bootbereich angegeben.

Was hab ich falsch gemacht/berechnet?

von Georg G. (df2au)


Lesenswert?

Was steht bei den Fuses als Boot Startadresse? Und was hast du 
eingegeben?

von Chris T. (chris0086)


Lesenswert?

bei den Fuses ( im Anhang) steht ja 0x1C00 und ich hab wohl 0x2000 aber 
ich habe auch 1C00 probiert, beide male kein Lebenszeichen in der 
Konsole

Oder hab ich noch was anderes übersehen?

von Stefan E. (sternst)


Lesenswert?

Das 0x1C00 ist die Word-Adresse. Die Toolchain will aber eine 
Byte-Adresse, also
1
-Ttext=0x3800

von Chris T. (chris0086)


Lesenswert?

Okay der kleine Bootloader ging rein und funktioniert, jetzt hab ich den 
richtigen kompiliert (mit Size Optimisation) und erhalte dann beim 
Brennversuch:
avrdude: erasing chip
avrdude: reading input file "bootloader.hex"
avrdude: input file bootloader.hex auto detected as Intel Hex
avrdude: ERROR: address 0x4010 out of range at line 129 of 
bootloader.hex
avrdude: write to file 'bootloader.hex' failed

Krieg ich den schon nichtmehr rein? Das wäre ja echt blöd

von Mike (Gast)


Lesenswert?

Chris tian schrieb:
> Krieg ich den schon nichtmehr rein? Das wäre ja echt blöd

Der ATmega162 hat, wie der Name schon sagt, 16kByte Flash, d.h. bei 
Byteadresse 0x3FFF bzw. Word-Adresse 0x1FFF ist Schluß. Und mit Start 
bei Word-Adresse 0x1C00 hast du schon die maximal Größe für den 
Bootloader (1024 Words lt. Table 93. Boot Size Configuration) 
eingestellt.

von Chris T. (chris0086)


Lesenswert?

wohl den falschen Controller gewählt.
Der Chip45 Bootloader funktioniert ja bei mir leider auch nicht richtig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.