Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.arch.embedded > #27847
| From | pozz <pozzugno@gmail.com> |
|---|---|
| Newsgroups | comp.arch.embedded |
| Subject | Re: Serial EEPROM or Serial Flash? |
| Date | 2018-06-19 17:44 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <pgb8c1$9bd$1@dont-email.me> (permalink) |
| References | (3 earlier) <pg00mh$cmj$1@dont-email.me> <pg0ds2$sal$1@dont-email.me> <pg0i0n$nlr$1@dont-email.me> <pg3jta$8oa$1@dont-email.me> <o2AVC.208842$mS3.44599@fx04.iad> |
Il 17/06/2018 23:05, Richard Damon ha scritto: > On 6/16/18 2:12 PM, pozz wrote: >> >> >> Third question, more complex (for me). >> Suppose I decided to split non-volatile data in two blocks, for example >> calibration data and user settings. >> What happens if user settings change when calibration settings are being >> written? I think I should convert your writeTriggered in two updated >> flags: calibration_updated and settings_updated. >> In idle state I should check both flags and start writing the relative >> block. >> >> > > I will typically divide my parameters into two groups. One group has the > data that the user sets, usage information, and other information that > is updated as the user works. This data gets saved shortly after the > user makes a setting change or enough time passes that the other > information is worth saving. I often also include a user option to reset > this to some 'factory default' for if the user totally messes up the > settings (this won't reset the usage data, just user settings). There is > a second block of factory calibration data. This will never be update by > the user (or only by very trusted users) and typically this block > doesn't have multiple copies (unless I need a backup for actual flash > corruption). To activate the save for this block requires giving the > device a special unlock sequence, which allow the adjustment of these > parameters and then a specific factory save command. > >> Again another scenario. Until now we talked about settings, a structure >> filled with parameters that can change when the user wants at any time. >> >> How to manage a log, a list of events with timestamp and some data? >> Suppose one entry takes 8 bytes. I reserve 4kB of memory for around 500 >> entries organized in a FIFO. >> >> Log isn't so critical as the settings, so I think I could avoid >> redundancy in non-volatile memory. Maybe only the CRC that, when not >> valid, clears all the log. It should be acceptable. >> >> As usual we can talk about the opportunity to read the full log and put >> it in RAM, or read the entries when needed (because the user wants to >> read some entries, mostly the more recent). >> Reading 10 entries (80 bytes) from 10MHz SPI memory doesn't take too >> much (no more than 100usec). But here the problem is that reading can be >> needed during writing of settings. And this is a big problem. >> >> As usual, simplest solution is to have the full log in RAM... sigh! >> >> What about writing of one or a few new entries in the log? A writing >> operation (for example, settings) should be in process. I should >> schedule and postpone the log update after writing of settings is finished. >> >> Because you have much more experience than me (and you are so kind to >> share it with me and other lurkers), could you suggest a smart approach? >> > > For logs, I will define a log information block to store a single log > entry, back the number of them I can into a flash sector. The total log > then has a number of these sectors reserved for the log, forming a > circular list (so writing a new log entry overwrites the oldest log > record). I tend to have two sectors of these log entries 'cached', so I > can be creating one log entry at the end of one block and one at the > beginning of the next block. While I am filling a given log entry, it is > marked as 'invalid', and that is cleared when the entry is finished. A > given sector is written when it is full, or a sufficient time after a > block has been updated to minimize log data loses due to power loss. > This write uses the same flash buffer as the parameter flash buffer as I > can't be both writing a log sector and a parameter sector at the same > moment. > Do your application read log entries? What do you do to avoid reading when the memory chip is busy in writing?
Back to comp.arch.embedded | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-14 12:20 +0200
Re: Serial EEPROM or Serial Flash? David Brown <david.brown@hesbynett.no> - 2018-06-14 12:49 +0200
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-15 09:38 +0200
Re: Serial EEPROM or Serial Flash? Jack <jack4747@gmail.com> - 2018-06-15 00:54 -0700
Re: Serial EEPROM or Serial Flash? Reinhardt Behm <rbehm@hushmail.com> - 2018-06-15 16:26 +0800
Re: Serial EEPROM or Serial Flash? Jack <jack4747@gmail.com> - 2018-06-15 01:31 -0700
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-15 10:50 +0200
Re: Serial EEPROM or Serial Flash? Reinhardt Behm <rbehm@hushmail.com> - 2018-06-15 17:03 +0800
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-15 14:59 +0200
Re: Serial EEPROM or Serial Flash? David Brown <david.brown@hesbynett.no> - 2018-06-15 15:51 +0200
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-15 10:47 +0200
Re: Serial EEPROM or Serial Flash? Jack <jack4747@gmail.com> - 2018-06-15 02:20 -0700
Re: Serial EEPROM or Serial Flash? Stef <stef33d@yahooI-N-V-A-L-I-D.com.invalid> - 2018-06-15 13:41 +0200
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-15 15:01 +0200
Re: Serial EEPROM or Serial Flash? David Brown <david.brown@hesbynett.no> - 2018-06-15 11:25 +0200
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-15 15:10 +0200
Re: Serial EEPROM or Serial Flash? Jack <jack4747@gmail.com> - 2018-06-15 06:51 -0700
Re: Serial EEPROM or Serial Flash? David Brown <david.brown@hesbynett.no> - 2018-06-15 16:21 +0200
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-15 17:20 +0200
Re: Serial EEPROM or Serial Flash? Richard Damon <Richard@Damon-Family.org> - 2018-06-15 13:11 -0400
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-15 22:54 +0200
Re: Serial EEPROM or Serial Flash? Richard Damon <Richard@Damon-Family.org> - 2018-06-15 18:25 -0400
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-16 08:26 +0200
Re: Serial EEPROM or Serial Flash? Richard Damon <Richard@Damon-Family.org> - 2018-06-16 09:20 -0400
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-16 19:38 +0200
Re: Serial EEPROM or Serial Flash? Richard Damon <Richard@Damon-Family.org> - 2018-06-16 16:41 -0400
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-16 23:05 +0200
Re: Serial EEPROM or Serial Flash? David Brown <david.brown@hesbynett.no> - 2018-06-17 18:41 +0200
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-16 20:12 +0200
Re: Serial EEPROM or Serial Flash? David Brown <david.brown@hesbynett.no> - 2018-06-17 19:27 +0200
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-19 17:40 +0200
Re: Serial EEPROM or Serial Flash? Richard Damon <Richard@Damon-Family.org> - 2018-06-17 17:05 -0400
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-19 17:44 +0200
Re: Serial EEPROM or Serial Flash? Richard Damon <Richard@Damon-Family.org> - 2018-06-19 23:14 -0400
Re: Serial EEPROM or Serial Flash? pozz <pozzugno@gmail.com> - 2018-06-20 11:03 +0200
Re: Serial EEPROM or Serial Flash? Richard Damon <Richard@Damon-Family.org> - 2018-06-20 08:03 -0400
Re: Serial EEPROM or Serial Flash? Michael Karas <mkaras@carousel-design.com> - 2018-06-23 09:43 -0700
csiph-web