Forum: Mikrocontroller und Digitale Elektronik Codegenerierung mit KEIL für STM32


von public (Gast)


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

von Ben W. (ben_w)


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?

von public (Gast)


Lesenswert?

Hey Ben,

danke für die Antwort.

#include "stdlib.h" und andere könnten das erklären :)

Gruß
public

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.