몰디브를 꿈꾸며...

안드로이드 개발 환경 구축(odroid u3) 본문

안드로이드

안드로이드 개발 환경 구축(odroid u3)

노란채송화 2014. 10. 17. 16:42

# emmc 메모리 관련 오류 발생시 응급 조치

http://forum.odroid.com/viewtopic.php?f=53&t=969

 

# 우분투 설치

최신 우분투 패키지를 Virtual Box에 설치한다. 현재 시점에서 최신 버젼은 14.04.1 lts이다. 우분투 홈페이지에서 다운받는 것도 좋지만, 다음 미러 사이트(http://ftp.daum.net/ubuntu-releases/)에서 cd 이미지 화일을 다운 받았다.

설치를 하고 나서 필요없는 office/게임등은 지웠다.

 

- 터미널 프로그램 찾기가 왜 이리 힘든지. 오랫만에 우분투를 접해봐서 당황스러웠다.

"대시"라고 깔고 나면 왼쪽 메뉴 첫번째 아이콘을 클릭하고 "Te"까지만 치면 terminal 프로그램이 나온다. 왼쪽 메뉴에 고정시키자. 일단.

 

# 패키지 업데이트 및 업그레이드

패키지 최신 버젼으로 업그레이드 하자.

터미널 에서 아래 명령어를 실행한다.

 $sudo apt-get update --yes && sudo apt-get upgrade --yes

 

# 안드로이드 빌드에 필요한 패키지 체크

아래 링크를 참고하여 필요한 패키지 설치한다.

 

http://source.android.com/source/initializing.html

 

문서를 읽다보니 아래 문구와 같이 요구사양이 나온다.

현재 Virtual Box 사양은 램 2G/하드 20G로 설정해 놓았다.

일단 현재 설정에서 시도를 해 보겠다. 

 

 

# JDK 설치

$ sudo apt-get update
$ sudo apt-
get install openjdk-6-jdk 

 

 

# 필요한 패키지 설치 

$ sudo apt-get install bison g++-multilib git gperf libxml2-utils 

$ sudo apt-get install lib32z1 flex libswitch-perl

 

# Oracle java6 설치

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java6-installer

 

# LIbx11-dev:i386 깔기

$ sudo apt-get install libx11-dev:i386 --yes 

 

 

# GCC-4.4 설치

$ sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib --yes 

 

 

bashrc를 수정하고 스크립트를 한번 실행해준다.

$ echo "export CC=gcc‐4.4 CXX=g++‐4.4" >> ~/.bashrc
$ source ~/.bashrc
 

 

# U-boot-tools 설치

$ sudo apt-get install u-boot-tools 

 

# 툴체인 설치

- odroid u3는 안드로이드와 우분투(리눅스)의 커널 빌드용 툴체인이 서로 다르다.

- 아래 링크에서 다운로드.

- http://www.mdrjr.net/odroid/tools/arm-2010q1.tar.xz   

$ wget http://www.mdrjr.net/odroid/tools/arm-2010q1.tar.xz

$ tar -Jxvf arm-2010q1.tar.xz
$ cd arm-2010q1/bin
$ export CROSS_COMPILE=`pwd`/arm-none-linux-gnueabi-

 

# 커널 빌드

- 참고 사이트

  http://odroid.com/dokuwiki/doku.php?id=en:androidplatformbuildguideforexynos4412

  http://forum.odroid.com/viewtopic.php?f=51&t=83 

 

- odroid u3용 안드로이드 리눅스 커널은 아래 링크로 가서 다운받는다.

https://github.com/hardkernel/linux/tree/odroid-3.0.y-android

 

- 압축 해제후 빌드한다.

 

$ wget https://github.com/hardkernel/linux/archive/odroid-3.0.y-android.zip

$ unzip odroid-3.0.y-android.zip

$ make ARCH=arm odroidu_android_defconfig

$ make -j4 ARCH=arm zImage modules

 

# 수정된 커널 적용

빌드한 커널 이미지를 보드에 적용해보자.

fastboot을 이용하라고 나온다.

보드와 호스트를 usb로 연결한다.

보드의 콘솔을 연결하여 디버깅 메세지를 볼 수 있는 상태가 되어야 한다.

보드를 리부팅하고 u-boot모드로 진입한다.

fastboot이라고 치고 대기.

 

USB3503 NINT = OUTPUT LOW!                                                     
ModeKey Check... run normal_boot                                               
No ethernet found.                                                             
Hit any key to stop autoboot:  0                                               
Exynos4412 #                                                                   
Exynos4412 #                                                                   
Exynos4412 #                                                                   
Exynos4412 #                                                                   
Exynos4412 # fastboot                                                          
[Partition table on MoviNAND]                                                  
ptn 0 name='fwbl1' start=0x1 len=N/A (use hard-coded info. (cmd: movi))        
ptn 1 name='bl2' start=N/A len=N/A (use hard-coded info. (cmd: movi))          
ptn 2 name='bootloader' start=N/A len=N/A (use hard-coded info. (cmd: movi))   
ptn 3 name='tzsw' start=N/A len=N/A (use hard-coded info. (cmd: movi))         
ptn 4 name='kernel' start=N/A len=N/A (use hard-coded info. (cmd: movi))       
ptn 5 name='ramdisk' start=N/A len=0x0(~16777216KB) (use hard-coded info. (cmd:)
ptn 6 name='system' start=0x1 len=0x0(~1073741824KB)                           
ptn 7 name='userdata' start=0x1 len=0x0(~-2147483648KB)                        
ptn 8 name='cache' start=0x1 len=0x0(~134217728KB)                             
ptn 9 name='fat' start=0x1 len=0x0(~-616562688KB)                              
OTG cable Connected!                          

 

- 보드에 새로운 커널을 적용하기 위해 아래와 같이 fastboot을 실행해준다. 

 $ fastboot flash kernel arch/arm/boot/zImage
< waiting for device >

 

 

- 장치에서 응답이 없다. 아무래도 드라이버 같은걸 깔아줘야 하나보다.

- adb 명령어를 이용하여 장치 인식이 정상적으로 되고 있는지 확인한다.

- adb도 패키지를 설치해야 한다. 설치후

$ sudo adb devices
List of devices attached

$ sudo adb shell
error: device not found

 

- 장치 검색이 안된다. 드라이버를 설치해야 한다.

 

- http://odroid.us/mediawiki/index.php?title=ADB_Guide

사이트를 참고하여 진행해 보자.

 

- Android SDK를 설치해야 한다.

아래 사이트에서 Standalone 타입을 다운 받았다.

http://developer.android.com/sdk/installing/index.html?pkg=tools

 

$ wget http://dl.google.com/android/android-sdk_r23.0.2-linux.tgz 

 

- 압축해제후 tools 디렉토리내 'android'를 실행하여 sdk manager를 실행한다.

- tools 카테코리이외 패키지는 선택해제한후 설치 진행한다.

 

# USB 장치 인식

- 일반사용자 권한으로 usb장치에 접근하기 위해서는 다음과 같이 한다.

- 다음과 같이 규칙 화일을 생성하고

 

$ sudo gedit /etc/udev/rules.d/51-android.rules 

 

- 아래 내용을 추가한후 저장한다.

SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"

 

- 실행권한을 부여하고 udev 서비스를 다시 시작한다. 

$ sudo chmod a+x /etc/udev/rules.d/51-android.rules

$ sudo service udev restart

 

- adb 명령어를 이용하여 장치가 인식이 되는지 확인.

 

$ adb devices
List of devices attached
BABABEEFBABABEEF device 

 

- fastboot을 이용하여 커널 이미지 적용이 진행된다.

 

$ fastboot flash kernel linux-odroid-3.0.y-android/arch/arm/boot/zImage
sending 'kernel' (3402 KB)...
OKAY [  0.976s]
writing 'kernel'...
OKAY [  0.392s] 

 

- adb를 이용해서도 module과 커널을 업데이트 할 수 있다. fastboot을 이용한 업데이트는 u-boot 모드에서 fastboot명령어를 실행하고 대기한 상태에서 실행하는것이지만 abd를 이용할때는 보드가 부팅이 완료된 상태에서 진행하면 된다.

 

$ adb remount
$for module in `find . -iname *.ko`; do adb push $module /system/lib/modules ; done

$ adb push arch/arm/boot/zImage /system/lib/modules

# Flashing the kernel from Android itself:
$ adb shell
$ cd /system/lib/modules
$ busybox dd conv=notrunc seek=2455 bs=512 if=zImage of=/dev/block/mmcblk0
$ sync
$ exit
$ adb reboot 

 

# 안드로이드 버젼 확인

- 현재 안드로이드 버젼 확인은 보드 콘솔창에서 아래와 같이 명령어를 실행하면 된다.

 

root@android:/ # getprop ro.build.description                                  
odroidu-eng 4.1.2 JZO54M eng.codewalker.20140620.172249 test-keys              
root@android:/ # getprop ro.build.version.release                              
4.1.2                                                                          
root@android:/ #

 

# 안드로이드 소스 다운로드

- repo 설치를 위해 home 디렉토리에 작업 디렉토리를 따로 만든다. 

$ mkdir ~/bin
$ PATH=~/
bin:$PATH 

 

- repo 툴을 다운로드하고 실행가능하게 변경한다.

 

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a
+x ~/bin/repo

 

- 작업 디렉토리로 이동하여 repo 초기화및 소스 동기화를 한다.

 

$ repo init -u https://github.com/hardkernel/android.git -b 4412_4.1.2_master
$ repo sync
$ repo start 4412_4.1.2_master --all

 

-  빌드 실행

 

$ ./build_android.sh odroidu

 

- 다음과 같은 메세지가 나오면 빌드가 성공한것이다.

 

ok success !!! 

 

# 안드로이드 설치

- 보드와 호스트간 usb 케이블로 연결된 상태에서 보드를 리부팅하고 아래와 같이 u-boot 모드에서 fastboot을 실행하여 대기 상태로 만든다.

 

 U-Boot 2010.12-svn (May 12 2014 - 15:05:46) for Exynox4412


CPU: S5PC220 [Samsung SOC on SMP Platform Base on ARM CortexA9]
APLL = 1000MHz, MPLL = 880MHz                                                  
DRAM:  2 GiB                                                                   
                                                                               
PMIC VERSION : 0x00, CHIP REV : 2                                              
TrustZone Enabled BSP                                                          
BL1 version: 20121128                                                          
                                                                               
                                                                               
Checking Boot Mode ... EMMC4.41                                                
REVISION: 2.0                                                                  
Manufacture ID 0x45 [ 15028MB ]                                                
NAME: S5P_MSHC4                                                                
MMC Device 0: 15028 MB                                                         
MMC Device 1: 0 MB                                                             
MMC Device 2 not found                                                         
USB3503 NINT = OUTPUT LOW!                                                     
ModeKey Check... run normal_boot                                               
No ethernet found.                                                             
Hit any key to stop autoboot:  0                                               
Exynos4412 #                                                                   
Exynos4412 #                                                                   
Exynos4412 #                                                                   
Exynos4412 #                                                                   
Exynos4412 #

Exynos4412 # fastboot                                                          
[Partition table on MoviNAND]                                                  
ptn 0 name='fwbl1' start=0x1 len=N/A (use hard-coded info. (cmd: movi))        
ptn 1 name='bl2' start=N/A len=N/A (use hard-coded info. (cmd: movi))          
ptn 2 name='bootloader' start=N/A len=N/A (use hard-coded info. (cmd: movi))   
ptn 3 name='tzsw' start=N/A len=N/A (use hard-coded info. (cmd: movi))         
ptn 4 name='kernel' start=N/A len=N/A (use hard-coded info. (cmd: movi))       
ptn 5 name='ramdisk' start=N/A len=0x0(~16777216KB) (use hard-coded info. (cmd:)
ptn 6 name='system' start=0x1 len=0x0(~1073741824KB)                           
ptn 7 name='userdata' start=0x1 len=0x0(~-2147483648KB)                        
ptn 8 name='cache' start=0x1 len=0x0(~134217728KB)                             
ptn 9 name='fat' start=0x1 len=0x0(~-616562688KB)                              
OTG cable Connected!          

 

- ramdisk 및 시스템 파티션 적용

 

$ fastboot flash ramdisk out/target/product/odroidu/ramdisk-uboot.img

$ fastboot flash system out/target/product/odroidu/system.img

 

- 보드 리부팅

 

$ fastboot reboot

 

 

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

안드로이드 시작하기(SDK 설치)  (0) 2014.03.26
Comments