NAND를 사용하게되면 제품개발자들은 제품의 양산을 생각하게 되는데,
아래와 같이 Gang이라는 제품을 이용하여, NAND를 Write를 하여 양산을 하게된다.
양산을 진행을하게되면 Gang을 가지고 있는 업체에 위탁하여 write를 한다.
양산을 하게될 경우, 처음 겪는문제가 NAND의 불량률과 각종 Device 관련 불량률이다.
이에 관련하여 간단한 방법소개를 한다.
Gang의 대체적으로 기능을 보면, Factory Bad Block의 Skip 기능을 기본적으로 가지고 있는 것 같으며, 본인도 다시 NAND 양산을 해봐야 정확한 문제점을 파악이 가능할 것 같다.
http://www.adc.co.kr/download/EISC_Gang/GangWriter_Manual.pdf
http://www.mvtool.co.kr/products/product.php?query=view&code=010104&lv=1&no=187&lang=
- 양산-A
- 양산방법 : Nand Image를 Gang 업체에게 전달하여 이를 양산
- 양산문제 : ECC와 Bab Block에 관한 문제점 처리가 안되는 경우가 발생
- 양산-B
- 양산방법: NAND Image와 ECC 정보를 전달하여 Gang 업체에서 양산
- 양산문제: ECC 처리부분의 문제발생여지가 존재하며 있으며, Bad block에 관한 문제 발생
* Bad Block의 문제보다는 ECC와 File Meta Data 문제가 발생소지로 보인다.
* 상황에 따라 BBM도 문제소지가 있다. - 양산-C (본인이 양산했던방식)
- 양산방법: 1st 와 2nd loader인 U-Boot만 Gang 업체 전달
- 추가방법: U-BOOT에서 Kernel과 File System을 굽는다.
- 추가방법: U-BOOT에서 삽입된 QC프로그램으로 기본 자체검증 (사람확인)
- 추가방법: 최종제품 검증 및 확인
본인이 양산했던 시절은, BBT가 생겨나기 시작했던 시절이라, U-BOOT과 Kernel 사이에
BBT도 호환이 되지 않았던 시절이며, 이를 일일이 수정을 하면서 했던 시절이다.
현재 NAND의 양산이 어떻게 되는지는 궁금하지만, 많이 궁금하지는 않다
왜냐하면 요즘은 거의 eMMC , SDDISK 및 다른 UFS 다른 매체들이 많아져있기 때문이다.
본인이 사용한 방식은 양산-C이며, NAND의 1st Block은 제조사가 보장이 해주기에 1st Bootloader에서는 Error가 발생할 수가 없다.
안정성을 위해서 UBOOT도 2개로 했는지 1개로 했는지 기억이 잘안난다.
위에서도 설명했듯이 UBOOT와 KERNEL에서 BBT가 호환이 되지 않던 시절이라 이부분을 강제로 변경했으며,
양산을 위해 다른 부가적인 기능을 많이 넣었던걸로 기억한다.
그리고 더불어 Upgrade Fail 위해서는 Kernel/Filesystem 부분을 두개로 나누어서 썼던걸로 기억한다.
- BBT 관련사항
BBT인 경우 2개 Block으로 구성이 되며, 하나는 여분으로 사용된다.
현재 솔직히 많이 기억이 잘 안난다. 추후 MTD 관련부분과 Filesystem을 정리를 한다면,
이부분을 다시 정리하겠다.
- 불량률 관련사항
미리 진단하고 감지하는 프로그램을 넣어야한다. 이를 U-BOOT에 간단히 넣어 기본 Device Test를 진행을
하고 문제가 있는 Device는 미리 교체를 한다.
- 현재 제안해 주시는 방식 및 정리
아직도 NAND로 양산을 하게되면 본인도 어떻게 변화 되었는지 궁금하다.
http://www.aesop.or.kr/Board_Community_QandA/34012
http://www.adc.co.kr/download/EISC_Gang/GangWriter_Manual.pdf
http://www.iwecom.co.kr/ce/forum_view.asp?board_idx=22794
고도리님께서는 TI로 말하자면, 1st boot Loader인 UBL에서 CRC check를 넣고 U-BOOT를 각각 2개식 넣어 굽자고 제안을 했고요.
1 ~ 2: u-boot 1st
3 ~ 4: u-boot 2nd
저는 개인적으로 bad block 문제는 power-cut 문제와 전압문제인것 같습니다.
이미 한번 power-cut은 경험을 했고요.
funmoney님께서는 최신정보를 주시는 것 같습니다. 정말 감사합니다.
이부분은 저도 경험을 하지 못해 추후 다시 한다면 이방법을 으로 물어보도록하겠습니다.
양산하는 공장에서 bad block을 skip을 할수 있는 방법이 있다는 것은 몰랐으며, 그래서 상위에서 Gang 에대해 다시 보게되었네요.
Gang에서 지원이 되는것 같습니다. (bad block skip)
(예전에 이것때문에 많이 문제가 발생했던걸로 기억해서 시간이 많이 흘렀으니 많이 변화되어있겠죠)
개인적으로는 처음부터 bad block이 아닌이상 u-boot loader에 저장할 것이 없다면,
거의 이상이 없는 걸로 알고 있습니다.
그래서 저의 경우는 u-boot를 하나를 사용을 했고요. kernel 역시 하나를 사용하였습니다.
다만, 위에서 처럼 bad block skip를 하기위해서 u-boot 까지 굽고 network를 이용하여
uboot에서 bad block을 찾아가며 kernel과 filesystem을 write를 했습니다.
upgrade 안정성을 위해서 kernel과 filesystem을 두개를 사용을 했습니다.
upgrade 중 문제가 발생을 하면 복구가 가능하도록 요.
http://www.aesop.or.kr/Board_Community_QandA/33948
3. 양산방법 정리
만약 다시 양산을 할 기회가 온다면, 그때 다시 한번 Gang Spec과 ECC의 기능
및 Filesystem Meta 정보 BBM(BBT) 를 보고 다시 한번 자세히 봐야할 것 같네요.