2012년 10월 30일 화요일

안드로이드 용어 확장.



OMAP : Open Multimedia Application Platform


TI 사의 CPU



쓰인 곳 : 갤럭시 A, 모토로라 드로이드, 드로이드 X, 드로이드 2





위키피데아

QEMU는 가상화 소프트웨어 가운데 하나다. Fabrice Bellard가 만들었으며 x86 이외의 기종을 위해 만들어진 소프트웨어 스택 전체를 가상머신 위에서 실행할 수 있다는 특징이 있다. 동적 변환기(Portable dynamic translation)를 사용한다.



http://andstudy.springnote.com/pages/3700927

◦Google은 app 개발자를 위해 SDK 배포시 emulator 를 포함시켰고, 이 emulator 에서 동작하도록 하기위한 device configuration을 goldfish 라 합니다.





http://elinux.org/Android_on_OMAP#Goldfish

Goldfish

Android SDK isn't targeted for a special (ARM) SoC.

Instead, they use QEMU to create a virtual ARM SoC called Goldfish.

The virtual ARM SoC boots an (currently 2.6.23, m5-rc14) ARM Linux kernel with Goldfish platform support on your (x86) Windows, MacOS X or Linux host.



qemu 큐 에뮤 의 본 모습은 다음과 같다.

http://minimonk.net/3390

vmware 정도라고 보면 된다.



하드웨어 가상 시스템이다.



결국 골드피쉬는 하드웨어 가상 시스템을 위한 플랫폼을 빌드하는 것.

qemu가 하드웨어를 맞춰주면 되겠지.





안드로이드 폴더 구조



1. Android source directory 구조

bionic

- bionic libc



build

- Android Build script & linker directive

1> core/prelink-linux-arm.map

android application이 동작할 때 사용되는

각종 library(.so)들이 로딩되는 번지를 미리 지정한 파일

이유: shared library를 static library처럼 쓰기 위한 것

로딩속도를 빠르게 하기 위함

- generic board에 대한 configuration

1> build/target/board/generic/AndroidBoard.mk

root filesystem 구성을 어떻게 해야하는가??에 대한

directive 파일

android 최종 결과물 구성서 자동으로 포함하고 싶은

binary들에 대한 install등을 결정

custom init.rc 혹은 init.%hardware%.rc 파일들의

install

2> build/target/board/generic/BoardConfig.mk

Android의 Makefile에 기본적으로 포함되는 최상위

Makefile

주로 HAL의 enable/disable과 관련이 깊음

Android.mk 파일에 영향을 주고 Android.mk 파일에서

define을 제어할 수 있도록 설정하는 파일

(ex> BoardConfig.mk 의 BOARD_USES_GENERIC_AUDIO := true

==> frameworks/base/libs/audioflinger/Android.mk

frameworks/base/libs/audioflinger/AudioHardwareInterface.cpp

의 해당 부분 참조



cts

- Compatability Test Suite의 약자

Android platform development kit의 JAVA 호환성 테스트

==> 구글 맘대로..........해줌



dalvik

=> dalvik vm source



development

=> 개발용 app등등....



external

==> Android 고유의 library가 아닌 linux혹은 기존에 작성된

라이브러리/binary들의 소스를 넣어놓은 디렉토리

여기서 작성된 library 중 shared library(.so)와 binary들은

모두

system/bin

system/lib 로 각각 install된다.



framework test app/lib는 여기에 디렉토리 만들어서 작업



frameworks

- policies

PhoneWindowManager 소스가 들어있음

Android의 전체 시스템을 background에서 제어하는

최상위 application인 PhoneWindowManager

PhoneWindowManager는

KeyGuard관련

화면 전체 제어(ex> rotation)

event관리(ex> home key관련)



- base

Android Framework source

/libs: Android base library(C++서부터)

/audioflinger : Android audio service & HAL source

/surfaceflinger : Android video service & HAL

/ui

Application Framework에서 JNI를 통해서

호출되는 Android framework의 client part

HAL(Input device의 경우) - EventHub.cpp

/utils

wrapping class, 압축관련 유틸리티등...

/binder

Android Binder & Anonymous shared memory

/cmds

binder관련인 service manager소스와 여러가지

command들

/media

media관련 client & service library



hardware

HAL source & include

일반적으로 android에서 사용하는 hardware관련 소스들을 포함

반드시 이 디렉토리에만 위치하는 것은 아니다

(vendor 디렉토리에 존재하는 경우도 많음)



- libhardware

board hardware dependcy가 높은 하드웨어 모듈 들

일반적으로 안드로이드 폰에 탑재가 되지 않고, cpu 혹은

제조사의 모듈에 dependent 한 부분들

안드로이드 소스를 이용해서 컴파일 하지 않는 경우가 많고

모듈단위로 직접 컴파일 해서 안드로이드 root fs에

install하는 경우가 많다.



- libhardware_legacy

일반적으로 안드로이드 폰에 거의 반드시 있어야 하는

hardware 모듈, 안드로이드 컴파일시 같이 컴파일 된다.

- wifi/wifi.c



out

android compile 결과물 디렉토리



packages

android 기본 application source

주의해야할 점은 모든 app가 컴파일 되지는 않는다.

모든 app가 컴파일 되기 위해서는

board관련 디렉토리의 Android의 기본 board mk 파일을

수정해야한다.

ex> build/target/product/generic.mk

generic_with_google.mk



vi ntc100.mk



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

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



PRODUCT_MANUFACTURER := aesop

PRODUCT_NAME := ntc100

PRODUCT_DEVICE := ntc100

PRODUCT_BOARD := ntc100

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





prebuilt

toolchain & 필요한 binary



system

android의 기본 binary 소스(ex> init)

/core/init : android init source

/core/vold : external storage 제어 모듈

Android 2.1까지

/vold : vold2, android 2.2서부터 사용



vendor

vendor specific codec

ex> HAL

ex> product list관리





참고 : http://www.aesop.or.kr/?mid=Board_Documents_AndroidPlatform&document_srl=319703





댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...