2009. 8. 11. 20:17

순대보드 u-boot - 2



새로운 보드에 u-boot를 올리기 위해선 몇가지 해주어야 하는 작업이 있는데.. 대략 순서를 말하자면 이렇다.
1. 해당 보드의 Machine Type을 생성하고 이를 "include/asm-arm/mach-types.h"에 등록한다.
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번 째 라인을 보면 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

또, 라인수로 8590라인 정도에
#ifdef CONIFG_MACH_NEC_MP900
...
#endif
라는 부분이 있다.
그 아래 순대보드에 관련된 부분을 추가해 준다. 그냥 "NEC_MP900"   된 부분을 "AHAV9302"로 바꾸어주면 된다.

 ...

   8590 #ifdef CONFIG_MACH_NEC_MP900
   8591 # 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##########################################################

   ...

1782 ahav9302_config :       unconfig
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