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
 

New Post