안녕하세요 임베디드를 공부하고 있는 서정무입니다.

다름이 아니라 조금 어려운 문제에 직면해서 도움을 구하고 싶습니다.

일단 제 보드를 사양은

MCU : HMS30C7210

U-boot : u-boot 1.1.2.1

Kernel : linux 2.4.21

Nand Flash : K9F1208X0C

위와 같습니다. 일단 보드는 정상 적으로 작동을 하던 상황이었는데 갑자기 문제가 터져서 보았더니

다음과 같이 bad eraseblock으로 인하여 부팅이 안됩니다.

2.NAND device: Manufacturer ID: 0xad, Chip ID: 0x75 (Unknown NAND 32MiB 3,3V 8-bit)
create_bbt:Scanning device for bad blocks

Bad eraseblock 1416 at 0x0162 0000
Bad eraseblock 1417 at 0x01624000
Bad eraseblock 1418 at 0x01628000
Bad eraseblock 1419 at 0x0162c000
~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~
Bad eraseblock 2043 at 0x01fec000
Bad eraseblock 2044 at 0x01ff0000
Bad eraseblock 2045 at 0x01ff4000
Bad eraseblock 2046 at 0x01ff8000
Bad eraseblock 2047 at 0x01ff c000
Creating 6 MTD partitions on "NAND 32MiB 3,3V 8-bit":
0x00008000-0x0003c000 : "partition 0 - u-boot"
0x00048000-0x000ac000 : "partition 1 - kernel"
0x00200000-0x00700000 : "partition 2 - rootfs"
0x00700000-0x00c00000 : "partition 3 - /usr/modules/2.4.21/"
0x00c00000-0x01600000 : "partition 4 - /usr/lib/"
0x01600000-0x02000000 : "partition 5 - JM"

위의 bad block 체크는 커널에서 체크 할 때 생겼으며 bad block을 위에는 많이 줄여 놓았지만

사실 600개가 넘는 bad block 이 발생이 되었습니다. 여기 저기 찾아 보았는데 Nand flash는

기본적으로 bad block을 가지고 있으며 보통 많이 생겨바야 7~8개도 많이 생긴다 던데

저한테는 600개가 넘는 block들이 발생 되었습니다.

그리고 bad block들의 영역은 partition 5에 영역에서 발생되었습니다.

이외에 한두개가 같은 문제가 생겨서 확인을 해보았더니 역시 600개가 넘는 bad block들이

동일한 영역에서 발생이 되었드라고요..

먼가 잘못 된 냄새는 나는데.. 어디서 어떻게 짚으면서 원인을 찾아내얄지 너무 답답합니다.

참, 그리고 혹시나 해서 u-boot 커맨드 모드에서

nand erase 700000 1900000

위 영역을 삭제 해보았습니다... 그랬더니;;;

u-boot 영역이 지워 졌는지;; 그다음 부터는 보드가 전원은 들어오나 부팅이 안되더라구요;;

그래서 결론적으로 정리 하자면

1. bad eraseblock의 갯수가 비이상적으로 많다.

2. bad block의 영역은 partiton 5인 Application 영역이다.

3. bad block영역을 erase 할 경우 다시는 부팅이 되지않는다.

조언좀 부탁드립니다. 비슷한 증상이나 원인을 아시면 좀 부탁드립니다..