검색결과

'Boot Loader/NAND'에 해당되는 글 2건

NAND 작업 진행 상황(2)

2010. 10. 28. 21:09

NAND 작업 진행 상황(1) 까지의 내용을 계속하여 진행.


가정 : mango-2010-6 버전에 s5pc100의 nand driver가 존재 할 것이다.

근거 : mango-2010-6/cpu/s5pc1xx/nand.c 파일 존재.



진행 : mango-2010-6/cpu/s5pc1xx/nand.c   ->  U-Boot-2010.6.29   이식

결과 : NAND 드라이버 인식 .




진행과정 :
NAND 작업 진행 상황(1) 에서


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

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

의 과정을,

   [mango-2010-6/cpu/s5pc1xx/]#  cp nand.c  U-Boot-2010.6.29/drivers/mtd/nand/s5pc100_nand.c

  로 대체하여 진행.


U-Boot-2010.6.29/drivers/mtd/nand/s5pc100_nand.c 수정내용
[C] line27>  #define <regs.h> -> #define <asm/arch-s5pc1xx/s5pc100.h>
변경이유 : regs.h의 내용은, s5pc100의 레지스터 내용을 참고하므로, 대체.

[D] line44, 55, 77>  .useecc
삭제이유 : 컴파일 에러, 정확한 원인은 확인하지 못했음. 삭제처리 후, 정상적인 컴파일 실행.

U-Boot-2010.6.29/include/nand.h 수정내용

[D] line33>  extern int board_nand_init(struct nand_chip *nand);
삭제이유 : s5pc100_nand.c 에서, 이미 #include <nand.h> 이므로, extern erro발생.




작업 결과의 의미
prompt를 띄우기 위해서는 NAND 초기화 sequence를 지나야 한다.
NAND가 동작하던 그렇지 않던, 부팅을 해야 한다.
부팅이 되어야, 다른 것들에 접근해보고, 생각해볼 수 있기 때문이다.
prompt를 띄우는 것. 불완전 하더라도, 부팅을 완료하는 것.
그런의미에서, 의미 있는 결과가 아닌가 생각된다.


 


생각해본 내용
드라이버의 동작을 이해하고 있다면, "NAND 작업 진행 상황(1)"  에서, s3c64xx.c을 기반하여,간단한 코드 수정만으로 nand를 초기화 시킬 수 있을 것이라 생각된다. ID를 추가시키는 것등으로 말이다.(nand의 동작상으로 버전상 큰차이는 없을 것이라 생각되기 때문이다. LAN9220의 경우 가 그 예이며, 실제로 No NAND DEVICE found!!! 라는 메세지를 출력했다.)  하지만, 우리는 드라이버의 동작을 알지 못하기 때문에, mango-2010-6(망고버전)에서 제공하는 nand driver를 U-Boot-2010.6 버전에 맞게 수정하여, NAND를 인식 시켰다.

NAND 다음 단계는  serial 관련 초기화라고 추측 된다.

NAND는 정상적으로 인식되었지만, In: serial , Out: serial, Err: serial 에서 멈춘 것인지,
아니면,
NAND가 정상적으로 동작되지 않아서, In: serial , Out: serial, Err: serial로 진입하지 못한 것인지를 판단하기 위해여 더 많은 공부와 분석이 필요할 것으로 생각된다.


하나를 해결하면, 하나가 막히고, 하나를 해결하면 하나가 막히고...
해결을 하기위해선 엄청난 시간이 걸린다.
근본적으로 드라이버가 코드로 어떻게 동작 하는지를 공부해야할 필요성을 느낀다.


 
다음 작업?
NAND 가 올바로 인식되었나 확인.
다음단계 초기화 내용 확인. (In: serial , Out: serial, Err: serial 이라 추측됨)

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

NAND 작업 진행 상황 (1)  (3) 2010.10.16
 

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