Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.sci.electronics > #275479

Re: STM32FXX Flash Speicher weniger abnutzen

From Ole Jansen <remove.this.kaspernasebaer@gmx.de>
Newsgroups de.sci.electronics
Subject Re: STM32FXX Flash Speicher weniger abnutzen
Date 2020-02-14 08:17 +0100
Message-ID <hamvrqF5e6hU1@mid.individual.net> (permalink)
References <haieb6F71q9U1@mid.individual.net> <10kx5aco8lhl5$.dlg@news.bartheld.net>

Show all headers | View raw


Hallo Volker,

>> On Wed, 12 Feb 2020 14:53:55 +0100, Ole Jansen wrote:
>> Für einen  STM32F107 Connectivity Line möchte ich einen nicht flüchtigen
>> Ereigniszähler implementieren und das interne Flash Memory benutzen. Ich
>> benötige lediglich eine Routine welche die Zahl der Ereignisse
>> zurückgibt und eine Andere welche die Anzahl der Ereignisse um 1 erhöht.
>> Der Chip hat in seinem Flash Speicherseiten mit 2048 bytes die als
>> Ganzes gelöscht werden können (danach sind alle bytes 0xFF) und die
> 
> Benötigst Du für Deinen Ereigniszähler zwingend immer die vollen 256kB des
> Flashspeichers oder hast Du sogar die Möglichkeit auf eine Variante
> auszuweichen, die (nur) 64kB Flash und 64kB SRAM hat?

Ganz so schlimm ist es glücklicherweise nicht.

Ich hole noch mal kurz aus:

Die "EEPROM Simulation" von ST verwendet zwei Speicherseiten
und setzt am Anfang der Seiten jeweils Flags welche Seite aktiv ist.
Bei den µC der Connectivity Line sind die Seiten 2048 bytes groß, bei
anderen Linien können die auch 1024 groß sein.
Die Routine schreibt Parameter weg indem eine definierte
"virtual adress" (16bit) gefolgt von dem Wert (16bit) an die
nächste freie Stelle geschrieben werden.

Wenn die Seite voll ist geht er die Liste mit den ihm
bekannten virtuellen Adressen durch, löscht die inaktive
Seite und kopiert alle gespeicherten Parameter dorthin
und setzt die Seite aktiv. Damit wird einerseits die
Abnutzung gleichmäßig verteilt, andererseits kann die Routine
Inkonsistenzen erkennen und ggf. alles auf den letzten
konsistenten Status zurücksetzen.

Angenommen also ich verwende 4096 byte Flash speicher,
schreibe 4 byte pro Update und erlaube 10000 Löschzyklen, dann
reichte das für grob 1e7 Ereignisse minus Verluste
durch Overhead/Kopieren anderer Parameter.
Erwartet werden worst case 4e8 Ereignisse.

> In dem Fall rate ich dringend, den Flash nicht sinnlos kaputtzurösten,

Wenn ich die Firmware rausrechne hätte ich noch ca. 40k soda Flash
Speicher die ich sinnlos kaputtrösten "darf". Sagen die Auditoren...

Ich bin bei sowas aber aber Ästhet und es könnte sein dass jemand
den Quellcode gegenliest der sich auskennt ;-)

> sondern die Zählerei im SRAM zu veranstalten und nur alle naslang genau
> die notwendigen Daten von SRAM in den Flash zu übertragen.

Zur Zeit gibt es kein batteriegepuffertes RAM oder externes EEPROM.
Verlorene Ereignisse sind eher unerwünscht.

> Natürlich muß
> man sich das mit der Stromaufnahme und den Standbyzyklen genau überlegen
> und auch Vorkehrungen für den Brownout treffen

Ein verlorenes Ereignis bei Brownout o.Ä. wäre ggf noch akzeptabel.

> d. h. vielleicht einen
> Goldcap verwenden und mittels Betriebsspannungsüberwachung die Daten
> wegschreiben, bevor dem Chip der Saft ausgeht.

Das ist durchaus eine Alternative.

> Irgendwelche Magie mit Bitjongliererei macht die Sache nur unnötig
> kompliziert und fehleranfällig. Wie stellst Du Dir das vor?

Ich verwende zwei Seiten. Inkremente werden in Word0 gespeichert
und ansonsten lösche ein bit nach dem Anderen.
Wenn das letzte bit der Seite gelöscht ist übertrage ich die Inkremente
auf word0 der anderen Seite analog zur EEPROM Simulation wie oben
beschrieben. Bei 10000 Löschzyklen könnte das für 3.2e8 Ereignisse
mit zwei Speicherseiten ausreichen.

> Und: 256k Flash für einen Ereigniszähler? Echt jetzt? 2^2097152 Ereignisse?

Denk an Moores Gesetz. Der Markt schreit geradezu nach
ZFS und GigE auf embedded Devices für Heimautomation!elf

> Wieviele Atome in wievielen Universen willst Du denn zählen? 

Alle!

> Etwas schlauer schon wäre der Kompromiß, daß es auf +/-x
> Ereignisse nicht ankommt, dann könntest Du im SRAM zählen und nur jedes
> x-te Ereignis im Flash sichern. Dann wären im worst case (jemand zieht den
> Stecker) eben x-1 Ereignisse vergessen, das Flash würde aber im Gegenzug
> x*200'000 Zyklen halten.

Die Lösung mit den 3.3e8 Könnte ich ggf. noch als ausreichend verkaufen
wenn man die 10000 nicht so eng sieht.

Der Code mit der Bitschubserei läuft im Emulator, aber nicht auf dem
echten Contoller. Ich vermute stark dass Andreas Recht hat und dass mein
µC wegen ECC ö.Ä. keine beschriebenen Worte im Flash überschreiben
will oder kann. Was z.B. auch bedeuten würde beim ersten Schreibfehler
gar keine weiteren Ereignisse gezählt würden.

Leider bin ich in den Datenblättern und AppNotes immer noch nicht
fündig geworden wo das genau beschrieben wird.

Viele Grüße,

O.J.

Back to de.sci.electronics | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

STM32FXX Flash Speicher weniger abnutzen Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2020-02-12 14:53 +0100
  Re: STM32FXX Flash Speicher weniger abnutzen Andreas Fecht <forum@aftec.de> - 2020-02-12 16:27 +0100
    Re: STM32FXX Flash Speicher weniger abnutzen Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2020-02-13 08:54 +0100
      Re: STM32FXX Flash Speicher weniger abnutzen Andreas Fecht <forum@aftec.de> - 2020-02-13 11:43 +0100
        Re: STM32FXX Flash Speicher weniger abnutzen Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2020-02-14 08:49 +0100
          Re: STM32FXX Flash Speicher weniger abnutzen Thorsten Böttcher <thorsten_nospam@gmx.net> - 2020-02-14 09:33 +0100
            Re: STM32FXX Flash Speicher weniger abnutzen Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2020-02-14 14:18 +0100
      Re: STM32FXX Flash Speicher weniger abnutzen Thorsten Böttcher <thorsten_nospam@gmx.net> - 2020-02-13 11:45 +0100
  Re: STM32FXX Flash Speicher weniger abnutzen Uwe Bonnes <bon@hertz.ikp.physik.tu-darmstadt.de> - 2020-02-12 19:57 +0000
  Re: STM32FXX Flash Speicher weniger abnutzen Marte Schwarz <marte.schwarz@gmx.de> - 2020-02-13 08:25 +0100
  Re: STM32FXX Flash Speicher weniger abnutzen Rafael Deliano <rafael_deliano@arcor.de> - 2020-02-13 17:40 +0100
  Re: STM32FXX Flash Speicher weniger abnutzen Volker Bartheld <news2020@bartheld.net> - 2020-02-13 20:43 +0100
    Re: STM32FXX Flash Speicher weniger abnutzen Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2020-02-14 08:17 +0100
      Re: STM32FXX Flash Speicher weniger abnutzen Volker Bartheld <news2020@bartheld.net> - 2020-02-14 10:30 +0100
        Re: STM32FXX Flash Speicher weniger abnutzen Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2020-02-14 13:45 +0100
          Re: STM32FXX Flash Speicher weniger abnutzen Hanno Foest <hurga-news2@tigress.com> - 2020-02-14 14:23 +0100
            Re: STM32FXX Flash Speicher weniger abnutzen Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2020-02-14 15:00 +0100
              Re: STM32FXX Flash Speicher weniger abnutzen Hanno Foest <hurga-news2@tigress.com> - 2020-02-14 16:28 +0100
                Re: STM32FXX Flash Speicher weniger abnutzen Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2020-02-17 10:28 +0100
                Re: STM32FXX Flash Speicher weniger abnutzen Hanno Foest <hurga-news2@tigress.com> - 2020-02-17 11:29 +0100
                Re: STM32FXX Flash Speicher weniger abnutzen Ulf.Kutzner@web.de - 2020-02-17 03:42 -0800
            Re: STM32FXX Flash Speicher weniger abnutzen Volker Bartheld <news2020@bartheld.net> - 2020-02-14 16:35 +0100
              Re: STM32FXX Flash Speicher weniger abnutzen Hanno Foest <hurga-news2@tigress.com> - 2020-02-14 17:16 +0100
                Re: STM32FXX Flash Speicher weniger abnutzen Volker Bartheld <news2020@bartheld.net> - 2020-02-14 17:37 +0100
          Re: STM32FXX Flash Speicher weniger abnutzen Falk Willberg <faweglassenlk@falk-willberg.de> - 2020-02-16 21:40 +0100
    Re: STM32FXX Flash Speicher weniger abnutzen Helmut Schellong <rip@schellong.biz> - 2020-02-14 13:06 +0100
      Re: STM32FXX Flash Speicher weniger abnutzen Thorsten Böttcher <thorsten_nospam@gmx.net> - 2020-02-14 14:27 +0100
        Re: STM32FXX Flash Speicher weniger abnutzen Helmut Schellong <rip@schellong.biz> - 2020-02-14 17:46 +0100
  Re: STM32FXX Flash Speicher weniger abnutzen Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2020-02-14 13:53 +0100
  Re: STM32FXX Flash Speicher weniger abnutzen Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2020-02-17 18:10 +0100
    Re: STM32FXX Flash Speicher weniger abnutzen Thorsten Böttcher <thorsten_nospam@gmx.net> - 2020-02-18 07:19 +0100
      Re: STM32FXX Flash Speicher weniger abnutzen Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2020-02-18 07:53 +0100
        Re: STM32FXX Flash Speicher weniger abnutzen Thomas Prufer <prufer.public@mnet-online.de.invalid> - 2020-02-18 09:11 +0100
          Re: STM32FXX Flash Speicher weniger abnutzen Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2020-02-18 14:22 +0100
            Re: STM32FXX Flash Speicher weniger abnutzen Thomas Prufer <prufer.public@mnet-online.de.invalid> - 2020-02-18 18:15 +0100

csiph-web