How long will my SPI flash live?

That depends on everything. But, let’s construct a simple case where we do not dive into details too much.

Let’s say we have a 1MB flash. There is only one file. Each second we open the file, read a number, increment it, and store the file again.

Suppose we divide the flash into 128 bytes pages and 64k blocks. The flash copes with 10000 erases before it fails.

Thus, we will have 1MB / 64k = 16 blocks. Each block has 512 pages, and one file update will consume two pages (metadata + data), meaning we can do 512/2 = 256 file updates before we’ve used a full block which needs erasing before reuse. Also, spiffs always need two free blocks.

Considering above, after (16-2) * 256 = 3584 file updates the system is full of deleted pages and blocks will need to be erased. Henceforth, after each 256th file update a block must be erased. As we have 16 blocks and have wear leveling, it will take 256 * 16 file updates before same block is erased again. This we can do 10000 times before things fail, so to sum it up we can do 3584 + (256 * 16) * 10000 file updates before the spi flash is worn out, roughly 40960000 times. To play it safe as we haven’t considered some extra meta data, we multiply by 0.75 (pretty aggressive) we sum it up to 30,7 million.

Which at one write per second is 355 days.

On the other hand, if your update occurs once per minute you can expect a failure in 58 years.

Also, many flashes today can be erased 100000 times (or more) before failure which would multiply above life time by ten. Check the datasheet.