Gast
#3364599
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