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...
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.
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.
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)
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?
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.
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...
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...
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