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
피드 구독하기:
댓글 (Atom)
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...
-
연휴 마지막날 아침... 산책을 하다 한장 찍어보았다. 인생도 마찬가지로 길의 끝을 모른체 선택을 해야하는 경우가 발생한다. 나중에 그 기준이 바뀔수도 있지만. 지금 기준은 많은 사람이 함께 갈 수 있는 길을 선택하고 싶다.
-
□ native modifier 는 자바가 아닌 다른 언어로 작성된 코드를 자바에서 사용하기 위한 것 □ transient modifier 는 객체가 직렬 화되는 과정에서 해당 필드가 저장되지 않아야 한다는 것을 알리기 위해 사용 ...
-
제로보드 세팅. sudo apt-get install apache2 mysql-server libapache2-mod-php5 phpmyadmin ssh 패키지를 이용한 소프트웨어 설치 - APM세팅 및 ssh 설치 ...
댓글 없음:
댓글 쓰기
국정원의 댓글 공작을 지탄합니다.