Codegenerierung mit KEIL für STM32

Gast #3364599
Lesenswert?

Hallo zusammen,

ich verwende die neueste KEIL Umgebung und den STM32F051x. In meiner 
Software emuliere ich EEPROM und ich mache eine CRC-Prüfung des Flashs 
bei Programmstart.

Nun steht meine CRC-Checksumme im gleichen Sektor wie der 
EEPROM-Emulierungsbereich.

Beim ersten Start des Programms ist alles in Ordnung, nach dem ersten 
"Abspeichern" im EEPROM wird aber der gesamte Sektor überschrieben. 
Damit geht meine Checksumme verloren und das Programm startet nicht.

Ich habe den EEPROM und die Checksumme in einem Sektor, weil das 
eigentliche Programm die restlichen Sektoren füllt.

Soviel zur Theorie die ich verstanden habe :)


Für die Lösung meines Problems habe ich derzeit 2 Optionen.

1. Option: Ich versuche auf Biegen und Brechen den Programmcode selbst 
effizienter zu gestalten.

2. Option: Viel einfacher ist es mit den Optimierungen zu spielen. Hier 
habe ich in den C/C++ Optionen die "One ELF Section per Function" 
aktiviert und sagenhafte 8kB Flash gewonnen. Damit kann ich nun EEPROM 
und Checksumme trennen. Das funktioniert soweit auch ganz gut.

Jetzt meine Fragen:

1. Welchen Unterschied macht diese Option aus (außer den 8kB)?
2. Muss ich mit Veränderungen in timingkritischen Codepfaden rechnen?
3. Wie kann ich den Unterschied der beiden Compilierungsergebnisse 
feststellen (außer einem Diff mit Notepad, bzw. ausgedehnten Tests)?


Ich hoffe es gibt jemand der mir diese Fragen beantworten kann. Ich habe 
natürlich nach entsprechenden Unterlagen über "ELF" und KEILs 
Optimierungen geschaut und durchgelesen. Ich würde jetzt aber gerne mal 
die Meinung der Profis einholen.

Beste Grüße
public
#3364613
Lesenswert?

an den auszuführenden codepfaden und am code selbst sollte sich für 
gewöhnlich nichts ändern, da diese art der optimierung nur der Linker 
durchführt.
Und dieser nutzt die einzelnen ELF teile dazu nicht genutze funktionen 
rauszuschmeissen.
8 Kb ist doch recht viel, klingt dnach als würdest du eine ganze lib 
hinein linken von der du nur einen sehr kleinen Teil verwendest?

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