Bootloader Mega256

OP #1381004
Hallo zusammen,
ich habe einen Bootloader, den ich bisher mit verschiedenen Atmegas 
genutzt habe (Atmega32,64,644). Geschrieben ist er mit AVRGCC 20070525.

Ich habe jetzt ein neues Projekt mit dem Mega2561. Auch darauf 
funktioniert der Bootloader mit ein paar kleinen Anpassungen 
(Adressgrößen auf 32 Bit geändert).
Jetzt ist mein Projekt aber das erste mal größer als 32KB geworden - und 
plötzlich läuft nichts mehr. Ich habe den Inhalt des Atmels mal 
ausgelesen und festgestellt, daß alles mit Wortadressen > 0x4000 bei der 
Wortadresse 0x1C000 erscheint. Sprich alles was ab Adresse 32768 im 
Speicher liegt wird auf eine viel höhere Adresse gemappt.

Ich habe auch schon geprüft, daß die richtigen SPM Routinen verwendet 
werden (Extended Versionen). Auf einem Mega64 ist es kein Problem 
Adressen über 32768 zu schreiben.

Ist eigentlich ziemlich unlogisch - normal sollten die Probleme wenn 
erst über 65536 auftreten ...

Hat irgendjemand eine Idee woran das liegen könnte ?

Gruß, Marcus
OP #1381367
Ich denke ich habe den Fehler gefunden ...

Ich berechne die Flash Adresse aus mehreren unsigned char und Int 
Werten. Erst das fertige Ergebnis wird in den unsigned long geschrieben.

Daher rechnet der Compiler natürlich brav (und definitionsgemäß) erst in 
Int (16 Bit signed) und speichert dann erst das (natürlich falsche) 
Ergebnis im unsigned long.

Blöder Fehler ...

Gruß, Marcus
OP #1384698
Spezialausführung mit mit 128KB Flash mit Adresse < 0 und 128 > 0 :-)

Spaß beiseite: Die eigentliche Adresse ist ein unsigned long. Da die 
Flash Adressen Byteadressen sind ist das ab dem Mega128 nötig.

Nur innerhalb der Berechnung (in einem Ausdruck) hat der Compiler 
Defaultmäßig zunächst int genutzt. Nachdem ich es einmal gefunden hatte, 
ließ es sich leicht wegcasten.

Gruß, Marcus

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.