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


Groups > comp.arch.embedded > #24830

Re: What is your strategy to save non volatile data?

From David Brown <david.brown@hesbynett.no>
Newsgroups comp.arch.embedded
Subject Re: What is your strategy to save non volatile data?
Date 2016-08-12 11:54 +0200
Organization A noiseless patient Spider
Message-ID <nok6df$krv$1@dont-email.me> (permalink)
References (1 earlier) <noi142$ih$1@dont-email.me> <noi3gv$8qc$1@dont-email.me> <noipdo$nnv$1@dont-email.me> <noithu$8fa$2@dont-email.me> <noiuaf$au4$1@dont-email.me>

Show all headers | View raw


On 12/08/16 00:30, Don Y wrote:
> On 8/11/2016 3:17 PM, pozz wrote:
> 
> [much elided]
> 
>> "Everything in one structure" means you have a global (as the scope in C)
>> struct definition that is accessed by every piece of code in the
>> project, even
>> if they are very different section of the project.
> 
> No.  It only has to be *effectively* global.
> 
> E.g., you can have a global "update_parameter()" that takes a
> "key" (name for a parameter -- this could be a literal string
> *or* just a small integer) and a parameter value (or pointer to
> a parameter value).  Update_parameter() then moves the "value"
> into the referenced portion of the "parameters to be saved struct".

First, /don't/ use strings for that sort of thing unless you have no
other choice.  And don't use arbitrary integers.  Use an enum, that is
defined in one place.  That way you get it right.  Your code refers to
the parameters using sensible names, rather than numbers, you don't get
overlap or gaps (unless you want them, of course), and you can easily
change things when you need to.  And when one part of your program
writes parameter "backgroundColour" and another part reads parameter
"backgroundColor", you get a compile-time error rather than weird
behaviour at run-time.

But passing the data back and forth through functions like
"update_parameter" and "get_parameter" is an alternative to accessing
the struct directly, and can be easier to manage.  It is certainly
convenient if you want to trigger automatic saving of parameters.

> 
> In this way, the definition of the struct can remain opaque.
> The same sort of "accessor" can be used to retrieve those
> parameters from the struct -- without exposing the struct
> or the manner in which the individual parameters are "encoded" (!)
> in the struct.
> 

Yes.

> E.g., you can pack a bunch of (potentially unrelated) parameters
> into a bitfield within that struct.  Data coming *into* it gets
> massaged to manipulate the appropriate fields.  Likewise for data
> coming *out*.

That sounds like a complication that is unlikely to be worth the effort,
but it's possible.  In many cases its enough to simply say "all
parameters are 32 bits - it's up to the app if this is 4 characters, a
float, an integer, etc.".

> 
> Finally, because this represents a monitor, of sorts, you can ensure
> atomic operations on that "data to be preserved" -- up to and including
> an action that automatically saves the struct to persistent store
> when power is failing (the rest of the time, "updates" happen to
> the "in-RAM" copy of the struct so you don't incur the costs of
> updating FLASH more often than necessary)
> 

Also true - it's always important to make sure your data is consistent
at all times.

Back to comp.arch.embedded | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

What is your strategy to save non volatile data? pozz <pozzugno@gmail.com> - 2016-08-11 14:48 +0200
  Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-11 06:27 -0700
  Re: What is your strategy to save non volatile data? David Brown <david.brown@hesbynett.no> - 2016-08-11 16:12 +0200
    Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-11 07:53 -0700
      Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-11 08:27 -0700
        Re: What is your strategy to save non volatile data? bitrex <bitrex@de.lete.earthlink.net> - 2016-08-11 12:11 -0400
          Re: What is your strategy to save non volatile data? bitrex <bitrex@de.lete.earthlink.net> - 2016-08-11 12:12 -0400
            Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-11 11:35 -0700
              Re: What is your strategy to save non volatile data? bitrex <bitrex@de.lete.earthlink.net> - 2016-08-11 20:59 -0400
          Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-11 11:33 -0700
        Re: What is your strategy to save non volatile data? pozz <pozzugno@gmail.com> - 2016-08-12 00:21 +0200
          Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-11 15:40 -0700
      Re: What is your strategy to save non volatile data? David Brown <david.brown@hesbynett.no> - 2016-08-11 23:07 +0200
        Re: What is your strategy to save non volatile data? pozz <pozzugno@gmail.com> - 2016-08-12 00:17 +0200
          Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-11 15:30 -0700
            Re: What is your strategy to save non volatile data? pozz <pozzugno@gmail.com> - 2016-08-12 09:02 +0200
              Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-12 09:29 -0700
            Re: What is your strategy to save non volatile data? David Brown <david.brown@hesbynett.no> - 2016-08-12 11:54 +0200
              Re: What is your strategy to save non volatile data? John Devereux <john@devereux.me.uk> - 2016-08-12 13:14 +0100
                Re: What is your strategy to save non volatile data? David Brown <david.brown@hesbynett.no> - 2016-08-12 15:22 +0200
              Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-12 09:40 -0700
                Re: What is your strategy to save non volatile data? David Brown <david.brown@hesbynett.no> - 2016-08-12 22:40 +0200
                Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-13 09:44 -0700
                Re: What is your strategy to save non volatile data? David Brown <david.brown@hesbynett.no> - 2016-08-14 23:01 +0200
          Re: What is your strategy to save non volatile data? David Brown <david.brown@hesbynett.no> - 2016-08-12 09:52 +0200
            Re: What is your strategy to save non volatile data? pozz <pozzugno@gmail.com> - 2016-08-12 16:30 +0200
              Re: What is your strategy to save non volatile data? David Brown <david.brown@hesbynett.no> - 2016-08-12 17:09 +0200
        Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-11 15:36 -0700
        Re: What is your strategy to save non volatile data? Paul <paul@pcserviceselectronics.co.uk> - 2016-08-12 03:21 +0100
    Re: What is your strategy to save non volatile data? bitrex <bitrex@de.lete.earthlink.net> - 2016-08-11 12:19 -0400
      Re: What is your strategy to save non volatile data? pozz <pozzugno@gmail.com> - 2016-08-11 23:49 +0200
        Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-11 15:37 -0700
    Re: What is your strategy to save non volatile data? John Devereux <john@devereux.me.uk> - 2016-08-11 20:50 +0100
    Re: What is your strategy to save non volatile data? pozz <pozzugno@gmail.com> - 2016-08-12 00:16 +0200
      Re: What is your strategy to save non volatile data? Paul <paul@pcserviceselectronics.co.uk> - 2016-08-12 03:34 +0100
      Re: What is your strategy to save non volatile data? David Brown <david.brown@hesbynett.no> - 2016-08-12 11:59 +0200
  Re: What is your strategy to save non volatile data? Paul Rubin <no.email@nospam.invalid> - 2016-08-11 11:29 -0700
  Re: What is your strategy to save non volatile data? Les Cargill <lcargill99@comcast.com> - 2016-08-12 12:15 -0500
  Re: What is your strategy to save non volatile data? Joe Chisolm <jchisolm6@earthlink.net> - 2016-08-12 12:10 -0500
    Re: What is your strategy to save non volatile data? Paul <paul@pcserviceselectronics.co.uk> - 2016-08-12 22:00 +0100
  Re: What is your strategy to save non volatile data? Tim Wescott <tim@seemywebsite.com> - 2016-08-13 12:06 -0500
    Re: What is your strategy to save non volatile data? pozz <pozzugno@gmail.com> - 2016-08-13 23:42 +0200
      Re: What is your strategy to save non volatile data? Don Y <blockedofcourse@foo.invalid> - 2016-08-13 15:55 -0700
      Re: What is your strategy to save non volatile data? Paul <paul@pcserviceselectronics.co.uk> - 2016-08-14 00:08 +0100
      Re: What is your strategy to save non volatile data? Tim Wescott <tim@seemywebsite.com> - 2016-08-13 19:06 -0500
        Re: What is your strategy to save non volatile data? pozz <pozzugno@gmail.com> - 2016-08-22 09:46 +0200

csiph-web