STM32F4 - Flash in verschiedene Bereiche aufteilen

OP #3665405
Lesenswert?

Guten Morgen,

ich arbeite gerade, den Flashspeicher des STM32F4 als EEPROM für 
Einstellungen etc. zu nutzen. Dafür möchte ich die kleineren Sektoren 
(z.B. 1&2) des Flash nutzen. Da diese allerdings früh im Adressraum 
liegen, sind sie im Standard-Linkerscript für Code vorgesehen.

Ich habe also ein eigenes Linkerscript gebaut, mit dem ich Sektor 0 für 
die Vektortabelle und Startup Code nutzen möchte (im C Code als 
_attribute_ ((used,section(".isr_vector"))) bzw .startupCode 
gekennzeichnet), Sektor 1 & 2 für Einstellungen explizit frei lassen 
will und dann ab Sektor 3 den Rest des Codes zulassen möchte. Leider 
läuft es nicht so wie erhofft :(

Problem 1: Linke ich mit der Option --gc-sections, wird direkt alles 
verworfen (Größe der Ausgabe 0 Bytes). Hat jemand eine Idee woher das 
kommt? Ich habe ja explizit mit den EXTERNs LD darauf aufmerksam 
gemacht, dass es die Sections isr_vector und StartupCode gibt. Von 
letzterer aus wird übrigens main() angesprungen.

Problem 2: Linke ich ohne die Option --gc-sections, es wird also aller 
Code in die Ausgabe gepackt, bekomme ich die Meldung, dass die Sektion 
rom_isr, welche ja eigentlich nur die Vektoren und den Startup Code 
beinhalten sollte, zu klein ist für den gesamten Code (es wird eine 
Routine genannt, die in der main zyklisch aufgerufen wird, aber in 
keiner ISR aufgerufen wird).

Ich habe schon gut gegoogelt und verschiedene Sachen ausprobiert, 
letztlich aber ohne Erfolg. Wenn jemand einen Tipp hätte, wäre ich echt 
dankbar!

Liebe Grüße, Jan
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren