Target Board  이솝 커뮤니티의 S5PC100 보드를 사용하므로이솝 프로젝트 사이트 내용을 참고합니다.

http://www.aesop.or.kr/?mid=issuetracker&vid=AESOPC100

 

1.       Install GCC Tool chain

-          Download : http://www.aesop.or.kr/?mid=issuetracker&act=dispIssuetrackerDownload&vid=AESOPC100

GCC : arm-s5pc1xx-linux-gnueabi-4.3.2.tar.gz

GCC 4.3.2  사용하며, GCC 관련 자료는 http://gcc.gnu.org 확인 하시기 바랍니다.

 

-          압축해제

이솝 보드용 Tool chain 호스트 시스템의 /opt 디렉터리에 설치를 합니다.

/opt 폴더를 복사하고다음의 명령으로 압축을 해제하시면 됩니다.

 

sudo tar xzf arm-s5pc1xx-linux-gnueabi-4.3.2.tar.gz

 

 

1.png

 

-          환경설정

Tool chain  Path  설정해주는 것이며다음과 같이 합니다.

 

sudo gedit /etc/profile

 

아래와 같이 창이 열리면선택된 부분과 같이 아래 Path  추가해 줍니다.

PATH=$PATH:$HOME/bin:/opt/s5pc1xx/cross/armv7a/bin

 

2.png

 

source /etc/profile

 

PATH 설정 확인

echo $PATH

 

3.png

 

arm-s5pc1xx-linux-gnueabi-gcc –v

 

4.png

 

2.       Install & Build U-Boot

-          Download : http://www.aesop.or.kr/?mid=issuetracker&act=dispIssuetrackerDownload&vid=AESOPC100

U-Boot 1.3.4 : u-boot-1.3.4-aesop.100428.tar.gz

 

-          압축해제

본인이 사용할 적절한 위치에 압축을 풀어 주시면 됩니다.

tar 명령어로 하셔도 되고그냥 파일 브라우저에서 압축해제 툴로 바로 실행하셔도 풀어도 됩니다.

 

5.png

 

-          U-Boot Build

다음과 같이 명령어를 수행합니다.

make clobber               <- 기존에 만들어 것들을 제거

make ntc100_config    <- 이솝보드용 config 설정

make                       

 

6.png

 

빌드 완료가 되면 아래 화면에서 처럼 u-boot.bin  사용하면 됩니다.

 

7.png

 

3.       Install & Build Android Linux Kernel

-          Download : http://www.aesop.or.kr/?mid=issuetracker&act=dispIssuetrackerDownload&vid=AESOPC100

Linux Kernel 2.6.29 : android-2.6.29-aesop-RTM10.tar.gz

해당 Kernel Android  X-Windows 모두 지원을 합니다.

 

-          Kernel Build

tar xzf android-2.6.29-aesop-RTM10.tar.gz

cd android-2.6.29-aesop-RTM10

make ntc100_xwindows_defconfig   <- X-Winodws  커널 빌드 

make ntc100_android_defconfig      <- Android  커널 빌드 

make zImage

 

아래와 같이 빌드가 완료되었으며, arch/arm/boot/zImage  생성이 되었습니다.

8.png

                 

4.       Build Android

-          Download  “Android 개발환경 구축” 게시물을 참조하시기 바라며,

추가로 이솝 보드용 소스는 아래와 같습니다.

Android Eclair : http://www.aesop.or.kr/?mid=issuetracker&act=dispIssuetrackerDownload&vid=AESOPC100

 

-          Build

Android source  있는 위치에서 아래와 같이 aesopc100_build.sh  실행하면 됩니다.

 

eastsky@ubuntu:~/dawid/android/android_eclair_aesopc100$ ./aesopc100_build.sh

 

9.png

 

빌드가 완료되면 아래와 같이 system.img 파일이 생성이 됩니다.

 

10.png

 

.. /android_eclair_aesopc100/out/target/product/smdkc100 아래 img 파일이 생성이 됩니다.

 

11.png

 

5.       Make NFS – Android  Root Fils System

-          NFS  디렉토리 생성  FS 파일을 복사 (본인에 맞게 적절한 곳을 지정하여 만들면 됩니다).

일단 /out/target/product/smdkc100  Output 파일들이 있는 곳으로 이동을 합니다.

 

cd /home/eastsky/dawid/android/android_eclair_aesopc100/out/target/product/smdkc100

 

12.png

 

 root 에서 편하게 사용하기 위해 root 계정으로 전환하고 아래와 같은 경로로 생성합니다.

 

mkdir /root/work/rootfs/test

 

그리고 아래와 같이 파일들을 복사합니다.

cp -a root/*  /root/work/rootfs/test

cp -a data   /root/work/rootfs/test/data/

cp -a system  /root/work/rootfs/test/system/

 

NFS 용으로 사용할 디렉토리 /root/work/rootfs/test  이동 합니다.

그리고 권한을 아래와 같이 변경하여 줍니다.

 

chown -R root.root *

chmod -R 777 data system

 

13.png

 

6.       Android New Vender & Product  (출처 이솝의 고도리님 http://www.aesop.or.kr/?document_srl=265476#7)

이솝 보드용 Android 소스를 그대로 사용하면 굳히 따로 아래와 같이 Vendor  따로  만들고 하셔도 됩니다.

 

l  일단 android 다운로드 받은 디렉토리로 움직인 후에 aesop이란 vendor 하나 만듭니다.

기존에 있는 sample 이용해서 하나 만들도록 하겠습니다.

 

cd vendor

cp -a sample aesop

cd aesop

 

Android.mk

products  빼고 전부 삭제

 

================================================

rm -rf apps/ frameworks/ sdk_addon/ skins/

================================================

 

l   products 새롭게 정의

 

1>

                  cd products

                  vi AndroidProducts.mk

 

                  ===========================================

                  PRODUCT_MAKEFILES := \

                    $(LOCAL_DIR)/sample_addon.mk

                   

                  ==> 이렇게  것을 새로운 보드 이름으로 대체

 

                  PRODUCT_MAKEFILES := \

                    $(LOCAL_DIR)/ntc100.mk

                  ===========================================

 

                  그리고 기존의 복잡한 sample관련 mk 파일을 지웁니다.

                  rm sample_addon.mk

 

2>

ntc100.mk 다음과 같이 edit

                  vi ntc100.mk

 

                  =============================================

                  $(call inherit-product, build/target/product/generic.mk)

 

                  PRODUCT_MANUFACTURER := aesop

                  PRODUCT_NAME := ntc100

                  PRODUCT_DEVICE := ntc100

                  PRODUCT_BOARD := ntc100

                  =============================================

 

l   새롭게 추가된 board 대한 directory 구성

기존의 generic board 것을 이용한다. generic board 디렉토리를 ntc100 디렉토리로 복사

                  cd ..

                  cp -a ../../build/target/board/generic/ ./ntc100     <- Vender  새로 만든 것입니다.

                 

 부분은 적용하지 않아도 된다. board 따라 틀림(kernel 따라)

                   부분은 product kernel 내에서의 keypad driver 따라 keylayout 지정하는 부분인데,

 부분은 건너뛰어도 됩니다.

 

                  그냥 이게 없으면 qwerty.kl  로딩되거든요.

                 ================================================================

                  vi AndroidBoard.mk

                  tuttle2 nt-keypad 수정(여기서 nt-keypad key device driver 이름이다)

 

                  mv tuttle2.kcm nt-keypad.kcm

                  mv tuttle2.kl nt-keypad.kl

                 =================================================================

 

                  vi BoardConfig.mk 해서 USE_CAMERA_STUB:=true  추가한다.

                  이유는

                 =================================================================

                  //주의사항

                  frameworks/base/camera/libcameraservice/Android.mk 보면

 

                  #

                  # Set USE_CAMERA_STUB for non-emulator and non-simulator builds, if you want

                  # the camera service to use the fake camera.  For emulator or simulator builds,

                  # we always use the fake camera.

 

                  ifeq ($(USE_CAMERA_STUB),)

                   USE_CAMERA_STUB:=false

                   ifneq ($(filter sooner generic sim,$(TARGET_DEVICE)),)

                    USE_CAMERA_STUB:=true

                   endif #libcamerastub

                  endif

 

                   경우

                  USE_CAMERA_STUB:=true  BoardConfig.mk  넣어줘야 한다.

                 =================================================================

 

l   build script 만들기

android top으로 가서 vi ntc100.sh 해서

=======================================================================

#!/bin/sh

 

CPU_JOB_NUM=$(grep processor /proc/cpuinfo | awk '{field=$NF};END{print field+1}')

 

START_TIME=`date +%s`

echo make -j$CPU_JOB_NUM PRODUCT-ntc100-eng

echo

make -j$CPU_JOB_NUM PRODUCT-ntc100-eng

if [ $? != 0 ] ; then

                                    exit $?

fi

 

END_TIME=`date +%s`

 

echo "Total compile time is $((($END_TIME-$START_TIME)/60)) minutes $((($END_TIME-$START_TIME)%60)) seconds"

========================================================================

 

저장하고 나온 후에

(

                   명령은 samsung C100 code 보면 build script 있는데 그것을 베낀 것입니다.

                  실제로는 host cpu갯수를 읽은 후에

 

                  make PRODUCT-ntc100-eng

 

                  -j 옵션을 이용해서 실행하는 것입니다.

)

                 생성된 script 실행 permission 줍니다.

 

chmod 755 ntc100.sh

'안드로이드' 카테고리의 다른 글

Android WireShark TCP dump  (0) 2012.07.12
[WiFi Direct] WiFi Direct in Android 4.0 API Overview (번역)  (0) 2012.05.07
Framework에서 Attrs.xml에 추가하기  (0) 2012.02.03
Device Administration  (0) 2012.01.28
MIME-Type 의 종류  (0) 2012.01.26

+ Recent posts