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

안녕하세요. u-boot 또는 Kernel의 NAND 부분을 보면서 궁금한 것이 있어 메일드립니다.

u-boot 또는 Kernel의 NAND ECC Algorithm 중에는 bch가 구현되어 있습니다.
이 bch 는 1bit error correct 능력이 있고, 실제 1bit만 오류가 났을 때 correct가 됩니다.

그런데 궁금한 것은 이 BCH를 써서 구한 Key값과 Micron(1bit 이상 correct 가능) 에서 구한 ECC값이 틀려 질문드립니다.

BCH 라는 것은 기본적으로 구현 방식이 틀려져도 ECC 값은 같아 될것으로 예상되는데요.
왜 이런 차이가 보이는 걸까요?

u-boot에서 사용된 bch algorithm과 micron에서 사용하는 bch algorithm이 틀려서 그런걸까요?
이리 저리 주어든기로는 polynomials 이런게 틀려서 그럴수도 있을꺼 같은데요.(이게 뭔지는 모릅니다.)
정말 틀린 알고리즘인지 궁금합니다.

0xff 로 채워진 512 Byte의 ECC 값을 비교해 보면 다음과 같습니다.
U-Boot : D7 EC 33 C6 69 53 80 => 실제 NAND에 저장되는 것은 XOR 한 값이 저장되므로 28 13 cc 39 96 ac 7f이 저장됩니다.
Micron : 09 73 87 9a b9 d4 9d

혹시 ECC를 잘 아시는 분은 답변좀 부탁드립니다.
감사합니다.

루비니

2014.07.22 23:22:16
*.218.12.26

기본 알고리즘은 같다고 해도 아마 구현방식이 달라 그럴걸로 보입니다. Micron은 1비트 이상 복구 가능하다고 했으니 더더욱.. 그래서 MTD의 S/W ECC를 쓰느냐, NAND Controller의 H/W ECC를 쓰느냐 일관성있게 써야하고, H/W ECC는 제조사마다 (사용된 NAND Controller IP에 따라) 다르다고 보는게 좋을겁니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인