안녕하세요.
NAND bad block 처리에 관한 질문이 있어서 글을 남겼습니다. 양산 직전이라 매우 조심스럽네요.
u-boot v1.1.6 사용중입니다.
SIZE 정보:
NAND 1block size : 128K
u-boot.bin : 213K
NAND Flash 벤더가 1st block을 1천번 program/erase 보장한다는데,
이 경우 u-boot는 2번째 block까지 사용하게 됩니다.
2번째 block은 bad가 날 수 있는데, 방법을 생각해 보자면...
-후보 1번. u-boot를 128K (1block) 이하로 줄인다.
-후보 2번. 작은 크기의 u-boot으로 부팅 후 원래 크기의 u-boot으로 다시 부팅한다.
-후보 3번. 2번째 block이 bad 날 확율이 낮으니 그냥 무시한다.
NAND 5번 block ~ 10번 block 에서도 bad가 나는 걸 보면 '후보 3번'은 힘들 것 같네요. ㅠㅠ
실제 양산 과정에서 이런 경우 어떻게 해결하는지 고수님들의 답변 부탁드립니다.
P.S. SMT 과정과 NAND bad block 발생하는 것이 어떤 관계가 있을까요?
우연이겠지만, SMT 과정이 바뀜에 따라 NAND bad block 이 증가하고 있는 것 같이 느껴지네요..
128k 이내의 bootloader를 작성한 후(u-boot를 줄이는 것도 상관은 없습니다)거기서 u-boot를 두번째 block서부터 읽어서 CRC32 check 한 후 로딩하는 것입니다.
물론, 두벌을 넣어야 겠지요....^^
block number로 써보면
0: 128k 안에 들어가는 작은 부트로더, CRC32 decode가 가능한1 ~ 2: u-boot 1st3 ~ 4: u-boot 2nd
단 u-boot binary는 CRC32 code를 들고 있을 것...
NAND의 bad block은 개인적인 경험으로는 인가전압에 있었습니다.적절한 전압을 인가해 주시기 바랍니다.
ps> http://www.aesop.or.kr/?document_srl=442833#comment_442859 글의 이송호님의 답변도 아주 좋은 솔루션이 될 듯 합니다.
ps1> 위의 방법 중 CRC32 방법은 약간 무식한 방법일 수도 있지만, 예전에 이거 가지고 꽤 득본적이 있습니다...^^