4 ms·
I personally hate nand. I do embedded stuff all day long, and you spend more time dealing with NAND issues than anything else in the dev of a product. It not o
by buserror 11y ago
I personally hate nand. I do embedded stuff all day long, and you spend more time dealing with NAND issues than anything else in the dev of a product.
It not only ship to you with bad blocks, but will fail if you write to it, it will also fail /by itself/ if left alone, so even a read-only filesystem is not safe, until you implement really paranoid duplication of pretty much everything. You can't JUST rely on ECC, you need to have duplication to allow the system to continue working; ECC will just tell you 'He's dead, Jim' and that doesn't help if you're a production device.
Also, from my experience, newer NAND seems to nuke erase blocks by /bunches/ not just by units, so if you lose one, more often than not you love 8+ in a row.
Also, the size of the erase blocks are getting bigger, so you lose a hell of a lot more every time you lose a block.
Add the bloated file systems in linux (JFFS2 scan at mount time can be 30s easily!), and you end up wondering if it's really worth the trouble.
These days I always propose using a micro-sd card (of quality) for any large storage need as it's a lot easier to replace, and a SPI NOR flash for the system if at all possible (it's horrendously slow to erase/write, but at least it's stable)
- cushychicken 11y agoHaving seen a lot of similar issues, I can say I feel your pain. It can be really frustrating to get to the root of these issues, and when you do, management is rarely willing to accept the answer of "We've done all we can, the root of the problem is a device flaw we can't change." How recent of a jffs2 image are you using? They've implemented some block tables in newer versions that speed up mount time a lot if my understanding is correct. Also, I would highly recommend trying out UBIFS if you get the chance - it's jffs2's successor, and well implemented.