'u-boot'에 해당되는 글 3건
- 2009.08.11 순대보드 u-boot - 3
- 2009.08.11 순대보드 u-boot - 2
- 2009.04.02 순대보드 u-boot - 1 4
2009. 8. 11. 20:43
순대보드 u-boot - 3
2009. 8. 11. 20:43 in 혼자서 놀기.../순대보드(AHAV9302)
순대보드의 u-boot를 올리기 위한 마지막 단계(?)로 순대보드에 특화된 동작을 하는 파일을 등록하는 부분이다.
먼저 "include/configs/ahav9302.h"를 생성하고 필요한 부분들을 등록하는 작업을 해야한다.
"순대보드 u-boot - 1"에서 순대보드와 그나마 비슷한 EP9301 패치파일을 사용해서 cs-e9301에 대한 패치를 한 적이 있다. 그리하여 "include/configs/cs-e9301.h"를 참고하여 ahav9302.h를 작성할 수 있다.
ahav9302.h는 순대보드의 u-boot에서 사용하게 될 여러 환경변수 같은 것을 등록하게되는 파일이다.
이 파일의 전체적인 구조는 다음과 같다.
#ifndef__CONFIG_H
#define__CONFIG_H
/*
1. 부트로더 변수의 초기값 및 모니터 설정 등록.
2. 아키텍쳐, 보드, 클럭, MMU 등의 설정.
3. 콘솔 접속을 위한 시리얼 설정 및 등록.
4. 네트웍 설정.
5. 메모리 맵 설정.
6. 플래쉬 메모리 설정.
7. 기타 등등.
*/
#endif
#define__CONFIG_H
/*
1. 부트로더 변수의 초기값 및 모니터 설정 등록.
2. 아키텍쳐, 보드, 클럭, MMU 등의 설정.
3. 콘솔 접속을 위한 시리얼 설정 및 등록.
4. 네트웍 설정.
5. 메모리 맵 설정.
6. 플래쉬 메모리 설정.
7. 기타 등등.
*/
#endif
위의 내용을 실제 구현한 ahav9302.h 파일이다.
#ifndef __CONFIG_H
#define __CONFIG_H
/* 1. 부트로더 변수의 초기값 및 모니터 설정 등록. */
#define CONFIG_ETHADDR 00:60:6E:F0:00:02
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 192.168.100.181
#define CONFIG_SERVERIP 192.168.100.250
#define CONFIG_GATEWAYIP 192.168.100.254
#define CONFIG_BOOTDELAY 3
#define CONFIG_CMDLINE_TAG 1
#define CONFIG_INITRD_TAG 1
#define CONFIG_SETUP_MEMORY_TAGS 1
#define CONFIG_BOOTARGS "console=ttyAM0,115200 root=/dev/ram0 rw init=/sbin/init initrd=0xc0800000"
#define CONFIG_BOOTFILE "ahav9302.img"
/* 2. 아키텍쳐, 보드, 클럭, MMU 등의 설정. */
#define CONFIG_ARM920T 1
#define CONFIG_EP93XX 1
#define CONFIG_EP9302 1
#define CONFIG_AHAV9302 1
#define CONFIG_SYS_CLK_FREQ 14745600 /* 14.7456 MHz */
#define CFG_HZ 2048
#undef CFG_CLKS_IN_HZ
#define USE_920T_MMU 1
#define CONFIG_USE_IRQ 1
/* Monitor Configuration. */
#if defined(USE_920T_MMU)
#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
CFG_CMD_DIAG | \
CFG_CMD_SDRAM | \
CFG_CMD_JFFS2 | \
CFG_CMD_DHCP | \
CFG_CMD_PING | \
CFG_CMD_NET | \
CFG_CMD_MII)
#else
#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
CFG_CMD_DIAG | \
CFG_CMD_SDRAM | \
CFG_CMD_JFFS2 | \
CFG_CMD_DHCP | \
CFG_CMD_PING | \
CFG_CMD_NET | \
CFG_CMD_MII & \
~CFG_CMD_CACHE)
#endif /* defined(USE_920T_MMU) */
#include <cmd_confdefs.h> /* Must be AFTER any CONFIG_COMMANDS */
#define CFG_PROMPT "AHAV9302> "
/* Enable "long" help in the monitor */
#define CFG_LONGHELP
#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
#define CFG_MAXARGS 16 /* max number of command args */
#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
#define CFG_LOAD_ADDR 0xC0008000 /* default load address */
/* 3. 콘솔 접속을 위한 시리얼 설정 및 등록. */
#define CONFIG_BAUDRATE 115200
#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
#define CFG_SERIAL0 (0x808C0000)
#define CFG_SERIAL1 (0x808D0000)
#define CFG_PL010_SERIAL
#define CONFIG_PL01x_PORTS { (void *)CFG_SERIAL0, (void *)CFG_SERIAL1 }
#define CONFIG_CONS_INDEX 0
/* 4. 네트웍 설정. */
#define CONFIG_DRIVER_EP93XX_MAC
#define CONFIG_MII
#define CONFIG_MII_SUPPRESS_PREAMBLE
#define CONFIG_PHY_ADDR (0)
#define CFG_DIRECT_FLASH_TFTP
#undef CONFIG_NETCONSOLE
/* 5. 메모리 맵 설정. */
#define CONFIG_NR_DRAM_BANKS (8)
#define PHYS_SDRAM_1 (0xC0000000)
#define PHYS_SDRAM_1_SIZE (0x00800000)
#define PHYS_SDRAM_2 (0xC1000000)
#define PHYS_SDRAM_2_SIZE (0x00800000)
#define PHYS_SDRAM_3 (0xC2000000)
#define PHYS_SDRAM_3_SIZE (0x00800000)
#define PHYS_SDRAM_4 (0xC3000000)
#define PHYS_SDRAM_4_SIZE (0x00800000)
#define PHYS_SDRAM_5 (0xC4000000)
#define PHYS_SDRAM_5_SIZE (0x00800000)
#define PHYS_SDRAM_6 (0xC5000000)
#define PHYS_SDRAM_6_SIZE (0x00800000)
#define PHYS_SDRAM_7 (0xC6000000)
#define PHYS_SDRAM_7_SIZE (0x00800000)
#define PHYS_SDRAM_8 (0xC7000000)
#define PHYS_SDRAM_8_SIZE (0x00800000)
#define CFG_MEMTEST_START (0xC0000000)
#define CFG_MEMTEST_END (0x01000000)
#define CONFIG_BOOT_PARAM_ADDR (PHYS_SDRAM_1 + 0x100)
/* -----------------------------------------------------------------------------
* Run-time memory allocations
*
* The global data area size (must be > sizeof(gd_t)), stack sizes, and heap
* size are set using the values below.
*/
#define CFG_GBL_DATA_SIZE (128)
#define CONFIG_STACKSIZE (128 * 1024)
#if defined(CONFIG_USE_IRQ)
#define CONFIG_STACKSIZE_IRQ (4 * 1024)
#define CONFIG_STACKSIZE_FIQ (4 * 1024)
#endif /* defined(CONFIG_USE_IRQ) */
#define CFG_MALLOC_LEN (512 * 1024)
/* 6. 플래쉬 메모리 설정. */
/* -----------------------------------------------------------------------------
* FLASH and environment organization
*
* 0x60000000 - 0x6003FFFF (256KB) u-boot
* 0x60040000 - 0x6005FFFF (128KB) environment #1
* 0x60060000 - 0x6007FFFF (128KB) environment #2
* 0x60080000 - 0x6009FFFF (128KB) unused
* 0x600A0000 - 0x600BFFFF (128KB) unused
* 0x600C0000 - 0x600FFFFF (256KB) unused
* 0x60100000 - 0x602FFFFF (2MB) uImage(kernel image)
* 0x60300000 - 0x606FFFFF (4MB) rImage(ramdisk image)
* 0x60700000 - 0x60FFFFFF (10MB) (JFFS2)
*/
#define CFG_FLASH_CFI
#define CFG_FLASH_CFI_DRIVER
#define CFG_MAX_FLASH_BANKS (1)
#define CFG_MAX_FLASH_SECT (128)
#define PHYS_FLASH_1 (0x60000000)
#define CFG_FLASH_BASE (PHYS_FLASH_1)
#define CFG_MONITOR_BASE (CFG_FLASH_BASE)
#define CFG_MONITOR_LEN (256 * 1024)
#define CONFIG_ENV_OVERWRITE /* Vendor parameters are unprotected */
#define CFG_ENV_IS_IN_FLASH
#define CFG_ENV_ADDR (0x60040000)
#define CFG_ENV_ADDR_REDUND (0x60060000)
#define CFG_ENV_SECT_SIZE (0x00020000)
#define CFG_ENV_SIZE (CFG_ENV_SECT_SIZE)
#define CFG_ENV_SIZE_REDUND (CFG_ENV_SECT_SIZE)
#define CFG_JFFS2_FIRST_BANK (0)
#define CFG_JFFS2_FIRST_SECTOR (28)
#define CFG_JFFS2_NUM_BANKS (1)
#endif /* __CONFIG_H */
#define __CONFIG_H
/* 1. 부트로더 변수의 초기값 및 모니터 설정 등록. */
#define CONFIG_ETHADDR 00:60:6E:F0:00:02
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 192.168.100.181
#define CONFIG_SERVERIP 192.168.100.250
#define CONFIG_GATEWAYIP 192.168.100.254
#define CONFIG_BOOTDELAY 3
#define CONFIG_CMDLINE_TAG 1
#define CONFIG_INITRD_TAG 1
#define CONFIG_SETUP_MEMORY_TAGS 1
#define CONFIG_BOOTARGS "console=ttyAM0,115200 root=/dev/ram0 rw init=/sbin/init initrd=0xc0800000"
#define CONFIG_BOOTFILE "ahav9302.img"
/* 2. 아키텍쳐, 보드, 클럭, MMU 등의 설정. */
#define CONFIG_ARM920T 1
#define CONFIG_EP93XX 1
#define CONFIG_EP9302 1
#define CONFIG_AHAV9302 1
#define CONFIG_SYS_CLK_FREQ 14745600 /* 14.7456 MHz */
#define CFG_HZ 2048
#undef CFG_CLKS_IN_HZ
#define USE_920T_MMU 1
#define CONFIG_USE_IRQ 1
/* Monitor Configuration. */
#if defined(USE_920T_MMU)
#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
CFG_CMD_DIAG | \
CFG_CMD_SDRAM | \
CFG_CMD_JFFS2 | \
CFG_CMD_DHCP | \
CFG_CMD_PING | \
CFG_CMD_NET | \
CFG_CMD_MII)
#else
#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
CFG_CMD_DIAG | \
CFG_CMD_SDRAM | \
CFG_CMD_JFFS2 | \
CFG_CMD_DHCP | \
CFG_CMD_PING | \
CFG_CMD_NET | \
CFG_CMD_MII & \
~CFG_CMD_CACHE)
#endif /* defined(USE_920T_MMU) */
#include <cmd_confdefs.h> /* Must be AFTER any CONFIG_COMMANDS */
#define CFG_PROMPT "AHAV9302> "
/* Enable "long" help in the monitor */
#define CFG_LONGHELP
#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
#define CFG_MAXARGS 16 /* max number of command args */
#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
#define CFG_LOAD_ADDR 0xC0008000 /* default load address */
/* 3. 콘솔 접속을 위한 시리얼 설정 및 등록. */
#define CONFIG_BAUDRATE 115200
#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
#define CFG_SERIAL0 (0x808C0000)
#define CFG_SERIAL1 (0x808D0000)
#define CFG_PL010_SERIAL
#define CONFIG_PL01x_PORTS { (void *)CFG_SERIAL0, (void *)CFG_SERIAL1 }
#define CONFIG_CONS_INDEX 0
/* 4. 네트웍 설정. */
#define CONFIG_DRIVER_EP93XX_MAC
#define CONFIG_MII
#define CONFIG_MII_SUPPRESS_PREAMBLE
#define CONFIG_PHY_ADDR (0)
#define CFG_DIRECT_FLASH_TFTP
#undef CONFIG_NETCONSOLE
/* 5. 메모리 맵 설정. */
#define CONFIG_NR_DRAM_BANKS (8)
#define PHYS_SDRAM_1 (0xC0000000)
#define PHYS_SDRAM_1_SIZE (0x00800000)
#define PHYS_SDRAM_2 (0xC1000000)
#define PHYS_SDRAM_2_SIZE (0x00800000)
#define PHYS_SDRAM_3 (0xC2000000)
#define PHYS_SDRAM_3_SIZE (0x00800000)
#define PHYS_SDRAM_4 (0xC3000000)
#define PHYS_SDRAM_4_SIZE (0x00800000)
#define PHYS_SDRAM_5 (0xC4000000)
#define PHYS_SDRAM_5_SIZE (0x00800000)
#define PHYS_SDRAM_6 (0xC5000000)
#define PHYS_SDRAM_6_SIZE (0x00800000)
#define PHYS_SDRAM_7 (0xC6000000)
#define PHYS_SDRAM_7_SIZE (0x00800000)
#define PHYS_SDRAM_8 (0xC7000000)
#define PHYS_SDRAM_8_SIZE (0x00800000)
#define CFG_MEMTEST_START (0xC0000000)
#define CFG_MEMTEST_END (0x01000000)
#define CONFIG_BOOT_PARAM_ADDR (PHYS_SDRAM_1 + 0x100)
/* -----------------------------------------------------------------------------
* Run-time memory allocations
*
* The global data area size (must be > sizeof(gd_t)), stack sizes, and heap
* size are set using the values below.
*/
#define CFG_GBL_DATA_SIZE (128)
#define CONFIG_STACKSIZE (128 * 1024)
#if defined(CONFIG_USE_IRQ)
#define CONFIG_STACKSIZE_IRQ (4 * 1024)
#define CONFIG_STACKSIZE_FIQ (4 * 1024)
#endif /* defined(CONFIG_USE_IRQ) */
#define CFG_MALLOC_LEN (512 * 1024)
/* 6. 플래쉬 메모리 설정. */
/* -----------------------------------------------------------------------------
* FLASH and environment organization
*
* 0x60000000 - 0x6003FFFF (256KB) u-boot
* 0x60040000 - 0x6005FFFF (128KB) environment #1
* 0x60060000 - 0x6007FFFF (128KB) environment #2
* 0x60080000 - 0x6009FFFF (128KB) unused
* 0x600A0000 - 0x600BFFFF (128KB) unused
* 0x600C0000 - 0x600FFFFF (256KB) unused
* 0x60100000 - 0x602FFFFF (2MB) uImage(kernel image)
* 0x60300000 - 0x606FFFFF (4MB) rImage(ramdisk image)
* 0x60700000 - 0x60FFFFFF (10MB) (JFFS2)
*/
#define CFG_FLASH_CFI
#define CFG_FLASH_CFI_DRIVER
#define CFG_MAX_FLASH_BANKS (1)
#define CFG_MAX_FLASH_SECT (128)
#define PHYS_FLASH_1 (0x60000000)
#define CFG_FLASH_BASE (PHYS_FLASH_1)
#define CFG_MONITOR_BASE (CFG_FLASH_BASE)
#define CFG_MONITOR_LEN (256 * 1024)
#define CONFIG_ENV_OVERWRITE /* Vendor parameters are unprotected */
#define CFG_ENV_IS_IN_FLASH
#define CFG_ENV_ADDR (0x60040000)
#define CFG_ENV_ADDR_REDUND (0x60060000)
#define CFG_ENV_SECT_SIZE (0x00020000)
#define CFG_ENV_SIZE (CFG_ENV_SECT_SIZE)
#define CFG_ENV_SIZE_REDUND (CFG_ENV_SECT_SIZE)
#define CFG_JFFS2_FIRST_BANK (0)
#define CFG_JFFS2_FIRST_SECTOR (28)
#define CFG_JFFS2_NUM_BANKS (1)
#endif /* __CONFIG_H */
아직은 잘 모르겠다.
걍 u-boot README 파일을 참고해가며 보면 알 수 있다고 한다.
실제 cs-e9301.h파일과 비교해보면 몇 군데를 제외하고는 거의 같음을 알 수 있다. 조만간 시간을 내서 README 파일을 한번 읽어는 봐야 할것 같은데... -_-;;
'혼자서 놀기... > 순대보드(AHAV9302)' 카테고리의 다른 글
순대보드 Kernel Image (0) | 2009.09.02 |
---|---|
순대보드 u-boot - 4 (0) | 2009.09.02 |
순대보드 u-boot - 2 (0) | 2009.08.11 |
순대보드 u-boot - 1 (4) | 2009.04.02 |
순대보드 CrossCompile 환경 - 2 (0) | 2009.04.01 |
2009. 8. 11. 20:17
순대보드 u-boot - 2
2009. 8. 11. 20:17 in 혼자서 놀기.../순대보드(AHAV9302)
새로운 보드에 u-boot를 올리기 위해선 몇가지 해주어야 하는 작업이 있는데.. 대략 순서를 말하자면 이렇다.
1. 해당 보드의 Machine Type을 생성하고 이를 "include/asm-arm/mach-types.h"에 등록한다.
2. 순대보드를 컴파일 할 수 있도록 Makefile을 수정한다.
3. 순대보드의 초기화를 위해 필요한 부분들을 생성한다.
2. 순대보드를 컴파일 할 수 있도록 Makefile을 수정한다.
3. 순대보드의 초기화를 위해 필요한 부분들을 생성한다.
먼저 첫번째 작업 Machine Type을 생성하고 등록하자.
u-boot의 최상위 디렉토리에서 작업을 하면 된다.
$ vi include/asm-arm/mach-types.h
...
671 #define MACH_TYPE_NEC_MP900 659
672 #define MACH_TYPE_VVTK1000 661
...
...
671 #define MACH_TYPE_NEC_MP900 659
672 #define MACH_TYPE_VVTK1000 661
...
중간 쯤.. 그러니깐 라인수로 671번 째 라인을 보면 MACH_TYPE_NEC_MP900이라는 부분이 있다. 그 녀석 아래에 순대보드의 Machine Type를 추가해 넣는다.
671 #define MACH_TYPE_NEC_MP900 659
672 #define MACH_TYPE_AHAV9302 660
673 #define MACH_TYPE_VVTK1000 661
672 #define MACH_TYPE_AHAV9302 660
673 #define MACH_TYPE_VVTK1000 661
또, 라인수로 8590라인 정도에
#ifdef CONIFG_MACH_NEC_MP900
...
#endif
라는 부분이 있다.
그 아래 순대보드에 관련된 부분을 추가해 준다. 그냥 "NEC_MP900" 된 부분을 "AHAV9302"로 바꾸어주면 된다.
...
8590 #ifdef CONFIG_MACH_NEC_MP9008591 # ifdef machine_arch_type
8592 # undef machine_arch_type
8593 # define machine_arch_type __machine_arch_type
8594 # else
8595 # define machine_arch_type MACH_TYPE_NEC_MP900
8596 # endif
8597 # define machine_is_nec_mp900() (machine_arch_type == MACH_TYPE_NEC_MP900)
8598 #else
8599 # define machine_is_nec_mp900() (0)
8600 #endif
8601
8602 #ifdef CONFIG_MACH_AHAV9302
8603 # ifdef machine_arch_type
8604 # undef machine_arch_type
8605 # define machine_arch_type __machine_arch_type
8606 # else
8607 # define machine_arch_type MACH_TYPE_AHAV9302
8608 # endif
8609 # define machine_is_ahav9302() (machine_arch_type == MACH_TYPE_AHAV9302)
8610 #else
8611 # define machine_is_ahav9302() (0)
8612 #endif
...
위와 같은 작업을 통해 생각보다 간단하게 순대보드(AHAV9302)를 새로운 머신 아키텍쳐(Machine Architecture)로 u-boot에 등록하게 된다.
다음은 순대보드(AHAV9302)용 u-boot를 컴파일 하기 위해 Makefile을 수정해야 한다.
역시 u-boot의 최상위 디렉토리에서 작업을 하면 된다.
vi 에디터를 열어 아래와 같이 ARM92xT Systems라는 부분을 찾아서 그 부분의 가장 아래 ahav9302_config를 추가한다.
$ vi Makefile
...
1756##########################################################
1757 ## ARM92xT Systems
1758##########################################################
1758##########################################################
...
1782 ahav9302_config : unconfig
1783 @$(MKCONFIG) $(@:_config=) arm arm920t ahav9302 NULL ep93xx
1783 @$(MKCONFIG) $(@:_config=) arm arm920t ahav9302 NULL ep93xx
...
"ARM92xT Systems" 라고 된 부분은 ARM92xT의 여러 보드들을 등록해 놓은 곳이다. 물론 순대보드의 경우 등록이 되지 않았기 때문에 추가로 등록을 해주는 것이다.
아래로 쭉 내려가다 보면.. 어디선가 많이 들어본듯한 smdk2440, smdk2410 보드도 등록되어 있음을 볼 수 있다.
실제 u-boot를 컴파일 할 때 다음과 같은 구문을 사용하게 된다.
$ make ARCH=arm CROSS_COMPILE=arm-elf- ahav9302_config
이런식으로 하여 여러 보드 중 ahav9302의 u-boot.bin을 생성하게 되는 것이다.
다음은 순대보드(AHAV9302)에 특화된 동작을 하는 부분을 생성하는 부분인데.. 양이 좀 많아질듯 하니깐 다음번에..
[참고] 당근이의 AVR 갖고 놀기
'혼자서 놀기... > 순대보드(AHAV9302)' 카테고리의 다른 글
순대보드 u-boot - 4 (0) | 2009.09.02 |
---|---|
순대보드 u-boot - 3 (0) | 2009.08.11 |
순대보드 u-boot - 1 (4) | 2009.04.02 |
순대보드 CrossCompile 환경 - 2 (0) | 2009.04.01 |
순대보드 CrossCompile 환경 - 1 (0) | 2009.03.31 |
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 |