리눅스 컴퓨터에서 임베디드 보드의 NAND Flash로 파일 굽기
리눅스 컴퓨터에서 임베디드 보드의 NAND Flash로 파일 굽기
지난 글에서 리눅스 컴퓨터에 있는 uboot, kernel, rootfs을 보드로 옮기기 위한 tftp 네트워크 IP 설정 등 연결 준비를 해봤었는데...
이제 uboot, kernel, rootfs 등을 보드의 NAND Flash로 구워보자.
작업에 앞서 현재 가지고 놀고 있는 보드에 이 녀석들이 들어가는 NAND 주소의 위치가 각각 다르기 때문에 정리를 하고 넘어갈 필요가 있을 거 같다.
Uboot (0x00000000~0x0003FFFF) / kernel(0x00040000~0x003FFFFF) / cramfs(0x00400000~0x007FFFFF) / ubifs(0x00800000~0x3FFFFFFF)
이 과정은 우선 PC에 있는 파일을 보드의 메모리로 옮긴다음 NAND의 공간을 지우고 각각의 위치에 쓰기를 해줘야 한다.
첫 번째로 uboot 파일을 보드의 메모리로 옮긴다음 NAND에 쓰고 부팅모드를 SD가 아닌 보드로 해보자.
우선 현재 환경을 확인해보는데 파일은 메모리의 c0008000으로 이동이 되는구나. 그리고 각각의 ip 설정을 한 후 ping 테스트까지 해봤으니 u-boot.bin 파일을 보드의 메모리로 옮겨본다.
[tftp c0008000 u-boot.bin]명령으로 PC의 u-boot.bin 파일을 보드의 메모리 c0008000으로 옮긴 상태이며 그 파일의 크기는 38000hex이다. 이렇게 옮겨진 파일을 NAND에 쓰기 위해서는 먼저 NAND의 해당 주소를 지워줘야 한다. u-boot.bin은 0x0의 위치에 자리를 잡을 것이므로 다음과 같이 먼저 해당 자리(0x0)를 파일의 크기만큼(40000) 지운다.
그리고 이 자리에 c0008000에 있는 u-boot.bin 파일을 쓴다.
쓰기는 nand wirte로 하며 메모리 주소 c0008000에 있는 파일을 0번지 부터 40000의 크기만큼 쓴다는 의미이다. 이렇게 u-boot.bin 파일을 보드의 NAND에 쓰기 했으니 이제 SD카드의 도움 없이 보드로 바로 부팅해도 부트로더를 시작하게 된다.
같은 방법으로 zImage와 root_mkfs.cramfs 파일을 c0008000으로 복사를 한 후 NAND의 각각의 자리에 쓰기를 하면 된다.
이렇게 PC에서 준비한 파일들을 보드의 메모리로 가져온 후 NAND의 각각의 위치에 쓰기를 한 후 보드의 부팅모드를 NAND로 변경을 하고...
보드를 재시작하면 SD카드의 도움 없이도 부팅이 된다.
이렇게 해서 오늘은 PC에 준비한 파일들을 보드로 옮겨와서 NAND에 쓰는 과정을 정리해봤다.