mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT89C51ED2 Flashspeicher zu voll?


Autor: Stefan Kaspar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe hier ein merkwürdiges Problem mit einem AT89C51ED2. Dieser hat 
64k internes Flashrom. Mein Programmcode ist ziemlich umfangreich, ca. 
60k bedingt durch viele Textstrings, die in unterschiedlichen Sprachen 
dargestellt werden müssen.

Ich mußte nun eine Erweiterung am Programm vornehmen und dieses war nun 
ca. 62k groß. Der Prozessor startete nicht mehr. Wenn man das Programm 
wieder verringerte, indem man z.B. eine komplette Sprache aus dem 
Programm nahm, damit es unter 62k groß war, lief es einwandfrei.

Hat jemand schon etwas ähnliches beobachtet? Bei Atmel und hier im Forum 
wurde ich nicht fündig.

Stefan

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ab F800h (63488 dez.)liegt der interne Bootloader. Vermutlich kommst Du 
damit in Konflikt. MW kann man den nicht löschen oder überschreiben.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias K. schrieb:
> Ab F800h (63488 dez.)liegt der interne Bootloader. Vermutlich kommst Du
> damit in Konflikt.

Aber erst, wenn man ihn versehentlich enabled, also das ENBOOT-Bit 
setzt.


Peter

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Aber erst, wenn man ihn versehentlich enabled, also das ENBOOT-Bit
> setzt.

Sicher? Die Flash-Api-Funktionen liegen auch da oben, die lassen sich 
auch aus der Application aufrufen.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Sicher? Die Flash-Api-Funktionen liegen auch da oben, die lassen sich
> auch aus der Application aufrufen.
Aber nur, wenn das Bootloader-ROM in die letzten zwei kB gemappt wird -> 
siehe Datenblatt.

Ralf

Autor: Stefan Kaspar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Matthias, hallo Peter,

danke Euch beiden für den Hinweis, das war die Ursache. Jetzt 
funktioniert es.

Das Häckchen in FLIP ist gerade umgekehrt: Ist es gesetzt, dann ist BLJB 
= 0 und der Bootloader startet. Ist es nicht gesetzt, dann ist BLJB = 1 
und die Userapplication startet.

Stefan

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Kaspar schrieb:
> Das Häckchen in FLIP ist gerade umgekehrt: Ist es gesetzt, dann ist BLJB
> = 0 und der Bootloader startet. Ist es nicht gesetzt, dann ist BLJB = 1
> und die Userapplication startet.

Hat eigentlich nichts mit dem Ursprungsproblem zu tun(?)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch.
Man kann den Factory-Bootloader starten, die Applikation starten oder 
nen User-Bootloader starten.
Setzt man den Bootvektor auf 0x00, dann starten man quasi den 
User-Bootloader auf Adresse 0x0000 mit den API-Funktionen enabled.


Peter

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Doch.
> Man kann den Factory-Bootloader starten, die Applikation starten oder
> nen User-Bootloader starten.
> Setzt man den Bootvektor auf 0x00, dann starten man quasi den
> User-Bootloader auf Adresse 0x0000 mit den API-Funktionen enabled.

Ich nehme nicht an, dass der Ursprungsposter dies umgesetzt hat. Mit 
Flip und interen Bootloader habe ich es auch nicht geschafft, was 
oberhalb F800H in den Flash zu bekommen.

Autor: Stefan Kaspar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende den internen Bootloader und Flip, ich habe keinen eigenen 
Bootloader und im Programm rufe ich auch keine Funktionen des 
Bootloaders auf. Tatsächlich funktioniert jetzt das Programm, nachdem 
ich das Flag in FLIP gelöscht habe, der Code geht jetzt bis 0xF840.

Laut dem Datenblatt von Atmel startet der Bootloader, wenn die 
Hardwarebedingungen gesetzt sind oder BLJB = 0 (in FLIP Häkchen gesetzt) 
und
BSB <> 0 und SBV = 0xFC. Vor der Programmerweiterung war bei mir über 
FLIP BLBJ = 0 (Häkchen gesetzt), aber die Userapplication ist trotzdem 
gestartet, ohne Probleme.

Stefan

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.