www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC2468 - Wo ist unbelegter Flash-Speicher? - Wie per Befehl neustarten?


Autor: Andreas Schneider (andy386)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Mein µC-Programm ist jetzt soweit lauffähig, dass u.a. Flash-Lesen und 
-Schreiben funktioniert. Ich habe jetzt die vorletzte Flashseite 
genommen. Um es schön zu machen, würde ich gerne wissen, ob die jew. 
Seiten bereits benutzt werden. Wie kann ich dass mit dem LPC2468 
realisieren?

Und gibt es einen Befehl (im C), um den Controller zu resetten bzw. 
dessen Programm neu auszuführen? Ich konnte in der Hilfe nix dazu 
finden...

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Schneider schrieb:
> Und gibt es einen Befehl (im C), um den Controller zu resetten bzw.
> dessen Programm neu auszuführen? Ich konnte in der Hilfe nix dazu
> finden...
Einen solchen Befehl kenne ich zwar nicht, aber ich würde einfach den 
Watchdog anwerfen, bzw. dessen Zurücksetzen unterbinden, wenn er denn 
schon laufen sollte.

Das führt garantiert innerhalb kürzester Zeit zum Reset.

Autor: A. S. (telekatz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Schneider schrieb:
> Mein µC-Programm ist jetzt soweit lauffähig, dass u.a. Flash-Lesen und
> -Schreiben funktioniert. Ich habe jetzt die vorletzte Flashseite
> genommen. Um es schön zu machen, würde ich gerne wissen, ob die jew.
> Seiten bereits benutzt werden. Wie kann ich dass mit dem LPC2468
> realisieren?

Wenn du deinem Linker nicht mitteilst, dass an der entsprechenden 
Adresse noch Flashspeicher ist, wird er ihn auch nicht benutzen und du 
hast ihn ganz für dich alleine.

Autor: Andreas Schneider (andy386)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, skriptkiddy!
Idee ist umgesetzt und läuft super!

@telekatz
Das klingt spannend... In der IDE habe ich leider nur die Option, die 
Startadresse hochzusetzen, einzelne Bereiche rauszunehmen klappt 
irgendwie nicht. Damit wäre aber der Bootsektor im beschreibbaren 
Bereich - ist das okay? oder kann ich bedenkenlos einen anderen Chip 
angeben?

scheint nicht so: "The Adress is not in Flash" (bei einem Chip mit 
kleinerem Flashspeicher)

Autor: Andreas Schneider (andy386)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich noch mal:
Angeblich nimmt der Linker nicht den obersten Flashsektor (Nr. 27). Hab 
testweise etwas reingeschrieben und das Programm neu aufgespielt, meine 
Informationen sind aber dennoch weg...

[edit]
oder liegt das daran, dass das Flash-Löschen Controllerseitig passiert? 
Oder wird der zu löschende Speicherbereich von der IDE benannt?

Autor: A. S. (telekatz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie programmierst du den Flash? Und welche IDE verwendest du?

Autor: Andreas Schneider (andy386)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, das macht soweit alles meine IDE, die HITOP5.
Ich speichere nur ein paar Sachen in einem einzigen Sektor.

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Schneider schrieb:
> Naja, das macht soweit alles meine IDE, die HITOP5.
Ist dort nicht auch die GNU-Toolchain im Hintergrund? Wenn ja, wird die 
Entwicklungsumgebung wohl intern ein tempörares Linker-Skipt erzeugen, 
deren Dateiname dann dem Linker übergeben wird. Falls man die Größe 
eines Speicherbereichs (Adressebereich des Flash-Speichers) nicht in der 
IDE vorgeben kann, kann man dies evtl. in einem eigenen Linker-Skript 
machen, sofern die IDE zulässt eines vorzugeben. Der Linker bricht dann 
mit einer Fehlermeldung ab, wenn der Speicherbereich nicht ausreicht.

> Ich speichere nur ein paar Sachen in einem einzigen Sektor.
Evtl. wird durch die Programmiersoftware der gesamte Flash-Speicher vor 
der Übertragung des Anwendungscodes gelöscht. Falls man der IDE nicht 
mitteilen kann, dass nur bestimmte Sektoren gelöscht werden sollen, kann 
man wenig machen. Am Einfachsten dürfte es sein, beim Lesen der 
Konfigurationsdaten auf leeren Flash zu prüfen (0xff) und dann auf 
Standardwerte zurückzugreifen, die im Programm hinterlegt sind.

Autor: Andreas Schneider (andy386)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, die GNU Toolchain läuft im Hintergrund.
hab aber keinen Plan davon...

Ich hab versucht, die Flash-Definitionen in der Hitop-XML zu ändern, 
z.B. die letzte Flashpage auszuklammern ö.ä., aber es kommt immer die 
Fehlermeldung "The Adress is not in Flash"

Eigenartigerweise will Hitop nichts in den Sektor 27 (7D000-7DFFF) 
schreiben, und lt. Anleitung beginnt der Bootblock erst ab 7E000 - 
dennoch scheinen da irgendwelche Informationen zu sein, die wichtig 
sind...

Autor: Andreas Schneider (andy386)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich hab mir jetzt 50k Zeilen Adressen und Opcode reingezogen 
(Dissasembly-Tab im Hitop), nach der Liste steht ab Sektor 10 (das ist 
18000+) nicht mehr ausser FF's. Warum er mir dann beim Schreiben in 
einen der hohen Sektoren Fehler reinbaut, ist mir unklar...

Autor: Andreas Schneider (andy386)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser CCLK, der bei der Speicherroutine angegeben werden muss/soll - 
ist damit der Systemclock (also Bus, ~14MHz) oder der CPU-Takt (~72MHz) 
gemeint?

Autor: Robert Teufel (robertteufel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Schneider schrieb:
> Dieser CCLK, der bei der Speicherroutine angegeben werden muss/soll -
> ist damit der Systemclock (also Bus, ~14MHz) oder der CPU-Takt (~72MHz)
> gemeint?

Es ist der CPU-Takt

uebrigens, wie kommst Du auf 14 MHz Bus-Clk? 18 MHz als default wuerde 
ich verstehen aber 14 und 72 passen irgendwie nicht zusammen.

Robert

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.