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 |