삼성 S3C64X0 계열 프로세서 - 이솝 임베디드 포럼의 자료실 입니다. 포럼 회원으로 등록하신분만 열람이 가능합니다. 최대 업로드 가능한 용량은 500MB 입니다.
128
- Classic Style
- Zine Style
- Gallery Style
- Studio Style
- Blog Style
안녕하세요?
aESOP-S3C6410 보드의 경우 커널의 부트 아규먼트를 uBoot에서 커널로 넘겨줄 수 있습니다.
이외에 보드 환경 설정을 위한 다양한 환경 설정을 uBoot에서 지원 합니다.
따라서, 커널의 재 컴파일 작업이 없이도, 간단하게 커널의 부트 환경 설정을 변경할 수 있습니다.
1. NFS를 이용한 루트 파일 시스템 마운트 방법
최초로 이솝 보드를 받았을 때 NAND Flash에 루트 파일 시스템을 기록하기 위해서 또는 어플리케이션 등을 개발할 때는
NFS로 루트 파일 시스템을 마운트 하여 개발을 진행 합니다.
이 경우, uBoot의 명령 프롬포트에서 다음의 명령을 수행하면, NFS로 루트 파일 시스템을 마운트 합니다.
(해당 환경 설정을 수행하기 이전에, 호스트PC의 /nfsroot 디렉터리에 이솝 보드용 NFS 루트 파일 시스템이 있어야 합니다.)
setenv bootargs console=ttySAC0,115200 root=/dev/nfs rw nfsroot=[호스트PC의 IP주소]:/nfsroot/RootFS-aESOP6410 ip=[타깃 보드의 IP주소]:[호스트 PC의 IP주소]:[게이트 웨이 주소]:[서브넷 마스크]::eth0:off mem=128M ethaddr=[이더넷 컨트롤러의 MAC 주소]
saveenv => 환경 설정을 NAND Flash 저장
boot => 적용한 환경 설정을 가지고 부팅
예)
setenv bootargs console=ttySAC0,115200 root=/dev/nfs rw nfsroot=192.168.1.15:/nfsroot/RootFS-aESOP6410 ip=192.168.1.85:192.168.1.15:192.168.1.1:255.255.255.0::eth0:off mem=128M ethaddr=00:40:5c:26:0a:5b
saveenv
boot
2. uBoot의 IP주소 설정 방법
uBoot에서 호스트 PC의 TFTP를 이용한 다운로드를 하기위한 IP 주소 설정은 다음과 같이 합니다.
setenv gatewayip [게이트 웨이 주소];setenv ipaddr [타깃 보드 IP주소];setenv serverip [호스트 PC IP주소]
saveenv => 환경 설정을 NAND Flash 저장
예)
setenv gatewayip 192.168.1.1;setenv ipaddr 192.168.1.100;setenv serverip 192.168.1.15
saveenv
3. TFTP를 이용하여 리눅스 커널 이미지를 다운로드 한 후 부팅
리눅스 커널 개발 시, 커널을 수정하면서 테스트가 필요할 경우 다음과 같이 옵션을 넣어주면,
이솝 보드는 TFTP를 통하여 리눅스 커널 이미지를 다운로드 받은 후 다운로드 받은 커널 이미지를 가지고 부팅을 수행 합니다.
setenv bootcmd tftp c0008000 zImage-aESOP6410\;bootm c0008000
saveenv => 환경 설정을 NAND Flash 저장
4. TFTP를 이용하여 커널을 다운로드 받고 NAND Flash에 기록
다음은 TFTP를 이용하여 리눅스 커널 이미지를 다운로드 받고, 자동으로 다운로드 받은 커널을 NAND Flash에
기록하는 명령 입니다.
tftp 0xc0008000 zImage-aESOP6410;nand erase 60000 200000;nand write 0xc0008000 60000 200000
5. NAND Flash에 저장된 커널로 자동 부팅
다음의 명령을 입력하면, 이솝 보드는 부팅 시 자동으로 NAND Flash에 기록된 커널을 읽어서 부팅을 수행 합니다.
setenv bootcmd nand read C0008000 60000 200000\;bootm C0008000
saveenv => 환경 설정을 NAND Flash 저장
6. TFTP를 이용하여 부트로더를 다운로드 받고 NAND Flash에 기록
부트로더가 수정되었거나, 교체가 필요할 경우 다음의 명령을 입력하면, 부트로더를 다운로드 받고 이것을
자동으로 NAND Flash에 기록 합니다.
tftp 0xc0008000 uBoot-aESOP6410.bin;nand write 0xc0008000 0 30000
7. NAND Flash에 저장된 루트 파일 시스템을 마운트 하여 부팅
루트 파일 시스템이 NAND Flah에 저장되어 있을 경우 부트로더에서 다음의 옵션을 입력하면, NAND Flash에
저장된 루트 파일 시스템을 마운트하여 부팅 합니다.
setenv bootargs root=/dev/mtdblock3 rootfstype=yaffs2 console=ttySAC0,115200
8. NAND Flash에 루트 파일 시스템을 기록하는 방법
제공 되는 이솝 보드용 NFS 루트 파일 시스템으로 부팅을 수행 한 후, 다음의 명령을 이용하여 NAND Flash에
루트 파일 시스템을 기록할 수 있습니다. (NAND Flash 기록된 루트 파일 시스템으로 부팅하려면 7번을 참조하세요.)
# NFS로 부팅한 리눅스 프롬포트에서 수행
flash_eraseall /dev/mtd3
tar -C /mnt/nand -xf ~/RootFS-aESOP6410.tar
sync
umount /mnt/nand
aESOP-S3C6410 보드의 경우 커널의 부트 아규먼트를 uBoot에서 커널로 넘겨줄 수 있습니다.
이외에 보드 환경 설정을 위한 다양한 환경 설정을 uBoot에서 지원 합니다.
따라서, 커널의 재 컴파일 작업이 없이도, 간단하게 커널의 부트 환경 설정을 변경할 수 있습니다.
1. NFS를 이용한 루트 파일 시스템 마운트 방법
최초로 이솝 보드를 받았을 때 NAND Flash에 루트 파일 시스템을 기록하기 위해서 또는 어플리케이션 등을 개발할 때는
NFS로 루트 파일 시스템을 마운트 하여 개발을 진행 합니다.
이 경우, uBoot의 명령 프롬포트에서 다음의 명령을 수행하면, NFS로 루트 파일 시스템을 마운트 합니다.
(해당 환경 설정을 수행하기 이전에, 호스트PC의 /nfsroot 디렉터리에 이솝 보드용 NFS 루트 파일 시스템이 있어야 합니다.)
setenv bootargs console=ttySAC0,115200 root=/dev/nfs rw nfsroot=[호스트PC의 IP주소]:/nfsroot/RootFS-aESOP6410 ip=[타깃 보드의 IP주소]:[호스트 PC의 IP주소]:[게이트 웨이 주소]:[서브넷 마스크]::eth0:off mem=128M ethaddr=[이더넷 컨트롤러의 MAC 주소]
saveenv => 환경 설정을 NAND Flash 저장
boot => 적용한 환경 설정을 가지고 부팅
예)
setenv bootargs console=ttySAC0,115200 root=/dev/nfs rw nfsroot=192.168.1.15:/nfsroot/RootFS-aESOP6410 ip=192.168.1.85:192.168.1.15:192.168.1.1:255.255.255.0::eth0:off mem=128M ethaddr=00:40:5c:26:0a:5b
saveenv
boot
2. uBoot의 IP주소 설정 방법
uBoot에서 호스트 PC의 TFTP를 이용한 다운로드를 하기위한 IP 주소 설정은 다음과 같이 합니다.
setenv gatewayip [게이트 웨이 주소];setenv ipaddr [타깃 보드 IP주소];setenv serverip [호스트 PC IP주소]
saveenv => 환경 설정을 NAND Flash 저장
예)
setenv gatewayip 192.168.1.1;setenv ipaddr 192.168.1.100;setenv serverip 192.168.1.15
saveenv
3. TFTP를 이용하여 리눅스 커널 이미지를 다운로드 한 후 부팅
리눅스 커널 개발 시, 커널을 수정하면서 테스트가 필요할 경우 다음과 같이 옵션을 넣어주면,
이솝 보드는 TFTP를 통하여 리눅스 커널 이미지를 다운로드 받은 후 다운로드 받은 커널 이미지를 가지고 부팅을 수행 합니다.
setenv bootcmd tftp c0008000 zImage-aESOP6410\;bootm c0008000
saveenv => 환경 설정을 NAND Flash 저장
4. TFTP를 이용하여 커널을 다운로드 받고 NAND Flash에 기록
다음은 TFTP를 이용하여 리눅스 커널 이미지를 다운로드 받고, 자동으로 다운로드 받은 커널을 NAND Flash에
기록하는 명령 입니다.
tftp 0xc0008000 zImage-aESOP6410;nand erase 60000 200000;nand write 0xc0008000 60000 200000
5. NAND Flash에 저장된 커널로 자동 부팅
다음의 명령을 입력하면, 이솝 보드는 부팅 시 자동으로 NAND Flash에 기록된 커널을 읽어서 부팅을 수행 합니다.
setenv bootcmd nand read C0008000 60000 200000\;bootm C0008000
saveenv => 환경 설정을 NAND Flash 저장
6. TFTP를 이용하여 부트로더를 다운로드 받고 NAND Flash에 기록
부트로더가 수정되었거나, 교체가 필요할 경우 다음의 명령을 입력하면, 부트로더를 다운로드 받고 이것을
자동으로 NAND Flash에 기록 합니다.
tftp 0xc0008000 uBoot-aESOP6410.bin;nand write 0xc0008000 0 30000
7. NAND Flash에 저장된 루트 파일 시스템을 마운트 하여 부팅
루트 파일 시스템이 NAND Flah에 저장되어 있을 경우 부트로더에서 다음의 옵션을 입력하면, NAND Flash에
저장된 루트 파일 시스템을 마운트하여 부팅 합니다.
setenv bootargs root=/dev/mtdblock3 rootfstype=yaffs2 console=ttySAC0,115200
8. NAND Flash에 루트 파일 시스템을 기록하는 방법
제공 되는 이솝 보드용 NFS 루트 파일 시스템으로 부팅을 수행 한 후, 다음의 명령을 이용하여 NAND Flash에
루트 파일 시스템을 기록할 수 있습니다. (NAND Flash 기록된 루트 파일 시스템으로 부팅하려면 7번을 참조하세요.)
# NFS로 부팅한 리눅스 프롬포트에서 수행
flash_eraseall /dev/mtd3
tar -C /mnt/nand -xf ~/RootFS-aESOP6410.tar
sync
umount /mnt/nand
아~ 댓글도 다른 곳에 남겨 드렸는데.. 미리 공지하지 못한 점 죄송 합니다.
RootFS-aESOP6410.tar.gz 파일의 /home/root 디렉터리에 보시면, 미리 압축된 파일 시스템 이미지가 있습니다.
RootFS-aESOP6410.tar 로요...^^ 파일 시스템의 용량은 약 130메가 정도 되는데, NAND에 충분히 올라갑니다.
아마, NFS용 파일 시스템을 통째로 카피 하시면 /home/root 디렉터리에 RootFS-aESOP6410.tar 파일 때문에
NAND Flash 용량이 모자라게 됩니다. :)
그리고, NOR Flash 드라이버를 사용할 경우 파일 시스템 영역은 mtd3로 잡히며, 사용하지 않을 경우 mtd2로 잡힐 것 입니다.
도움 되시길 바랍니다. :)
RootFS-aESOP6410.tar.gz 파일의 /home/root 디렉터리에 보시면, 미리 압축된 파일 시스템 이미지가 있습니다.
RootFS-aESOP6410.tar 로요...^^ 파일 시스템의 용량은 약 130메가 정도 되는데, NAND에 충분히 올라갑니다.
아마, NFS용 파일 시스템을 통째로 카피 하시면 /home/root 디렉터리에 RootFS-aESOP6410.tar 파일 때문에
NAND Flash 용량이 모자라게 됩니다. :)
그리고, NOR Flash 드라이버를 사용할 경우 파일 시스템 영역은 mtd3로 잡히며, 사용하지 않을 경우 mtd2로 잡힐 것 입니다.
도움 되시길 바랍니다. :)
aESOP Embedded Forum Site Technical Note
Sites validated CSS, XHTML & IE7, IE8, FireFox, Opera and Safari Accessiable. Generator & Powered by Zeroboard XE. This site inspired by Slabovia and developed by WTA and modified by JhoonKim











nand flash를 rootfs로 사용하려면 몇가지 수정이 필요합니다.
1. 일단 kernel의 MTD 크기를 조정해야 합니다.
MTD의 kernel영역이 0x60000~0x200000 (크기:0x1A0000)로 되어 있는데,
kernel의 실제 크기가 0x1A0000를 넘기 때문에 그냥 nand에 write하면 kernel이 깨져 버립니다.
(이거 아는데 무지 오래 걸렸네요..T_T)
/opt/linux-2.6.21.5-aesop6410-090320/arch/arm/plat-s3c24xx/common-smdk.c파일을 열어서
160줄의 256을 384로 수정하고,
165줄의 256을 384로 수정하고,
166줄의 앞에 2를 3으로, 뒤의 256을 384로 수정한 후.
make를 새로 해서 커널을 다시 올립니다.
정상적으로 수정이 되었다면 커널 부팅시 중간에 MTD관련 메시지가 아래처럼 바뀝니다.
................ 변경전 ................
0x00000000-0x00040000 : "Bootloader"
0x00040000-0x00200000 : "Kernel"
0x00200000-0x10000000 : "File System"
................ 변경후 ................
0x00000000-0x00060000 : "Bootloader"
0x00060000-0x00300000 : "Kernel"
0x00300000-0x10000000 : "File System"
2. 위에있는 8번의 명령중 한줄이 빠졌습니다.
flash_eraseall /dev/mtd2
mount -t yaffs2 /dev/mtdblock2 /mnt/nand
tar -C /mnt/nand -xf RootFS-aESOP6410.tar.gz
sync
umount /mnt/nand
여기까지 하시면 nand에 write를 성공한 것입니다.
참고로 RootFS-aESOP6410.tar.gz은 새로 만드셔야 합니다.
크기가 너무 커서 nand에 올릴수가 없거든요.
저는 /usr/share랑 /usr/lib를 거의 다 지웠습니다.
그리고 host에서 만들때 tar옵션에서 z를 붙이면 안되더군요.
busybox의 tar는 gzip을 지원하지 않아서 그런가 봅니다.
3. 이제 위의 7번 명령을 약간 수정하시면 됩니다.
setenv bootargs root=/dev/mtdblock2 rootfstype=yaffs2 console=ttySAC0,115200
저만 삽질 한건지도 모르지만 혹시나 다른곳에서 삽질하고 계시는 분에게 도움이 되길 바랍니다.^^