Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.sci.electronics > #344341

Flash-Speicher beschreiben mit Microcontroller

From Carla Schneider <carla_schn@proton.me>
Newsgroups de.sci.electronics
Subject Flash-Speicher beschreiben mit Microcontroller
Date 2023-09-22 16:05 +0200
Organization Mausgrau
Message-ID <650D9F1A.4F504B18@proton.me> (permalink)

Show all headers | View raw


https://www.makermatrix.com/blog/read-and-write-data-with-the-pi-pico-onboard-flash/

-------
There are two functions in the Pi Pico SDK used to write into the flash:

flash_range_erase(uint32_t flash_offs, size_t count);
flash_range_program(uint32_t flash_offs, const uint8_t *data, size_t count);


The flash_range_erase() function resets count bytes of flash (which needs to be a multiple 
of the sector size, 4096) beginning at address flash_offs, to 0xFF (all ones). This task 
appears to be the failure mode of flash when it wears out, as some of the bits won't be 
flipped from zero back to one. Thus, you want to do this as infrequently as possible on 
each sector, to avoid wearing the media out. Once you have one or more sectors in this 
known state, use the flash_range_program() function to program one or more 256-byte pages 
(stored in *data) to the count bytes beginning at address flash_offs. Remember that in 
this case count needs to be a multiple of FLASH_PAGE_SIZE (256). It will then flip some 
of the bits to zeroes, in order to program one or more pages of flash to the values stored 
in *data. In my case I want to write one 32-bit integer to the first four bytes of the first 
page of the last sector:

-------

Und dann braucht er fuer seinen Zweck jeweils eine Page um eine 4Byte Zahl zu speichern.
Die Frage ist ob man eine Page nicht mehrmals programmieren kann ohne sie zu loeschen,
Die Bytes die unprogrammiert bleiben sollen setzt man auf 0xFF und die bereits programmierten Bytes
setzt
man auf den Wert den sie bereits haben. Dann koennte man die Zahlen hintereinander in die
Page setzen, und haette auch keinen abnutzung, denn die kommt ja nur durchs Loeschen,
nicht durchs Programmieren...

Der Zweck  waere ein Datenlogger der regelmaessig eingeschaltet wird, dann Temperatur, Luftfeuchte
usw. misst
diese in den Flash schreibt und dann wieder abschaltet, ohne dass man noch einen weiteren
Speicher braucht. Man wuerde sich also ein 256Byte batteriegepuffertes RAM sparen in das
man die Daten schreibt bis es voll ist, und das dann auf eine Page im Flash.


In jedem Fall wuerde ich mir solche Funktionen auch fuer SD-Karten wuenschen,
aber da verstecken die sich in der Firmware der Karte und man kennt noch nichtmal sector size und 
page size.

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


Thread

Flash-Speicher beschreiben mit Microcontroller Carla Schneider <carla_schn@proton.me> - 2023-09-22 16:05 +0200
  Re: Flash-Speicher beschreiben mit Microcontroller Marcel Mueller <news.5.maazl@spamgourmet.org> - 2023-09-22 16:40 +0200
    Re: Flash-Speicher beschreiben mit Microcontroller Gerrit Heitsch <gerrit@laosinh.s.bawue.de> - 2023-09-22 17:15 +0200
      Re: Flash-Speicher beschreiben mit Microcontroller Carla Schneider <carla_schn@proton.me> - 2023-09-22 17:34 +0200
        Re: Flash-Speicher beschreiben mit Microcontroller Andreas Fecht <forum@aftec.de> - 2023-09-22 19:09 +0200
        Re: Flash-Speicher beschreiben mit Microcontroller Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2023-09-23 01:56 +0200
          Re: Flash-Speicher beschreiben mit Microcontroller Gerrit Heitsch <gerrit@laosinh.s.bawue.de> - 2023-09-23 08:00 +0200
            Re: Flash-Speicher beschreiben mit Microcontroller Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2023-09-23 11:27 +0200
              Re: Flash-Speicher beschreiben mit Microcontroller Gerrit Heitsch <gerrit@laosinh.s.bawue.de> - 2023-09-23 12:45 +0200
          Re: Flash-Speicher beschreiben mit Microcontroller Carla Schneider <carla_schn@proton.me> - 2023-09-23 11:54 +0200
  Re: Flash-Speicher beschreiben mit Microcontroller Michael Schwingen <news-1513678000@discworld.dascon.de> - 2023-09-22 19:28 +0000

csiph-web