포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 1GB 입니다.

안녕하세요?

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


profile

인생은 연극이고 세상은 무대이다!

이솝 임베디드 포럼 운영 및 비즈니스와 관련된 것 이외에 E-Mail이나 메신저 및 휴대폰 등을 통한 개인적인 질문 및 답변은 받지 않습니다. 문의 사항은 이솝 임베디드 포럼 게시판을 이용해 주시면 감사하겠습니다.

엮인글 :
http://www.aesop.or.kr/index.php?mid=Board_Resources_S3C6410&document_srl=36642&act=trackback&key=535

2009.03.26 03:51:45
*.56.202.6

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

저만 삽질 한건지도 모르지만 혹시나 다른곳에서 삽질하고 계시는 분에게 도움이 되길 바랍니다.^^

profile

김재훈

2009.03.26 05:07:31
*.162.4.210

아~ 댓글도 다른 곳에 남겨 드렸는데.. 미리 공지하지 못한 점 죄송 합니다.

RootFS-aESOP6410.tar.gz 파일의 /home/root 디렉터리에 보시면, 미리 압축된 파일 시스템 이미지가 있습니다.
RootFS-aESOP6410.tar 로요...^^ 파일 시스템의 용량은 약 130메가 정도 되는데, NAND에 충분히 올라갑니다.
아마, NFS용 파일 시스템을 통째로 카피 하시면 /home/root 디렉터리에 RootFS-aESOP6410.tar 파일 때문에
NAND Flash 용량이 모자라게 됩니다. :)

그리고, NOR Flash 드라이버를 사용할 경우 파일 시스템 영역은 mtd3로 잡히며, 사용하지 않을 경우 mtd2로 잡힐 것 입니다.

도움 되시길 바랍니다. :)

List of Articles
번호 제목 글쓴이 날짜 조회 수
33 AESOP-6410 : linux-kernel-2.6.21.5 [4] JhoonKim 2009-03-22 4852
32 AESOP-6410 : u-boot-1.1.6 [4] 김재훈 2009-03-22 5213
31 AESOP-6410 : 개발 환경 구성과 케이블 이제현 2009-03-22 6011
30 AESOP-6410 : CP2102 USB to Serial Driver file [2] 김경호 2009-03-22 7548
29 AESOP-6410 : AESOP-6410 회로도 file [10] 이제현 2009-03-22 9052
28 AESOP-6410 : QT/X11 - Hello QT 컴파일 및 실행 방법 [2] 김재훈 2009-03-21 6818
27 AESOP-6410 : 멀티미디어 파일 재생 시험 방법 김재훈 2009-03-21 4990
26 AESOP-6410 : 보드 개발 환경 설정 방법 [1] 김재훈 2009-03-21 8479
25 AESOP-6410 : 자동 시작 프로그램 추가 및 제거 방법 김재훈 2009-03-21 6351
» AESOP-6410 : 보드 부팅 환경 설정 방법 [2] 김재훈 2009-03-21 9764
23 AESOP-6410 : GTK+ 2.0 - Hello-GTK 샘플 코드 컴파일 방법 [3] 김재훈 2009-03-21 5549
22 AESOP-6410 : AESOP-6410 용 DNW 및 USB Device Driver. file [3] 이제현 2009-03-21 8769
21 AESOP-6410 : Native GDB 사용 방법 [2] 김재훈 2009-03-21 5223
20 AESOP-6410 : SSH 및 SSH-Mount를 사용한 파일 전송 file [1] 김재훈 2009-03-21 5202
19 [공유]JAE를 사용하는 나노포커스 2Mega모듈도면입니다. file 신준석 2009-03-18 4866
18 3월 21일 하드웨어 세미나 자료 file 이제현 2009-03-17 4865
17 [공유]Nanofocus 2Mega 카메라모듈 도면입니다. file [4] 신준석 2009-03-17 5134
16 S3C64x0용 H.264 sample 영상 file [5] 고현철 2009-03-17 5390
15 S3C6400 - uBoot, UART Assembly Routine 분석 file [2] 김재훈 2008-08-19 6781
14 S3C6400 - uBoot, lowlevel_init.S 코드 분석 자료 file [6] 김재훈 2008-08-12 7748

사용자 로그인