1. 툴체인 
* codesourcery 의 toolchain 다운로드 - http://www.codesourcery.com/sgpp/lite/arm
/opt/codesourcery 로 설치함.
$ cd /
$ tar zxvf /다운로드경로/codesourcery.tar.gz
* 환경설정 및 컴파일 - 환경변수 PATH 에 /opt/codesourcery/bin 추가
$ export PATH=$PATH:/opt/codesourcery/bin
$ arm-none-linux-gnueabi-gcc -o test test.c
* 로그인시 자동 설정되도록 .bash_profile 수정
$ vi .bash_profile
PATH=$PATH:$HOME/bin:/sbin:/opt/codesourcery/bin
export PATH

2. kernel build
* Makefile 수정
$ vi Makefile
#ARCH       ?= $(SUBARCH)
#CROSS_COMPILE  ?=
ARCH            := arm
CROSS_COMPILE   := $(shell if [ -f .cross_compile ]; then \
                                cat .cross_compile; \
                                fi)

* .cross_compile 생성
$ vi .cross_compile
/opt/codesourcery/bin/arm-none-linux-gnueabi-

* s3c6400 으로 config
$ cp arch/arm/configs/s3c6400_defconfig .config
$ make memuconfig
$ make

3. mtd 설정 및 다운로드

커널에서 mtd 구성시 cache, system, userdata 라는 이름으로 만들어 주어야 합니다.
0x000000000000-0x000000040000 : "Bootloader"
0x000000040000-0x000000060000 : "Environment"
0x000000060000-0x000000360000 : "Kernel"
0x000000360000-0x000000760000 : "Root"
0x000000760000-0x000000f60000 : "cache"
0x000000f60000-0x000004160000 : "system"
0x000004160000-0x000020000000 : "userdata"

빌드 후 생성되는 파일들을 각각 mtd 이름에 맞도록 퓨징 해 주어야 합니다.
system.img -> "system"
userdata.img -> "userdata
"cache" 는 안드로이드 플랫폼에서 각종 cache 를 위해서 예약되어야 하는 영역입니다.
기본적으로 3가지 이름의 mtd 가 만들어 져야 정상적으로 init 이 동작 합니다.

Posted by blee
,