본문 바로가기

IT관련/dm355

dm355 (u-boot 1.2.0)에 512 byte page size nand yaffs 올리기

 

 

 

 

 

 

 

 

davinci 위키에 있는 내용은 단순하게
nfs 부팅후 mount 를 yaffs로 해서 yaffs image를 만드는 방법에 대해 나온다.

http://wiki.davincidsp.com/index.php?title=Put_YAFFS_Image_to_Flash


이 방법은 당장 yaffs를 올릴 수 는 있으나. 
제품 양산시에는 이렇게 할 수는 없지 않은가 -_-;

결론은 u-boot에서 위 처럼 만들어진 image를 yaffs 타입으로 구울 수 있어야 한다.

NAND device가 2048 page를 지원한다면 고민할 건덕지가 전혀 없을 수도 있다.

문제는 512 page size를 갖는 NAND의 경우인데, EVM에서 제공하는 u-boot와
davinci wiki나 기타등등 어느 곳에서도 그에 대한 소스는 제공해 주고 있지 않는다는 것이 문제였다.

첫번째로 가장 먼저 해야할 일은 yaffs rootfs image를 만드는 것이다.
우선 위키에 나온 위 방법처럼 NAND에 저장한 후, dump를 떠서 image file을 만든다.

$nanddump -f rootfs.yaffs /dev/mtd?

이렇게 만들어진 image는 OOB영역까지 dump정보를 가지고 있게 된다.

두번째 문제는 이제 만들어진 이미지로 u-boot에서 NAND에 굽는 문제다.
위 방법을 날로 먹기 위해 인터넷에 구글링을 수차례 트라이해 본 결과
관련 소스를 aesop과 형욱님이 만드신 소스를 찾을 수 있었으나.
찾은 소스는 리눅스 2.4.x kernel 버전의 MTD structure 구조를 사용하여 제작 된 소스였고,
u-boot 1.2.x는 2.6.x mtd structure를 사용하고 있었다. -_-
u-boot를 다운그레이드 할 것인가 -_- 살짝 고민하다가...
만들어 보기로 했다.

생각보다 만드는 과정은 그다지 어렵지 않았다.
u-boot source code중 수정해야 할 부분은
딸랑 cmd_nand.c 파일 하나 였다.

다른 nand_base.c나 nand_util.c 등의 함수를 그대로 사용하면 image를 쉽게 구울 수 있었다.

우선 cmd_nand.c에 nand yaffs 라는 명령을 만든다.
이부분은 do_nand 함수를 수정하여 case가 yaffs일 경우를 하나 추가하고,
그 부분에 만들어진 이미지를 굽기 위한 옵션값을 설정해 주면 된다.

만들어진 image는 ECC를 hardware ECC를 사용하지 않았으므로,
noECC 옵션과 image가 OOB 정보를 수록하고 있으므로 OOB 옵션을 켜고
write를 해주면 된다.

'IT관련 > dm355' 카테고리의 다른 글

dm355 mmc/sd check point  (0) 2009.02.27
dm355 sound programming  (0) 2009.02.27
dm355 - nvp7000 video 4 linux 2 driver 구현  (0) 2009.02.27
board debugging (dm355)  (0) 2009.02.27
install sshd on dm355  (0) 2009.02.27