2010년 2월 19일 금요일

Beagleboard에 (Android)안드로이드 설치하기


-->
출처(from):

http://code.google.com/p/rowboat/wiki/ConfigureAndBuild#Prepare_your_host_environment


Rowboat (Android for OMAP3)
Beagle 보드에 안드로이드 설치를 위한 설정

하드웨어

  • 보드(Beagle보드나 OMAP3EVM 보드)
  • 이더넷 환경과 시리얼 포트가 갖추어진 호스트 컴퓨터 (리눅스 우분투 8.x/9.04)
  • 시리얼 케이블
  • 파워 (5V)
  • USB 허브
  • USB 이더넷 아답터 (Beagle 보드를 사용할 경우)
  • USB 키보드와 마우스
  • 이더넷 크로스 케이블 혹은 이더넷 허브와 허브와 연결하는 케이블
  • SD카드나 MMC카드를 위한 카드리더
  • 4:3 혹은 16:9 배율의 출력이 가능한 DVI입력을 지원하는 모니터
  • HDMIDVI로 변경해주는 케이블 (Beagle 보드를 사용할 경우)

소프트웨어

  • DHCP 서버 설치하기
  • tftp 서버 설치하기(OMAP3EVM를 사용할 경우)
  • repo 도구 설치하기
  • 리눅스 환경 설정하기

필요한 패키지들

  • Git 1.5.4 나 가장 최근의 것 그리고 GNU Privacy Guard.
  • JDK 5.0과 업데이트 12나 그이상의 것. Java 6은 지원하지 않는다. (@override와 호완되지 않는다)
  • 이 밖에 flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev(선택사항), build-essential, zip, curl, minicom, tftpd, uboot-mkimage등이 필요하다.

우분투 32비트 버전 사용자의 경우
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev minicom tftpd uboot-mkimage

우분투 Intrepid(8.10) 사용자의 경우 libreadline의 새로운 버전이 추가적으로 필요하다.

$ sudo apt-get install lib32readline5-dev

DSP 코어 사용자(?)이 경우 다음의 패키지가 필요하다

$ sudo apt-get install expect

내트워크 환경 설정하기

  • 호스트 즉, 우분투 시스템의 네트워크 아답터 설정하기
sudo ifconfig ethX 10.10.10.1 netmask 255.255.255.0 up

  • 보드와의 네트워크 환경을 위한 DHCP 서버 설정하기
; Example dhpd.conf
default-lease-time 600
max-lease-time 7200
subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.2 10.10.10.10;

host beagleboard_rev_c3 {
hardware ethernet 00:80:C8:xx:xx:xx;
fixed-address 10.10.10.2;
}

host omap3evm_rev_d {
hardware ethernet 00:50:c2:xx:xx:xx;
fixed-address 10.10.10.3;
filename “evm/uImage”; ← this string actual for boot with tftp
}

  • TFTP 서버 설정하기

/etc/xinet.d/tftpd:
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /user/sbin/in.tftpd
server_args = /tftpboot
disable = no
}

소스코드 점검하기

$ mkdir rowboat-android
$ cd worboat-android
$ repo init -u git://gitorious.org/rowboat/manifest.git
$ repo sync

rootfs 만들기

다음은 안드로이드 파일 시스템을 만드는 작업이다. 파일 시스템을 만들기 위해서, 여러분은 작업하고 있는 보드에 대한 정보를 알려주어야 한다. 아래와 같은 값으로 TARGET_PRODUCT 변수의 값을 설정하자.

  • beagleboard
  • omap3evm

또한, 여러분들이 추가적으로 단계별로 테스트하는 작업이 필요한 경우, TARGET_BUILD_VARIANT=tests로 변경하자. 그리고 여러분의 시스템이 멀티코어 시스템이라면 -j8 (혹은 코어와 시피유에 따라서 16)make 명령의 인자로 넘겨주어서 안드로이드 시스템을 만드는데 하나 이상의 코어를 사용하는 것도 가능하다. (역주: 컴파일 시간을 단축시키기위해서)

다음의 문장에서 우리는 OMAP3EVM 보드에 올라갈 단계별 테스트 패키지를 갖고 빌드 시간을 단축하기위한 16 쓰레드를 사용하는 안드로이드를 빌드 할 수 있다.
$ make TARGET_PRODUCT=omap3evm TARGET_BUILD_VARIANT=tests -j8

빌드 과정이 모두 끝나면, 여러분들은 다음의 과정을 통해서 rootfs을 생성할 수 있다.
$ cd out/target/product/omap3evm
$ mkdir android_rootfs
$ cp -r root/* android_rootfs
$ cp -r system android_rootfs
$ sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2

커널 빌드 하기

다음은 여러분의 보드를 위한 커널을 빌드하는 과정이다. 다음의 과정에서 첫 번째 과정은 toolchains (컴파일 도구들) 을 설정하고, 세 번째 과정은 여러분의 보드에 맞는 configuration 을 설정하는 것이다. 여기에 여러분이 사용할 수 있는 config 파일들이 있다.
  • omap3_evm_android_defconfig 파일은 OMAP3EVM을 위한 커널 config 파일
  • omap3_beagle_android_defconfig 파일은 BeagleBoard를 위한 커널 config 파일

네번째 과정은 커널을 빌드하도록 명령하는 것이다. 여기서 보듯이 우리는 ARM에 대한 cross-toolchains을 이용해서 ARM 아키텍쳐에 맞는 빌드를 하도록 make명령을 내린다. 빌드된 결과물은 uImage이고, 다중 쓰레드를 이용한 빌드를 한다. (-j8):

$ cd
$ export PATH=${PWD}/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin;$PATH
$ cd kernel/
$ make ARCH=arm omap3_evm_android_defconfig
$ make ARCH=arm CROSS_COMPILE=arm-eabi- uImage -j8
$ cd ..



SD 카드 준비하기
SD/MMC 카드로 안드로이드 부팅을 하기 위해서, 여러분들은 다음과 같은 파티션을 만들어야 한다.

$ sudo fdisk /dev/
Command (m for help): p

Disk /dev/sdd: 1977 MB, 1977614336 bytes
64 heads, 63 sectors/track, 957 cylinders
Units = cylinders of 4032 * 512 = 2064384 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdd1 1 30 60448+ b W95 FAT32
/dev/sdd2 31 957 1868832 83 Linux

그리고 다음 명령을 이용해서 파티션을 포멧한다.

$ sudo mkfs.msdos /dev/sdd1
$ sudo mkfs.ext3 /dev/sdd2

위에서 생성한 커널 이미지 (예를 들면, uImage)가지고 W95 FAT32 파티션에 위치시키자.

$ sudo mkdir -p /mnt/fat32
$ sudo mount /dev/sdd1 /mnt/fat32
$ sudo cp kernel/arch/arm/boot/uImage /mnt/fat32

EXT3 파티션에다가는 안드로이드 시스템의 rootfs.tar.bz2를 압축해제한다:

$ sudo mkdir -p /mnt/ext3
$ sudo mount /dev/sdd2 /mnt/ext3
$ sudo tar jxfv out/target/product//rootfs.tar.bzw --numeric-owner -C /mnt/ext3


그리고 마지막으로

$ sync
$ sudo umount /mnt/fat32; sudo umount /mnt/ext3

작업 보드 설정하기

다음은 중요하게 점검해야하는 것들중 하나이다.

  • OMAP3EVM를 위한 U-Boot 버전이 2008.10(Jun 16 2009-18:54:50)이어야한다.
  • BeagleBoard를 위한 U-Boot 버번은 2009.08이어야 한다.

Beagleboard

Beagleboard# setenv bootcmd ‘mmc init; fatload mmc 0 84000000 uImage; bootm 84000000’
Beagleboard# setenv bootargs ‘mem=128M androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw init=/init rootwait omapfb.video_mode=640x480MR-16@60
Beagleboard# saveenv
Beagleboard# reset

OMAP3_EVM

이건 하나의 예일 뿐이다. 여러분의 network 상황에 맞게 수정해야한다.

OMAP3_EVM# setenv bootcmd tftp; bootm
OMAP3_EVM# setenv baudrate 115200
OMAP3_EVM# setenv bootargs “mem=128M console=tty0 console=ttyS0,115200n8 androidboot.consol=ttyS0 root=/dev/mmcblk0p2 rw init=/init rootwait”
OMAP3_EVM# setenv ipaddr 10.10.10.3
OMAP3_EVM# setenv netmask 255.255.255.0
OMAP3_EVM# setenv serverip 10.10.10.1
OMAP3_EVM# setenv ethaddr 00:50:c2:xx:xx:xx
OMAP3_EVM# setenv bootfile “evm/uImage” ← full path on host is /tftpboot/evm/uImage
OMAP3_EVM# save

외부 화면 출력장치

여러분이 외부 화면 출력장치가 필요하다면, 추가적인 커널 인자를 활성화하는 것이 필요하다.

  • omap-dss.def-disp=dvi – 이건 보드네에 있는 화면 대신 DVI 출력을 사용한다고 설정한다.
  • omapfb.video_mode=720x480MR-16@60이것은 외부 화면 출력장치의 해상도를 설정한다.

다음은 720x480MR-16@60의 값에 대한 의미:

  • 해상도 – 720x480
  • M – 항상 있어야 하는 옵션
  • R – 성능 저하된 blinking
  • 16 – 16비트 = 65,536컬러
  • @60 – 60Hz

점더 자세한 사항은 modedb Documentation을 살펴보라

그럼 위의 사항을 적용한 완전한 bootargs의 예는 다음과 같다:

OMAP3_EVM# setenv bootargs “mem=128M console=tty0 console=ttyS0,115200n8 androidboot.console=ttyS0 root=/dev/mmcblk0p2 rw init=/init rootwait omap-dss.def_disp=dvi omapfb.video_mode=720x480MR-16@60

여러분이 외부 출력장치를 사용하면 온보드 장치는 꺼지지만, 터치는 아직도 활서화 되어 있다는 사실을 명심해라

첫 시작
작업 보드를 시작하고 초기 설정을 셋팅하고 사전에 설치된 application을 설치하는 안드로이드를 기달려라. 아무런 지시사항도 없을것이다.

댓글 없음:

댓글 쓰기