카테고리 보관물: Embedded Linux

U-Boot 에서 Nand Flash Memory 변경하기.

이 내용은 ADChips 의 uClinux와 함께 사용되는 u-boot 에서만 적용 될 수도 있습니다만, 혹시 다른 버전의 u-boot 에서도 적용될지 몰라 작성합니다.

 Nand Flash 의 경우 양산시 수급상황에 따라, 혹은 용량으로 인해 변경될 수 있지만 U-Boot 에서 지원하지 않는 메모리는 직접 Define 해줘야 사용이 가능합니다.
 이 문서는 메모리 타이밍과 관련된 부분을 다룹니다.
 먼저 u-boot 의 include 폴더의 config.h 파일을 보도록 합니다.  이 파일은 컴파일 시 스크립트에 의해 자동 생성되는 파일입니다.
 이 파일을 보면 u-boot 의 config 데이터가 어디에 있는디 include 되어있습니다.
ADChips 의 Eagle CPU 의 경우 u-boot 의 boot command 가 include/configs/eagle.h 로 지정되어있습니다.
/* Automatically generated – do not edit */
#include <configs/eagle.h>
eagle.h 파일을 열면 Nand Flash 들이 define 되어있습니다.
제가 가지고 있는 ADChips 의 U-Boot 의 경우
K9F1G08U0M, K9F2G08U0M, K9F4G08U0M, K9F8G08U0M, HY27UT084G2A , HY27UT088G2A
등이 define 되어있고, 필자가 사용하고자 하는 Nand Flash 는 K9F5608U0D 입니다.
K9F5608U0D 의 타이밍은 Alldatasheet 에서 찾아서 기입하도록 합니다.
/* K9F5608U0D */
#ifdef CONFIG_NAND_K9F5608U0D
#define NAND_ALECLE_SETUP       0       /* 10ns */
#define NAND_WE_WIDTH           2       /* 30ns */
#define NAND_RE_WIDTH           2       /* 30ns */
#define NAND_ALECLECE_HOLD      1       /* 10ns */
#endif
그리고 Nand Flash 디파인을 변경합니다.
#undef CONFIG_NAND_K9F1G08U0M
#undef CONFIG_NAND_K9F2G08U0M
#undef CONFIG_NAND_K9F4G08U0M
#undef CONFIG_NAND_K9F8G08U0M
#define CONFIG_NAND_K9F5608U0D
이제 하단에 플래시 관련 세팅 부분인 ‘FLASH and environment organization’, ‘NAND-FLASH stuff’ 부분을환인하고 필요한 부분은 변경합니다.
그리고 U-Boot 를 재빌드 하면 K9F5608U0D Nand Flash 를 사용할 수 있게 됩니다.