위키에도 SD/MMC 에 U-boot 를 쓰고 부팅하는 방법이 나와있습니다만,
리눅스 상에서 SD 카드에 U-boot 를 직접 wirte 하고 SD 부팅하는 방법을 간단히(?) 정리해 보았습니다.
00. 준비물
- SD 카드 및 리더기
- Aesop-s5pv210 u-boot 소스코드
- 개발 환경이 구축된 리눅스 환경
01. u-boot 빌드
위키 페이지를 참조하여 u-boot 를 빌드합니다.
(http://www.aesop.or.kr/?mid=wiki&document_srl=342271&vid=AESOPV210)
02. sd_fusing 빌드
- u-boot 소스 디렉토리로 이동한 후, sd_fusing 디렉토리로 이동합니다.
#] cd /your/working/directory/uboot/sd_fusing
- 아래와 같은 파일들을 확인 가능하시며, sd_fusing 소스를 빌드합니다.
#] ls -l
-rw-r--r-- 1 chlrbgh0 chlrbgh0 1641 2010-05-11 08:17 C110-EVT1-mkbl1.c
-rw-r--r-- 1 chlrbgh0 chlrbgh0 845 2010-05-11 08:17 Makefile
-rw-r--r-- 1 chlrbgh0 chlrbgh0 4096 2010-05-11 08:17 c110.signedBL1_bin
-rw-r--r-- 1 chlrbgh0 chlrbgh0 6134 2010-05-11 08:20 sd_fdisk.c
-rwxr-xr-x 1 chlrbgh0 chlrbgh0 1813 2010-10-20 22:46 sd_fusing.sh
-rwxr-xr-x 1 chlrbgh0 chlrbgh0 1826 2010-10-28 13:51 sd_fusing
#] make
03. SD 카드를 삽입 후 dmesg 로 디바이스 파일 정보를 확인합니다.
#] dmesg | tail -3
[788358.561767] sde: sde1
[788358.572144] sd 24:0:0:2: [sde] Assuming drive cache: write through
[788358.572156] sd 24:0:0:2: [sde] Attached SCSI removable disk
reader_type1="/dev/sdb" ==확인한 디바이스 파일 정보로 변경=> reader_type1="/dev/sde"
- 수정이 완료되었으면, 스크립트를 실행하여 u-boot 를 SD 카드에 write 해 줍니다.
#] bash sd_fusing.sh /dev/sde
"스크립트를 실행시 아래와 같이 결과내역 출력"
/dev/sde reader is identified.
make sd card partition
./sd_fdisk /dev/sde
1+0 레코드 들어옴
1+0 레코드 나감
512 바이트 (512 B) 복사됨, 0.00223414 초, 229 kB/초
mkfs.vfat -F 32 /dev/sde1
mkfs.vfat 3.0.3 (18 May 2009)
BL1 fusing
16+0 레코드 들어옴
16+0 레코드 나감
8192 바이트 (8.2 kB) 복사됨, 0.0601494 초, 136 kB/초
u-boot fusing
544+0 레코드 들어옴
544+0 레코드 나감
278528 바이트 (279 kB) 복사됨, 1.65975 초, 168 kB/초
U-boot image is fused successfully.
Eject SD card and insert it again.
04. SD 카드를 이용한 u-boot 부팅
- SD 카드를 AESOP-S5PV210 보드에 장착합니다.
- CPU 모듈의 DIP 스위치를 변경합니다.(010000 => 001100)
간단히 그려보면 다음과 같습니다.
nand boot sd boot
□■□□□□ □□■■□□
■□■■■■ ■■□□■■
1 2 3 4 5 6 1 2 3 4 5 6
- 시스템에 전원을 인가한 후 sd를 이용하여 부팅되는 것을 확인 할 수 있습니다.
("bootargs 등은 사용하시는 환경에 맞게 재설정 과정 등이 필요합니다")
댓글