(Andro-G3 \306\367\306\303\260\372\301\244\(VB,Ubuntu\) hwp)

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "(Andro-G3 \306\367\306\303\260\372\301\244\(VB,Ubuntu\) hwp)"

Transcription

1 Global Biz Technology Linux & Android Porting & App Programming - 15주과정 - Andro-G3 개발보드를구입해주신고객님께진심으로감사드립니다. 본매뉴얼은 Andro-G3를 구입하신분들께서 Andro-G3 보드를이용하여, 리눅스(kernel ) 와안드로이드(version 2.1, Eclair) 포팅을실습하고, 윈도우즈개발환경에서안드로이드응용프로그램을개발하여 Andro-G3 에서실행하여결과를확인하여볼수있도록도와드리기위해서제작되었습니다. 본문서의모든저작권은 ( 주) 지비테크에있습니다. 무단복제및전제를금합니다. Copyrightc 2006 by GBTec Inc. LTD.

2 목 차 1. 포팅개요 1 2. Andro-G3 구조와특징 Andro-G3 개요 Andro-G3 장비개요 Andro-G3 특징 Andro-G3 사양 S5PC110 블록다이어그램 메모리맵 하드웨어구성 부품배치도및명칭 주요제품구성 DVD 폴더/ 파일트리 Andro-G3 활용방법 5 가지 리눅스 & 안드로이드포팅테스트 (3 가지) 안드로이드앱개발및다운로드테스트 (2 가지) 9 3. 하드웨어개발환경설치 작업환경구성도 교차개발환경구성도 포팅에필요한주요소프트웨어 포팅작업디렉토리구성 포팅관련주요컴포넌트 Cross Compiler와 Toolchain 작업파일준비하기 가상머신(Virtual Machine) 설치 개발호스트리눅스설치 가상머신설치환경만들기 리눅스(ubuntu) 설치 가상머신환경설정 게스트확장설치 공유폴더(Shared Folder) 지정하기 리눅스창조절하기 네트워크환경설정하기 리눅스기초 리눅스명령어익히기 도움말명령어 파일및디렉토리 파일내용확인 60

3 4.1.4 프로세스관리 사용자관리 네트워크관리 압축명령어 리눅스활용 기타명령어 vim 에디터익히기 vim 의기본사용모드 열기, 저장, 종료 기본적인편집 이동 수정, 삭제, 복사, 붙이기 ex 명령어형식 set 명령어 리눅스커널및드라이버포팅 포팅을위한폴더생성및파일준비 호스트컴퓨터와타겟보드연결설정 케이블연결(Host 와타겟보드연결) DNW 환경설정( 시리얼통신환경설정) usb 드라이버설치1 ( 이미지다운로드용) usb 드라이버설치2 ( 안드로이드응용프로그램다운로드용) T-Flash 살펴보기 T-Flash Sector Map 이미지다운로드메시지살펴보기 Andro-G3 부팅과정 T-Flash 내용삭제 Andro-G3 시스템복구하기 호스트컴퓨터의개발환경설정(Toolchain 설치) 부트로더(u-boot) 컴파일및설치 부트로더(u-boot) 컴파일 Bootloader(u-boot) 다운로드 u-boot 명령어살펴보기 리눅스커널소스분석 리눅스커널소스받기 리눅스커널압축풀기및분석 리눅스커널컴파일 컴파일환경설정 드라이버수정 make menuconfig 내용요약 포팅용리눅스커널컴파일 Target 보드에다운로드 & 테스트 143

4 6. 안드로이드포팅 안드로이드소스다운로드및컴파일 소스다운로드를위한환경설정 소스다운로드및빌드 ALSA 적용하기 Busybox 적용하기 제공된소스를이용한빌드 안드로이드빌드 mkimage 실습 안드로이드이미지다운로드및테스트 ramdisk.img 다운로드 system.img 다운로드 userdata.img 다운로드 안드로이드소스분석 안드로이드부팅과정 init 파일 init.rc 파일 zygote 파일 acore 파일 power 관련파일들 안드로이드응용프로그램개발 안드로이드개요 모바일 OS 의종류 모바일 OS 의시장방향 안드로이드란? 안드로이드플랫폼구조 응용프로그램개발환경구축 Android SDK 다운로드 Eclipse( 이클립스) 다운로드 JDK 다운로드 Java Development Kit (JDK) 설치 SDK와 Eclipe( 이클립스) 연동 Available Package 추가등록 Virtual Device 생성 안드로이드응용프로그램구성및개발과정 Android Application 구성요소 안드로이드응용프로그램개발과정 안드로이드응용프로그램을위한 usb 드라이버설치 안드로이드응용프로그램예제완성하기 [ 예제 1] HelloAndroid [ 예제 2] ActTest [ 예제 3] ResourceMgr 233

5 7.4.4 [ 예제 4] ResourceMgr [ 예제 5] ResourceViewer 244 부록 SDK logcat 메시지 Andro-G3 logcat 메시지 부팅과정의터미널출력화면 리눅스환경설정파일 개발환경설치방법2(VMware + FedoraCore) 개발환경설치방법3(VirtualBox + Fedora) 299

6 1. 포팅개요 2007년 11월에구글에서개발한모바일 OS인 Android( 안드로이드) 는 OHA(Open Handset Alliance) 를기반으로하는다국적연합체의지원을받고있으며, 오픈소스리눅스를기반으로 SDK( 소프트웨어 개발킷) 와 Eclipse( 응용프로그램개발환경) 등이무료로제공되어휴대폰이나임베디드장비에포팅 되어다양한분야에서활용되고있다. 이교재는리눅스커널과안드로이드프레임워크를 Andro-G3 교육용장비에포팅하는교육을위한문 서로, 가상머신설치부터, 개발용리눅스설치및기초적인리눅스사용법, 안드로이드소스받기및컴 파일, 리눅스와안드로이드포팅에관한파일수정및컴파일, 타겟보드에다운로드및테스트하는내 용을담고있으며, 안드로이드응용프로그램을개발하기위한안드로이드 SDK, Eclipse, 자바등을다 운로드하고설치하는방법, 안드로이드응용프로그램개발및에뮬레이터에서테스트하는방법, 안드 로이드응용프로그램을 한전반적인기술을다루고있다. Andro-G3에인스톨하여테스트하는방법등포팅및응용프로그램개발에대 이과정은리눅스및안드로이드포팅과안드로이드응용프로그램개발을겸하고있어서두가지학습 을효율적으로하기위해서, 윈도우즈에가상머신을설치하고이가상머신에리눅스를탑재하여포팅 실습을하고, 안드로이드응용프로그램개발및테스트는기본적으로윈도우즈에서하며, 일부는 Andro-G3 에다운로드하여직접타겟보드에서실행하여결과를보기도한다. 포팅을위해리눅스커널버전은 를사용하였고안드로이드버전은 2.1(Eclair) 을사용하였으며, 이문서를작성할당시의리눅스바닐라커널버전은 , 안드로이드버전은 2.2(Froyo) 가나온상 태이다. 이교재는리눅스및안드로이드에대한기초개발자위주로최대한쉽고자세하게작성되었으며, 일일 3시간씩 15 주정도에실습할내용으로기술되었다. 개인의능력에따라내용중쉬운부분은빠르게 지나가고, 어려운부분은관련서적이나인터넷의도움을받을필요도있을것이라고생각되며, 설명이 부족한부분은이후추가또는보완이될수있도록할것이다. ( 참고사항) 포팅과정에서표시한파일사이즈등의숫자는단지참고용으로기록한것으로리눅스나안드로이드 버전과상황에따라다르게나타날수있으므로이점착오없기를바란다. [ Andro-G3 메인화면 ] Linux & Android Porting 1

7 2. Andro-G3 구조와특징 2.1 Andro-G Andro-G3 개요 장비개요 - 삼성 S5PC110 32bit RISC Microprocessor (ARM Cortex-A8) 기반의 Embedded System - 저전압제품으로응용프로그램과모바일폰, PDA, 내비게이션등응용능력이높은 Embedded System - 하드웨어는 AXI, AHB, APB 16/32-bit 외부버스구조를가지고있고, 멀티미디어지원으로는 비디오, 오디오처리기능과 OpenGL 3D/2D Graphic 이있으며, MFC(Multi Format video Codec) 기반의 MPEG-4, H.263 H.264의인코딩과디코딩기능및 MPEG-2, VC1, Divx의디 코딩기능지원 - 고성능단말기(Pocket PC, 내비게이션, PMP, DMB, PDA), 블루투스기기, 산업용제어시스템 등개발자에게다양한개발환경을제공할수있으며, 7 인치 TFT-LCD와멀티터치스크린을사 용하여멀티미디어환경에서응용프로그램개발에최적화 Andro-G3 - - 특징 고성능프로세서탑재 ㆍARM Cortex-A8 기반의삼성 S5PC110(1GHz) 데이터저장을위한메모리 ㆍ ㆍ ㆍ Built-in NAND Flash(512MB) Built-in Micro SD T-Flash(2GB) - boot-loader, Linux kernel, Android system and applications SD Card(4GB support up to 32 GB) - 그림, 음악, 동영상등사용자파일용 - 고급비주얼시스템을위한 7" Wide Type TFT-LCD ㆍ내비게이션이나 PMP를위한동영상재생에적합한 7" Wide Type TFT-LCD 탑재 (800 x 480 pixels) ㆍ Multi-touch panel - Bluetooth & Wireless LAN ㆍ무선헤드셋, 무선마우스응용을위한 Bluetooth 모듈(2.0 +EDR) ㆍ무선인터넷사용을위한 Wireless LAN 모듈(WiFi b/g) - 휴대용동영상촬영, 화면캡처를위한고해상도 Camera( 옵션) ㆍ2 Mega Pixel, autofocus의고해상도 Camera Module - 다양한응용분야활용을위한초고속 USB 2.0 ㆍ최대 480Mbps 속도기반의 USB 2.0 Device Interface 구현 (Standard USB 2.0 Hosted, Supports 3G and GPS Module) ㆍ Micro USB(Device mode includes charging) - TV OUT ㆍ Digital TV OUT(Standard HDMI Port) ㆍ Analog TV OUT(3.5mm Jack (Video RCA / Audio RCA)) - 3 축가속도센서 ㆍ 3-axis accelerometer for UI auto-rotate 용 2 Linux & Android Porting

8 2.2 Andro-G3 사양 S5PC110 블록다이어그램 메모리맵 Linux & Android Porting 3

9 2.2.3 하드웨어구성 ITEM SPEC DESCRIPTION CPU ARM Cortex-A8 S5PC110 (1GHz) 삼성제품 MEMORY DRAM One-NAND Flash T-Flash SD Card 256MB mddr 512MB Micro SD T-Flash(2GB) SD Card(4GB support up to 32 GB) GRAPHIC 2D/3D OpenGL 3D/ 2D 4M triangle 지원 USB USB OTG HOST MICRO USB : Device mode includes charging Standard USB 2.0 Hosted UART 1 Port DEBUG port CAMERA 2M Pixel OmniVision 제공 사 2M PIXEL, AUTO FOCUS, Preview, snap shot SD/MMC 1 Port SD 2.0 PROTOCOL, MMC 4.0 PROTOCOL 지원 기능 LCD WVGA 7 WIDE TYPE TFT-LCD, 800 x 480 KEYPAD SCAN KEY Capacitive Touch Standard 3 key TV OUT Digital TV OUT Standard HDMI Port Analog TV OUT 3.5mm Jack (Video RCA / Audio RCA) BLUETOOTH BT2.0 EDR 2.0 +EDR WLAN IEEE802.11b/g WiFi b/g ACCELEROMETER 3-axis 3-axis accelerometer for UI auto-rotate 4 Linux & Android Porting

10 2.2.4 부품배치도및명칭 Andro-G3 의부품배치및명칭은다음과같다. Linux & Android Porting 5

11 2.2.5 주요제품구성 장치본체 각종구성품 ( 구성품은협의에따라제공유무가달라질수있음) 6 Linux & Android Porting

12 2.2.6 DVD 폴더/ 파일트리 폴더하위폴더및파일기능및내용비고 DNW 폴더(dnw1.01.exe) 윈도우즈가상터미널실행파일 usb_drv_android_app 폴더안드로이드 App용 usb 드라이버 GBT inst_prog_windows ( 윈도우즈용) inst_prog_linux ( 리눅스용) inst_prog_android ( 안드로이드용) image inst_final_src ( 최종소스) inst_final_bins ( 최종오브젝트) inst_prog_ aapp_tools ( 안드로이드 App 개발툴) inst_datasheet usb_drv_uboot 폴더 u-boot용 usb 드라이버 VirtualBox Win.exe ubuntu desktop-i386.iso androg3_recovery_ zip drv_chg_src 폴더 eabi-armv6.tar.gz anrdog3-uboot edu.tar.gz androg edu.tar.bz2 가상머신설치파일 우분투설치파일 T-Flash 파일복구용튤 리눅스드라이버수정용 리눅스커널포팅용툴체인 u-boot 파일( 실습용) u-boot-edu 폴더로풀림리눅스커널파일( 실습용) androg edu 폴더로풀림 jdk-1_5_0_22-linux-i586.rpm 자바설치파일 Fedora용 smdk-usbdl 리눅스에서 usb 다운로드용 android2.1_src_from_android 폴더 android-edu.tar.bz2 android 2.1 원본소스 mydroid 폴더로풀림 android 2.1 파일( 실습용) mydroid-edu 폴더로풀림 구글소스 mkimage, mkyaffs2image 루트파일시스템생성용 Fedora용 alsa_src, alsa_src_g3 폴더 ALSA lib와 utils 파일 busybox arm11.tar.gz Busybox 파일 (u-boot.bin 등실습한내용) Andro-G3 다운로드용폴더 anrdog3-uboot tar.gz u-boot 최종소스파일 비어있음 androg tar.bz2 리눅스커널최종소스파일 " android-fin.tar.bz2 u-boot.bin zimage ramdisk-uboot.img androg3-system.tar.gz androg3-userdata.tar.gz eclipse-java-helios-sr1 -Win32.zip 안드로이드2.1 최종소스 mydroid-fin 폴더로풀림 u-boot 최종오브젝트 리눅스커널최종오브젝트 루트파일시스템최종오브젝트 android system android userdata 이클립스파일 android-sdk_r07-windows.zip 안드로이드 SDK 파일 jdk-6u22-windows-i586.exe datasheet 폴더및파일 자바설치파일 데이터시트 최종폴더 최종폴더 GBT " App 용 Linux & Android Porting 7

13 2.3 Andro-G3 활용방법 5 가지 Andro-G3 와본교재를활용하면다음과같은다섯가지정도의테스트를해볼수있다 리눅스 & 안드로이드포팅테스트 (3 가지) 1. 최종오브젝트이용 : 다운로드-테스트 제공되는최종오브젝트를이용하여컴파일과정없이미리컴파일된내용(u-boot, 리눅스커널, 루트 파일시스템, 안드로이드 system 이미지) 을 Andro-G3 에바로다운로드하여테스트해볼수있다. - 이방법은다운로드만하면되므로절차가비교적간단하며, 윈도우즈의경우는보조파일로 DNW 와 usb 드라이버파일만있으면되고, 리눅스에서는 mount, cp 명령어정도만알고있으면된다. 1) 참조파일 (1) 주요파일 : inst_final_bins/u-boot.bin, zimage, ramdisk-uboot.img, androg3-system.tar.gz( 압축을풀어서이용) (2) 보조파일 : inst_prog_windows/dnw, usb_drv_uboot 2) 참조페이지 (1) u-boot.bin, zimage, ramdisk-uboot.img 다운로드는윈도우즈에서 DNW를이용하여다운로 드하며 3 가지모두동일한방법으로다운로드할수있다 Bootloader 다운로드참조 (2) 안드로이드 system 폴더다운로드는리눅스( 우분투) 에서 Micro SD card reader에직접복 사(cp) 하여넣는다 system.img 다운로드참조 2. 최종소스이용 : 컴파일-다운로드-테스트 제공되는최종소스를이용하여컴파일과정만으로, u-boot, 리눅스커널, 루트파일시스템, 안드로 이드 - system 이미지를다운로드하여테스트해볼수있다. 이방법은소스를컴파일까지해야하므로리눅스에서툴체인설치및각종환경설정등을할줄 알아야하며, 3 번보다는절차가간단하지만포팅과관련된많은지식을알고있어야가능하다. 1) 참조파일 (1) 주요파일 : inst_final_src/androg3-uboot tar.gz, androg tar.bz2, android-fin.tar.bz2, eabi-armv6.tar.gz (2) 보조파일 : inst_prog_windows/dnw, usb_drv_uboot 2) 참조페이지 주요파일로제공된완성된최종소스를이용하여, 다음과같이툴체인설치부터, u-boot, zimage, 안드로이드 system 및 ramdisk 를생성하여다운로드해본다. - 아래참조내용을따라갈때, xx-yy-edu 등의 edu가붙은것대신에최종소스를이용한다. (1) Toolchain 설치 : 5.4 호스트컴퓨터의개발환경설정(Toolchain 설치) 참조 (2) u-boot 수정, 컴파일및다운로드테스트 : 5.5 부트로더(u-boot) 컴파일및설치참조 (3) zimage( 리눅스커널) 수정, 컴파일및다운로드테스트 : 5.7 리눅스커널컴파일참조 (4) 안드로이드 system 및 ramdisk 이미지관련수정, 컴파일및다운로드테스트 : 6.2 제공된 소스를이용한빌드및 6.3 안드로이드이미지다운로드및테스트참조 8 Linux & Android Porting

14 3. 포팅소스이용 : 수정-컴파일-다운로드-테스트 제공되는포팅소스를이용하여처음부터차근차근따라가면서소스를수정해보면서, 컴파일및다 운로드를해보는방법으로, 포팅관련전과정을체계적으로익힐수있으며, 최종컴파일이완료되 면 u-boot, 리눅스커널, 루트파일시스템, 안드로이드 system 이미지를다운로드하여테스트해 볼수있다. - 이방법은소스수정및컴파일까지해야하므로리눅스에서툴체인설치및각종환경설정등을 할줄알아야하며, 2번보다는좀더절차가복잡하고포팅과관련된많은지식을알고있어야 가능하다. 1) 참조파일 (1) 주요파일 : inst_prog_linux/androg3-uboot edu.tar.gz, androg edu.tar.bz2, eabi-armv6.tar.gz, drv_chg_src inst_prog_android/android-edu.tar.bz2, alsa_src, alsa_src_g3 (2) 보조파일 : inst_prog_windows/dnw, usb_drv_uboot 2) 참조페이지 제공된소스를이용하여, 다음과같이툴체인설치부터, u-boot, zimage, 안드로이드 system 및 ramdisk 를생성하여다운로드해본다. - 아래참조내용을따라갈때, xx-yy-edu 등의 edu 붙은것은교육용으로만든것으로일부 기능이빠져있어이를완성해야제대로동작이된다. (1) Toolchain 설치 : 5.4 호스트컴퓨터의개발환경설정(Toolchain 설치) 참조 (2) u-boot 수정, 컴파일및다운로드테스트 : 5.5 부트로더(u-boot) 컴파일및설치참조 (3) zimage( 리눅스커널) 수정, 컴파일및다운로드테스트 : 5.7 리눅스커널컴파일참조 (4) 안드로이드 system, ramdisk 이미지관련수정, 컴파일및다운로드테스트 : 6.2 제공된소 스를이용한빌드및 6.3 안드로이드이미지다운로드및테스트참조 안드로이드앱개발및다운로드테스트 (2 가지) 1. 준비된앱이용 : 앱다운로드-테스트 인터넷등을통하여입수한안드로이드응용프로그램(Application) ( 예, "mini army v1.0.0.apk") 을 Andro-G3 에직접다운로드하여앱(App) 의동작을테스트해볼수있다. - 이방법은윈도우즈의 명령실행창 에서 "adb install" 명령만으로설치를할수있다. 1) 참조파일 : 안드로이드 SDK 파일중, adb.exe inst_prog_windows/usb_drv_android_app 2) 참조페이지 (1) 안드로이드응용프로그램을위한 usb 드라이버설치를참조하여 usb 드라이버를설 치한다. (2) 7.2 안드로이드응용프로그램개발환경구축을하든지또는개발환경구축에서만들어진 adb.exe 파일을적당한폴더에넣고폴더경로에대한환경설정을한다. 7.2 안드로이드응용프로그램개발환경구축참조 Linux & Android Porting 9

15 (3) 명령프롬프트( 시작-보조프로그램- 명령프롬프트) 를실행하여다음과같이안드로이드응용 프로그램( 패키지) 을 Andro-G3 에인스톨한다. 다음은명령프롬프트를통하여인스톨하는과정을보여주고있다. C:\... \kdhong> C:\... \kdhong> d: d:\>cd android_app d:\android_app> dir d:\android_app> adb install "mini army v1.0.0.apk" ; ms-dos ; ; ; 프롬프트 패키지가있는드라이브로이동 패키지가있는폴더로이동 파일이름확인 ; adb install 3403 KB/s ( bytes in 1.138s) ; 설치성공메시지출력 Success pkg: /data/local/tmp/mini army v1.0.0.apk d:\android_app> 명령입력 (4) Andro-G3 의초기화면에서우측부분에있는서랍을열어서설치된패키지를확인하고, 시켜본다. Andro-G3에서서랍( 흰박스) 을열어보면 동작 다운로드한파일 (MiniArmy)( 흰박스) 이보인다. 10 Linux & Android Porting

16 이를클릭하여결과가보이는지확인한다. 2. 개발중인앱이용 : 앱개발-다운로드-테스트 Eclipse 를통하여개발중인안드로이드응용프로그램(App) ( 예, HelloAndroid.apk) 에대해서 1) xxx.apk 형태의파일로 1. 준비된앱이용 과같은방법으로다운로드및테스트를하거나 2) Eclipse 의메뉴중 실행 메뉴를통하여 Andro-G3 에바로로딩및테스트를할수있다. 이방법은안드로이드앱을개발하면서테스트를해야하므로, Eclipse, 안드로이드 SDK 등이설 치되어있어야하고, 이툴들을활용하면서안드로이드앱을개발할수있어야가능하다. (1) 참조파일 : inst_prog_aapp_tools/eclipse-java-helios-sr1-win32.zip, (2) 참조페이지 android-sdk_r07-windows.zip, jdk-6u22-windows-i586.exe 안드로이드응용프로그램을위한 usb 드라이버설치부분에자세히설명해두었으므로 절을참조하도록한다. ; Eclipse의 DDMS나 File Explorer 를통해서도확인할수있다. Linux & Android Porting 11

17 3. 하드웨어개발환경설치 3.1 작업환경구성도 교차개발환경구성도 Host PC(i386) Target Board(ARM) 가상머신 (VB) userdata Linux (Ubuntu, Fedora) system ramdisk zimage u-boot Windows XP (x86) 저장 Android App DNW Micro SD card reader USB (Image DL, AppInstall) Serial 명령어메시지 load T-Flash DRAM (Micro SD) write S5PC110 (Cortex-A8) - 교차개발환경의호스트는작업의편의를위해서 Windows XP 를사용하고, 리눅스커널및안드로이 드프레임워크컴파일및수정등을위해서는가상머신의리눅스를이용하도록한다. - 리눅스가익숙한사용자는 DNW 대신가상머신의리눅스에서 minicom 을사용할수도있다. - u-boot, zimage, ramdisk 이미지는 usb 를통하여타겟보드로다운로드하고, system, userdata 이 미지는 T-Flash card reader를통하여리눅스에서직접 T-Flash 에저장하는방식을사용한다 포팅에필요한주요소프트웨어 종류프로그램명비고 가상머신 VirtualBox Win.exe 가상머신 (VM) 개발호스트리눅스 Ubuntu, [Fedora 10] 툴체인 (Toolchain) eabi-armv6.tar.gz gcc 등 download 용프로그램( 터미널) DNW(dnw1.01.exe), minicom Andro-G3 usb 드라이버(1) usb_drv_andro_app 폴더 Andro-G3 usb 드라이버(2) usb_drv_uboot 폴더 smdk-usbdl 부트로더소스 androg3-uboot edu.tar.gz 이미지다운로드용 Android App - 윈도우즈용 - 리눅스용 타겟보드용리눅스커널소스 android edu.tar.bz2 리눅스커널 다운로드용 안드로이드소스 Eclair(2.1) DL, android-edu.tar.bz2 download 또는파일이용 자바1.5 패키지 jdk-1_5_0_22-linux-i586.rpm Fedora용 안드로이드포팅에필요한파일 busybox , alsa_src[_g3] mkimage, androg3_recovery mkimage는 * android edu.tar.bz2 등의 edu 가붙은것은포팅용( 교육용) 으로만든것임 Fedora용 12 Linux & Android Porting

18 3.1.3 포팅작업디렉토리구성 Host PC 의개발호스트리눅스의작업디렉토리를다음과같이구성하여작업을하도록한다. / home 공유폴더 mnt/shared mnt/hgfs/shared VirtualBox VMware edu01 inst_ prog_ android inst_ prog_ linux inst_ prog_ windows image,...bins bin android mydroid mydroid-edu mydroid-fin android android edu inst_src android-edu alsa_src mkimage 설치관련도구들 toolchain(4.3.1) VirtualBox Ubuntu, DNW, usb, recovery DL 용이미지 Target repo alsa_src mkimage 커널소스 & 컴파일된자료 u-boot(edu) jdk1.5 android 소스 & 컴파일된자료 drv_chg_src smdk-usbdl edu01 : 사용자 ID android/android-edu : android 소스다운로드및컴파일 inst_src : 타겟보드용 kernel 소스및설치관련도구들 mnt/shared : 윈도우즈와리눅스공유폴더 ( 윈도우즈에서는바탕화면의 shared 폴더 ) mnt/shared/image : 새로수정된내용으로, 윈도우즈에서타겟보드다운로드용이미지폴더 mnt/shared/inst_final_bins : 미리컴파일되어(binary 파일) DVD 로제공된내용으로, 윈도우즈에서 타겟보드다운로드용이미지폴더 mnt/shared/inst_final_src : inst_final_bins에있는오브젝트를만든소스파일이있는폴더 mnt/shared/inst_prog_android : 안드로이드포팅관련파일(alsa_src, 안드로이드 2.1 포팅용소스) mnt/shared/inst_prog_linux : 리눅스작업폴더(inst_src) 로복사할리눅스관련커널및설치관련도구 를가진폴더 mnt/shared/inst_prog_windows : 포팅관련윈도우즈에서사용할프로그램을가진폴더 ( 주의사항) 공유폴더는 VirtualBox 에서는 /mnt/shared 로, VMware 에서는 /mnt/hgfs/shared 로잡히므로 사용하는가상장치에따라경로사용에주의하여야한다. Linux & Android Porting 13

19 3.1.4 포팅관련주요컴포넌트 포팅과관련하여많이다루게되는주요컴포넌트의명칭및위치는다음과같다. 타겟보드 (Andro-G3) SD 카드슬롯 전원 SW LCD 화면 BACK MENU HOME Micro SD (T-Flash) 카드슬롯 3pin serial connector (debug 용) Reset SW mini-b usb (DL 용) 컴포넌트배치 LCD는제일윗면에배치 Keypad는윗면우측에배치 3pin serial connector는보드뒷면에커넥터가있음 Micro SD(T-Flash) 카드슬롯은 LCD 화면아래가운데위치 개발용 PC 명령어사용및출력메시지보기 터미널창 리눅스의 minicom 또는 윈도우즈의 DNW 이용 리눅스 minicom 포팅작업 주로리눅스에서작업 윈도우즈 복구툴 DNW - 터미널창이용 : 에디팅, 컴파일등 윈도우즈에서일부작업 - 명령어사용등 14 Linux & Android Porting

20 3.1.5 Cross Compiler와 Toolchain 1. Cross Compiler 1) 정의 A( 예, x86 CPU) 라는컴퓨터에서컴파일을한바이너리파일은자신의컴퓨터에서는동작이가능하 지만, 이를 B( 예, ARM11 또는 Cortex A8 CPU) 라는컴퓨터( 또는보드) 에가져가면명령어의종 류, 길이, 동작방식등이다르기때문에동작이제대로되지않는다. 따라서 x86 CPU를가진컴퓨터에서작성한프로그램을다른 CPU 를가진장치( 또는컴퓨터)( 예, ARM11 또는 Cortex A8 CPU) 에맞도록컴파일을하는것을크로스컴파일이라하고, 크로스컴파 일을하는프로그램을크로스컴파일러라고한다. 2) 컴파일러예 gcc : x86 cpu용 gcc 컴파일러 arm-linux-gcc : arm cpu용 gcc 컴파일러 ( 포팅시시용할타겟용컴파일러) 2. Toolchain 1) 2) 정의 소스를컴파일하여바이너리실행파일을생성하기위해필요한컴파일러및라이브러리, 유틸리티모음 구성요소 GCC : 컴파일러 Binutils : 어셈블러및로더, 바이너리파일편집유틸리티 Glibc : Linux Kernel : 크로스컴파일을위한라이브러리및일반라이브러리 리눅스커널소스 바이너리 작업파일준비하기 1. 윈도우즈바탕화면에 shared 라는폴더를하나만든다. - 이폴더는리눅스와의공유폴더로사용할것이다. 2. 앞페이지의 포팅작업디렉토리구성 을참고로하여, 포팅관련프로그램들(DVD 내용중 image, inst_final_bins, inst_prog_windows, inst_prog_linux, inst_prog_android 폴더) 을이폴더 안에복사한다. 중요한 3 가지폴더는다음과같다. 1) inst_prog_windows 폴더 VirtualBox, Ubuntu, DNW, usb 드라이버 2 개, Andro-G3 복구툴등윈도우즈에서사용할프 로그램들이있다. 2) inst_prog_linux 폴더 리눅스의 inst_src 로복사할리눅스커널및설치관련도구들로, 툴체인, 리눅스커널소스, u-boot 소스, 자바 1.5 패키지등이들어있다. 3) inst_prog_android 폴더 안드로이드 2.1 포팅용소스, 루트파일시스템이미지생성용파일, alsa_src 등안드로이드포팅에 서사용할프로그램들이들어있다. Linux & Android Porting 15