NAND フラッシュメモリは、ビット化けが起こり得るデバイスであり、ECC (Error Correction Code / Error Checking and Correction) を使って補っています。 ECC は、ユーザーデータに ECC データを付加することによって、誤り訂正を行えるようにした仕組みです。 ECC は、1 ビットの誤りならば、訂正が可能です。 2 ビットの誤りならば、訂正はできませんが、誤りが発生したことは検出できます。 3 ビット以上の誤りがあれば、結果はまちまちです。 間違った判断に基づき、誤り訂正したり、誤りがなかったと判断したりするかもしれません。 ECC データは、ユーザーデータ 2^N ビットに対し、2*N ビット必要です。 例えば、ユーザーデータが 8 ビットならば、N = 3 なので、ECC データは 6 ビット必要です。 ユーザーデータが 20
![beagleboard を触ろう - NAND ECC: 組み込みエンジニアの週記](https://cdn-ak-scissors.b.st-hatena.com/image/square/d19cc67d38bdde59ae335545037d79c622e0abcb/height=288;version=1;width=512/https%3A%2F%2Fbeagle1.c.blog.ss-blog.jp%2F_images%2Fblog%2F_d06%2Fbeagle1%2FNAND_ECC_structure.png%3Fc%3Da0)