[sdiy] a provoking question about time
brianw at audiobanshee.com
Fri Jun 24 02:26:45 CEST 2022
One part of a solution is to use professional-grade programming for production products. I have spoken with Microchip at length, and they recommend the ICD3 programmer or better. It strictly controls the voltage of the PIC when programming, so that read-back is not marginal. This doesn't extend the longevity, per se, but it ensures that the correct values are readable for as long as the device lasts. You have to invest $300 in the programmer, rather than $30, but it's a small price to pay to ensure that the promised longevity is available.
On a related note, external memory like eMMC now has boot partitions that can be configured for High Reliability. There's a sacrifice of total capacity because redundancy is used to circumvent bit rot as long as possible. eMMC also has modes (for non-boot partitions) that keep track of the age of each sector and rewrite sectors in High Reliability areas before they get too old to read back, but this may only work in read/write areas, and thus may not work for the boot partition(s). These features are often combined with Secure Boot to make sure that malware firmware will not boot your device and thereby compromise integrity of the product.
The problem with eMMC, of course, is that PIC chips aren't designed to boot from them. ARM chips on the higher end will boot from external Flash and your boards can be designed with an ARM that boots from a eMMC in High Reliability mode. If you're concerned about long-term reliability then you might need to migrate away from Microchip to any of the ARM chips that support modern Flash technology for boot.
In any case, I support your focus on designing products that last at least 20 years instead of at most 2 years.
On Jun 23, 2022, at 2:34 AM, Roman Sowa <modular at go2.pl> wrote:
> what are your concerns about flash retention time in microcontrollers? Usually PIC18 and PIC16 claim 40 years in datasheet, but dsPIC only 20.
> I've seen corrupted memory in products made about 15 years ago with dsPIC, so datasheet value seems real.
> One way to do it is to rewrite all memory from time to time, but how to do that? Even if there's real time clock running, the user may always change the date, and if it's not alowed, the battery or supercapacitor may die, or get ripped away. My idea is to clearly state somewhere, in manual, or on the device "please run maintenance procedure if it's year ending with 0 or 5" but I'm affraid nobody will do that anyway, and it seems foolish.
> People have no problem giving their cars every year for expensive maintenance, but nearly nobody ever does that with non-industrial electronic equipment. That goes sligltly better with musical instruments, but anyway many of them go to service only after it's too late and it's simply broken.
> I'm not very fond of general trend which is "buy new stuff every 2 years".
More information about the Synth-diy