기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요.

NAND bad block 처리에 관한 질문이 있어서 글을 남겼습니다.

 

먼저.. u-boot version 1.1.6 사용중입니다.

 

NAND PARTITION TABLE

              address     size
u-boot   0x0            0x40000

kernel    0x40000    0x300000

...           ...              ...

 

NAND Flash Memory를 부팅장치로 사용하고 있습니다.

Kernel 압축을 풀지 못하는 경우가 한번씩 나와서 확인해 보니 kernel 영역에 bad block이 원인이었습니다.

아마도 u-boot에서 NAND bad block 처리를 하지 못하는 것 같습니다.

 

구글링해 보니 u-boot의 NAND driver를 update하거나 partition table을 바꾸라고 합니다.

partition table을 변경하는 것은 어떻게 하면 될 것 같습니다만,

NAND driver를 교체하는 것은 100% 된다는 확신이 없어서 아직 시도해 보지 못하고 있습니다.

 

이런 경우에 어떻게 해야하는지 고수님들의 답변 부탁드리겠습니다.

 


funmoney

2011.08.02 20:11:20
*.169.251.167

2가지 방법이 있을 듯 합니다.

 

1. u-boot 2011년 03월 이후버전에서 smdk6400 을 지원하고 있는데 이것을 포팅하여 사용하시는 방법

       이때는 nand 에 구울 때는 nand write.jffs2 를 읽을 때는 nand read.jffs2 를 사용하시면 bad block skip 이 적용됩니다.

    ( ramdisk 를 굽든 kernel 을 굽든 nand write.jffs2/read.jffs2 를 사용해야 합니다. jff2 라는 확장명은 파일시스템을 의미하는

      것이기도 하지만, nand 의 ecc 영역(spare 영역) 의 처리방식을 의미하기도 합니다. 따라서 u-boot 에서는 ecc 영력 처리

      방식의 의미를 가짐으로 write/read 시에 jffs2 를 사용해야 공장 출하시에 기록된 bad block 과 사용중에 발생한 bad block

      들을 write 할때는 read  할때 skip 할 수 있습니다. 그냥 nand write / nand read 사용하면 bad block 이고 뭐고 없이

      기냥 쓰고 읽어 버립니다. )

 

    ( 2011 년 u-boot 는 아직 정식 release  가 아닌 것 같기도 합니다. 저도 포팅하는데 arm core 관련된 부분에서 이상동작이

      발생되어 수정한 부분들이 있었습니다. )

 

2. 두번째 방법은 u-boot 정식 release 버전중에서 nand write.jffs2 / nand read.jffs2 를 가지고 있는 것들중 님께서 현재

    사용하고 계신 것과 소스코드등의 구성이 가장 유사한 버번을 찾아서 거기에 있는 nand 관련 부분을 님의 부트로더로

    가져와서 사용하는 것입니다. 이것도 약간의 수정은 있어야 하겠으나 삼성의 경우 nand interface 는 대부분 동일하게

    구성되어 있으므로 register map 과 gpio pin 설정 그리고 기타 컴파일 시에 발생하는 error 들을 잘 잡아 주면 될 듯 합

    니다. 

 

우선 1번째 방법을 board 수준에서의 다른 점만 수정후에 동작을 확인해서 정상동작 하면 1번 방법이 재일 쉽겠지요.

혹시나 1번 방법중 문제가 발생했는데 clock 이나 stack 관련부분에서 멈추는 증상이 발생된다면 디버거 장비를 사용해서

문제파악 후에 수정 진행해야 합니다. 어셈부분도 수정해야할 가능성이 많습니다.

 

적다보니 둘다 쉬운 일은 아니네요 ....

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
5368 C110 소비전류가 어떻게 되나요? [6] 땜철학자 2012-05-22 1517
5367 [질문 수정했음] RTC 드라이버 포팅 관련 .... file [5] 장석원 2011-07-05 1516
5366 ffserver 질문드립니다. file [3] 이호석 2013-02-20 1514
5365 [S5PV210] CUPS 1.6.2 포팅 오류 때끼때끼 2013-06-11 1513
5364 [완료] mplayer에서 wma파일 재생관련 [5] 박세웅 2007-08-30 1512
5363 DDR DRAM 붙일때 주의점이 있나요? [3] 이종민 2009-03-05 1512
5362 안드로이드에서 파일 암호화/복호화 사용에 관한 질문입니다. [2] 김영일 2010-02-23 1512
5361 미디어 플레이어의 네트워크 스트림 구현에 대한 문의 [6] whiterub 2012-10-05 1512
5360 arndale 보드에서 opencl 사용하는 방법에 대한 싸이트 김영준 2013-09-10 1512
5359 uboot에서 jpeg lib [3] 양파링 2014-02-04 1512
5358 SMDK2440A 타겟보드에서 ping 사용하기...ㅠㅠ <= 133에 추... [2] 류민희 2006-08-11 1511
5357 노트 PC에 grub rescue> prompt가 뜨는데??? [3] 요셉 2010-07-08 1511
» [해결] NAND bad block 관련 질문 [1] 박영기1 2011-08-02 1511
5355 임베디드 리눅스 메모리맵 작업 관련...... [1] blue0sky 2011-12-29 1511
5354 안드로이드에서 Socket데몬 실행시 퍼미션 문제 [2] 사당 2013-02-16 1511
5353 Exynos4(S5PV310) Module loading 문제. [2] 준성아빠 2012-01-02 1510
5352 U-boot에서 usb storage 인식하기. 최종환 2008-12-30 1509
5351 Framework 개발 서비스 연동? 질문 드립니다. [3] Supsupi 2014-01-17 1508
5350 uart... CTS/RTS TEST에 대해서 의견 부탁드립니다. [2] 이성호 2009-11-27 1507
5349 libmpfr.so.1 : cannot open shared object file: No such f... [4] 하민근 2010-11-17 1507

사용자 로그인