2009. 4. 2. 20:20
순대보드 u-boot - 1
2009. 4. 2. 20:20 in 혼자서 놀기.../순대보드(AHAV9302)
uboot라는 녀석을 설치하려 한다. 임베디드 환경에서 가장 많이 사용하는 부트로더라고 한다.
일단 uboot의 소스를 다운로드 받자!!
현재의 버전은 u-boot-1.1.6 u-boot-1.3.4 이고, 소스포지의 uboot 사이트에서 다운로드를 받을 수 있다.
http://sourceforge.net/project/showfiles.php?group_id=65938
최신 버전이 1.1.6인지 1.3.4인지 정확히 모르겠다..
-_- 소스포지에서는 1.1.6으로 나오긴 하는데.. ftp://ftp.denx.de/pub/u-boot에 가보니 1.3.4 버전이 보이네.. ㅋㅋ
콘솔 상에서 다운로드를 받아도 된다.
$ cd /opt/tools/crus
$ wget ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.6.tar.bz2
...
$ wget ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.6.tar.bz2
...
다운로드 받은 u-boot를 /opt/arm9sbc/ahav/backup 에 복사한 후 작업을 하도록 한다.
$ copy u-boot-1.1.6.tar.bz2 /opt/arm9sbc/ahav/backup
$ cd /opt/arm9sbc/ahav
$ . .init-ahav
$ cd ${AHAV_BUILD_DIR}
$ tar -C ${AHAV_BUILD_DIR} -xjf ${AHAV_BACKUP_DIR}/u-boot-1.1.6.tar.bz2
$ cd u-boot-1.1.6
$ cd /opt/arm9sbc/ahav
$ . .init-ahav
$ cd ${AHAV_BUILD_DIR}
$ tar -C ${AHAV_BUILD_DIR} -xjf ${AHAV_BACKUP_DIR}/u-boot-1.1.6.tar.bz2
$ cd u-boot-1.1.6
압축을 푼 uboot의 루트 디렉토리의 모양새는 아래와 같다.
일단 기본적으로 u-boot에서 제공하는 파일들은 위에서 보는 것과 같고, 실제 작업을 해야하는 부분들이 존재한다.
실제 순대보드의 메인칩 EP9302는 u-boot에서 기본적으로 제공을 하지 않는다.
하지만, EP9301이라고 하는 비슷한 녀석의 패치파일이 웹상에 있으므로 그놈을 구해서 이리 저리 수정을 해주면 된다고 한다.
일반적으로 u-boot의 작업은 그렇게들 이루어진다고 한다.
제일 좋은 것은 본인이 구현하려는 녀석에 관한 모든 정보가 공개된 것이지만, 그렇지 않다면, 최대한 비슷한 녀석을 구해서 수정을 해줘가며 작업들을 한다고 한다.
EP9301에 대한 패치파일이다.
이 패치를 다운로드 받아서 /opt/arm9sbc/ahav/backup에 저장한다.
그리고 u-boot-1.1.6 디렉토리로 이동하여 패치해준다.
아.. 그전에 리눅스에 패치 툴이 깔려있지 않은 경우 설치를 해주어야 한다.
$ cd ${AHAV_BUILD_DIR}/u-boot-1.1.6
$ sudo apt-get install patch
...
$ patch -p1 -E -d ${AHAV_BUILD_DIR}/u-boot-1.1.6 < ${AHAV_BACKUP_DIR}/u-boot-ep93xx.patch
$ sudo apt-get install patch
...
$ patch -p1 -E -d ${AHAV_BUILD_DIR}/u-boot-1.1.6 < ${AHAV_BACKUP_DIR}/u-boot-ep93xx.patch
패치를 실행한 뒤의 모습이다.
아래는 앞으로 우리가 해주어야 할 작업들을 나열한 것이다.
[U] Makefile
[U] include/asm-arm/mach-types.h
[N] include/asm-arm/arch-ep93xx/ep93xx.h
[N] include/configs/ahav9302.h
[N] board/ahav9302/Makefile
[N] board/ahav9302/config.mk
[N] board/ahav9302/u-boot.lds
[N] board/ahav9302/ahav9302.c
[N] board/ahav9302/flash_cfg.S
[N] board/ahav9302/pll_cfg.S
[N] board/ahav9302/sdram_cfg.S
[R] cpu/arm920t/ep93xx/Makefile
[R] cpu/arm920t/ep93xx/cpu.c
[R] cpu/arm920t/ep93xx/eth.c
[R] cpu/arm920t/ep93xx/interrupts.c
[R] cpu/arm920t/ep93xx/lowlevel_init.S
[R] cpu/arm920t/ep93xx/speed.c
[U] include/asm-arm/mach-types.h
[N] include/asm-arm/arch-ep93xx/ep93xx.h
[N] include/configs/ahav9302.h
[N] board/ahav9302/Makefile
[N] board/ahav9302/config.mk
[N] board/ahav9302/u-boot.lds
[N] board/ahav9302/ahav9302.c
[N] board/ahav9302/flash_cfg.S
[N] board/ahav9302/pll_cfg.S
[N] board/ahav9302/sdram_cfg.S
[R] cpu/arm920t/ep93xx/Makefile
[R] cpu/arm920t/ep93xx/cpu.c
[R] cpu/arm920t/ep93xx/eth.c
[R] cpu/arm920t/ep93xx/interrupts.c
[R] cpu/arm920t/ep93xx/lowlevel_init.S
[R] cpu/arm920t/ep93xx/speed.c
[U]로 표시된 것은 update(수정)을 의미하고, [N]은 new(새로 생성)을 의미한다. 마지막으로 [R]은 위의 패치를 풀어 생성된 파일을 의미한다.
중점적으로 작업을 해주어야 할 부분은 빨간 색으로 되어 있는 부분이 될 것이다. 녹색으로 된 부분도 이리 저리 세팅에 관련 된 부분은 수정을 해주어야 할 것이고, [R]로 표시된 부분은 왠지 ep93xx에 공통적으로 필요한 녀석들일것 같다는 느낌이.. 그냥 두어도 될 듯하다..
참고로 include/asm-arm/arch-ep93xx/ep93xx.h는 칩 제조사인 Cirrus Logic에서 EP93xx 시리즈를 내어 놓을 때, 레지스터의 주소 등을 정의해 놓은 헤더파일이라고 한다. 이녀석을 참조할 필요가 있다고 한다.
당근이의 AVR 갖구 놀기 까페 참조..
'혼자서 놀기... > 순대보드(AHAV9302)' 카테고리의 다른 글
순대보드 u-boot - 3 (0) | 2009.08.11 |
---|---|
순대보드 u-boot - 2 (0) | 2009.08.11 |
순대보드 CrossCompile 환경 - 2 (0) | 2009.04.01 |
순대보드 CrossCompile 환경 - 1 (0) | 2009.03.31 |
순대보드 사전 작업?? (0) | 2009.03.30 |