Yeah, the descriptions around this issue sound like there is something pointing to power — if the processor and/or flash browns out during the check (low battery, etc), a flash parameter format will take place.
Thinking about this some more, this isn’t a good choice. It’s better to read the wrong data from flash than to erase/start over, which results in the loss of important data (bad).
here’s the code in param.cpp
int prm_init(Chirp *chirp)
{
// check integrity
if (!prm_verifyAll())
{
// if we're corrupt, format, start over
prm_format();
return -1;
}
chirp->registerModule(g_module);
return 0;
}
And here (attached) is a firmware version with the code disabled for y’all to play with/test. Let me know how it goes.