2010년 6월 7일 월요일

Kernel Porting

Kernel Porting
- 새로운 HW에서 커널이 동작할 수 있도록 프로그램을 수정하는 동작

I. 준비
II. Build for target
-------------------------------------------------------------------------------------------
준비
1. Target processor 선정
2. Processor Core 선정
  - i386
PC와 동일한 구조로 개발 환경 구성이 용이하다
오랜 기간 동안 사용되어 안정성 확보
  - ARM
전력 소모가 작아서 휴대폰이나 PDA와 같은 휴대 단말기에 많이 사용됨.
네트워크 제품에도 사용된다.
  - MIPS
고속의 처리기능 보유
고속 네트워크 장비에 많이 사용된다.
멀티미디어용으로도 많이 사용됨.(STB등)
3. Target machine 등록
   - ARM processor를 사용하는 target machine에 임베디드 리눅스를 포팅하고자 할때,
     설계자는 "ARM Linux" site에서 새로운 machine을 등록하여야 한다.
http://www.arm.linux.org.uk/developer/machines
   - 등록하는 주 목적은 등록후 생성되는 machine ID를 얻기 위해서임
→ arch/arm/tools/mach-types file.
   - in the site
machine registry → submit a new machine type → enter mail addr
→ enter info about new machine
4. Linux kernel source
   - web: http://www.kernel.org/pub/linux/kernel/v2.6
   - Linux 2.4.x  vs 2.6.x


   - 필요에 따라 target platform용 patch를 얻는다. (processor, target soc, target application)
   - kernel porting
대부분 S5PC100과 같은 soc의 경우 커널을 반도체 회사에서 제공
시스템 개발자는 제공되는 커널을 이용하여 Target machine에 맞도록 porting하는 작업이 필요하다.
5. kernel source 설치
   - install kernel source
tar zvxf ~/Resource/kernel/linux-2.6.33.2.tar.gz
   - 설치후 linux-2.6.33.2 폴더가 생성된다.
6. cross compiler설치:

Build for target
procedure:
kernel configuration → kernel compile → kernel img 설치 → test

1. Modify Makefile on top of linux directory
   - 변수 ARCH
ARCH := arm
   - 변수 CROSS_COMPILE
CROSS_COMPILE = arm-linux-
2. Configuration
   - 커널 설정
커널 설정은 커널의 일부 기능을 커널 이미지에 포함 할 것인지 아닌지를 설정하는 과정임
개발 도중 필요한 커널 옵션을 3가지 중 하나로 선택하여 커널에 포함여부를 선택한다.
   - 커널 빌드에 참가 여부 선택 방법
'Y' : 커널 빌드에 참가하여 커널 이미지에 해당 기능이 삽입된다. 그만큼 커널의 크기가 커짐
'N' : 커널 빌드에 참가하지 않는다.
'M': 커널 빌드에는 참가하지 않아 커널 이미지에 포함되지 않으나
       실행중인 커널에서 insmod / rmmod라는 프로그램을 통하여 적재 또는 삭제가 가능.
   - default kernel 설정
최초 커널 빌드시 커널 설정을 기존에 사용된 설정 값으로 커널을 설정하는 방법
arch/arm/configs 폴더에 default설정 파일들이 있다.
default configuration 방법: #make s5pc100_defconfig
   - 커널 설정 방법 3가지
행단위 설정: make config // shell script기바나의 configuration
메뉴형태의 설정: make menuconfig // 메뉴형태의 color/text configuration
graphical 설정 make xconfig // x-window based graphical configuration
* Kconfig file:
커널 설정이 가능하도록 만들어주는 파일로써,
이 파일의 내용에 따라 menuconfig에 설정값들이 표시됨.
   - linux/.config file
커널설정후 생성되는 파일로 설정된 커널 옵션을 알 수 있다.
make mrproper에 의해 삭제된다.
3. kernel compile
   - uncompressed kernel image
#make Image → linux/arch/arm/boot/ 폴더에 'Image' file생성
   - compressed kernel image
#make zImage → linux/arch/arm/boot/ 폴더에 'zImage' file생성
   - to erase all object files
#make clean



댓글 없음:

댓글 쓰기