기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
2GBytes MLC NAND Flash이면 Block size: 512KB, page size: 4096, OOB: 128 bytes 일겁니다.
linux-2.6.29까지는 (30버전 이상은 확실치 않아서..) 2048page 까지만 지원이 될 겁니다.
다음과 같이 하면 2GB MLC Nand 사용할 수 있습니다. (S3C6410 2.6.28 버전에서 저는 잘 사용하고 있습니다.)
1. MLC OOB ecclayout 변경
===> 2048 Page인 경우 아래와 같이 되고
static struct nand_ecclayout s3c_nand_oob_mlc_64 = {
.eccbytes = 32,
.eccpos = {
32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63},
.oobfree = {
{.offset = 2,
.length = 28}}
};
==> 4096 Page인 경우 두배로 늘려야 하므로 아래와 같이 (64번째부터 사용했는데.. 0번째만 아니면 됩니다.)
==> 물론 u-boot에서 ecclayout이 같아야 합니다.
static struct nand_ecclayout s3c_nand_oob_mlc_128 = {
.eccbytes = 64,
.eccpos = {
64, 65, 66, 67, 68, 69, 70, 71,
72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87,
88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119,
120, 121, 122, 123, 124, 125, 126, 127},
.oobfree = {
{.offset = 2,
.length = 28+32}}
};
2. MAX OOB SIZE, MAX PAGESIZE 를 각각, 128, 4096으로 변경
저는 위와같이 u-boot와 커널을 수정하여 잘 사용하고 있습니다.