It can be due to exposure od device to radiation example like X-rays etc. It cna also be due to electric fields present in the system.
The flash is connected to the SoC through General-Purpose Memory Controller (GPMC).
Does the flash have any settings that when set to marginal values, the flash gets corrupted as described ?
Is there errata sheet for the part to check it against GPMC settings ?
I have checked our internal database and the part GL128S10DHI01 does not have any errata.
Please let us know on how many devices you are seeing the issue.
The factory just reported more 5 boards, so that total is 6 boards.
I know this is an old post, but our company is having a similar issue right now. We must have sent out 1000 or so boards with a S29GL128N part and have gotten almost 30 returns. Like Ahmed, we only flash our part in manufacturing and in the field the part lives most of its life in "read-only" mode unless the customer chooses to firmware upgrade. Our product has been for sale for over 10 years, and this just started happening to products sold starting in the year 2016. No earlier models have yet been returned to us.
Our symptoms don't match the "totally corrupt" description. In our case, it is usually only 1 single bit that becomes unstable. Since we perform a CRC32 integrity check on our application image before running, this one bit causes our product to brick. Reflashing the part seems to fix the bad bit, but it doesn't do much to restore our confidence in the part. I have a suspicion that the channel substrate is not the same quality as it once was in this part.
We are going to attempt to implement our own ECC/Reed-Solomon encoding or similar to repair our image in the event that flash bits go bad-- although this won't protect from a strike to our boot loader. I would be interested to hear from any others having this issue and any other possible techniques used to minimize the chances of it happening? Other ideas we had were periodic reflashing of the part, and changing the method of reading the flash from sequential to random block loading and putting it back together in RAM.