NAND 작업 진행 상황 (1)

2010. 10. 16. 18:50
1. 작업 배경

smdkc100 용 플랫폼으로 만들어낸 mango100 U-Boot 이미지 파일을 보드에 탑재했을 경우, NAND 에 대한 정보를 출력하다 다운. 고로 NAND device 에 대한 수정이 필요할 것이라는 가정을 세우게 됨.

2. 가정

시리얼과 SDRAM에 대한 초기화는 끝났다는 가정하에 작업을 진행 함.
smdkc100은 Onenand device를 사용하고 있고, mango100 은 NAND 디바이스를 사용.
그 때문에 mango100 에 맞는 NAND driver를 이식해 주어야 한다.

3. 방법 ([A] : add, [C] : Change, [D] : Delete)

다른 보드의 driver 이식
.../drivers/mtd/nand/s5pc100_nand.c 파일 생성 (s3c64xx.c 파일을 기반으로 복사 생성)

# cd drivers/mtd/nand
# cp s3c64xx.c ./s5pc100_nand.c


컴파일 할때 Object로 인식하도록 수정
.../drivers/mtd/nand/Makefile 수정

[A] 50 COBJS-$(CONFIG_NAND_S5PC100) += s5pc100_nand.o


Onenand 에 대한 설정을 NAND 에 대한 설정으로 전환
.../include/configs/smdkc100.h (.../common/Makefile 을 참조하여 수정하였음)

[A] #define CONFIG_NAND_S5PC100
[C] #define CONFIG_CMD_ONENAND -> CONFIG_CMD_NAND
[C] #define CONFIG_ENV_IS_IN_ONENAND -> CONFIG_ENV_IS_IN_NAND
[A] #define CONFIG_SYS_NAND_BASE
[A] #define CONFIG_SYS_MAX_NAND_DEVICE   1
[D] #define CONFIG_SAMSUNG_ONENAND
[D] #define CONFIG_SYS_ONENAND_BASE


필요한 Header파일 추가(s5pc100.h, s5pc1x0.h : 두파일 모두 S5PC100에 대한 Register address 정보를 포함하고 있음)

(1.3.4 버젼에서 가져옴)
# cp mango-2010-6/include/s5pc100.h
   U-Boot-2010.6.29/arch/arm/include/asm/arch-s5pc1xx/
# 복사한 s5pc100.h에 s5pc1x0을 붙여넣기..

s5pc100.h 파일 수정

[A] #define NFCONT_ENABLE (1<<0)
[A] #define __REG(x)  (*(vu_long *)(x)) // Register에 값 할당위해 함수 선언
[D] #include <asm/hardware.h>
[D] #include <asm/s5pc1xo.h> // 이미 s5pc100.h에 포함시켜줌

4. 향후 방향

NAND Controller에 대한 이해없이, 단순 Error를 제거하는 방식으로 작업을 진행해 나감. Driver 자체의 인식은 성공했으나 어떤 흐름으로 NAND device 를 초기화하는지는 정확히 이해하지 못하며 이 때문에 Device를 찾지 못한다고 생각된다. 전체적인 컴파일 에러들은 모두 잡았고, Image 파일의 생성도 문제없이 이루어지니, 앞으로의 작업은 NAND Controller의 초기화 흐름에 대한 이해후 (남용씨..) NAND device 코드(s5pc100_nand.c) 에 대한 직접적 수정을 해 나가 주길 바람. Chip ID를 확인한다던지.. 특별한 부분이 있을거라고 생각됨.


소스 : 남용님 컴퓨터의   /working/kdj/u-boot-2010.06/

작성자 : 김 동준 / djkim@q.ssu.ac.kr


'Boot Loader > NAND' 카테고리의 다른 글

NAND 작업 진행 상황(2)  (1) 2010.10.28
 

New Post