포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 20MB 입니다.

2010-0517 고도리 씀...

 

http://www.aesop.or.kr

 

인터넷서 돌아다니는 문서들과 개인적인 생각을 정리해서.........

 

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

0. Android란?

 

안드로이드는 인터넷 기업인 구글의 모바일 기기를 위한 개방형 소프트웨어 플랫폼이다. 이 플랫폼의 시작은 2007년 11월에 발표된 보도자료를 통해 OHA(Open Handset Alliance)를 구성하여 개방형 모바일 플랫폼인 안드로이드를 개발한다고 발표되면서 시작되었다. 이 OHA에는 전세계 30여개사(34개)의 이동통신사(스프린트, T-Mobile, NTT 도코모, KDDI, 텔레포니카 등), 휴대폰 제조사(삼성전자, LG전자, 모토롤라, HTC 등), 반도체 제조사(퀄컴, Intel, nVidia, 브로드컴, 인텔, 텍사스 인스트루먼트 등)와 이베이 등이 포함되어 있다.

 

안드로이드 플랫폼은 휴대폰 제조사 및 소비자들에게 응용프로그램을 사용하는데 대한 유연성을 제공하고, 개발자들의 개발환경을 쉽게 만들어 줄 수 있는 환경을 제공하기 위하여 오픈 소스의 형태와 상용화가 가능한 라이센스를 선택하였다. 이러한 플랫폼은 기존의 모바일 기기의 소프트웨어의 개발과 비교했을 때 다양한 개발환경과 많은 응용 프로그램이 개발될 수 있는 환경을 제공하게 된다.

 

기존의 폐쇄적인 이동통신사 중심의 휴대폰 사용/개발 환경을 변경함으로써 얻어진 개방환경에서는 기존의 인터넷 기반의 각종 서비스를 마음대로 활용할 수 있으며, 광고, 검색, 이메일, 지도 등의 기존 서비스 시스템을 가지고 있는 구글의 입장에서는 휴대폰과 인터넷의 컨텐츠 서비스를 쉽고 빠르게 제공할 수 있다는 강점을 가지고 있다.

 

구글의 이와같은 움직임은 애플의 iPhone의 성공과 기존의 WiFi와 3G 망을 이용한 서비스 융합의 필요성, 그리고 기존의 서비스를 이용하여 새로운 인터넷과 모바일 시장을 선점할 수 있는 기반을 갖출 수 있도록 전세계 시장에 Smartphone이라는 새롭게 열리는 시장에 대한 대비를 한 것이라고 볼 수 있으며, 현재(2010년 2월) 그 가능성이 점점 열리고 있다고 볼 수 있다.

 

한마디로, 시작이야 비슷한 아이디어로 시작이 되었겠지만 구글의 안드로이드는 어찌되었건 애플의 iPhone을 그대로 따라한 형태를 취하고 있으며, 실제 응용 프로그램 개발사들의 방향도 iPhone에서의 성공모델을 기반으로 안드로이드 폰으로 진출하고 있는 상황이다

 

안드로이드에 대한 설명을 바로 시작하기 전에 일단 스마트 폰에 대한 개요와 기존의 스마트 폰의 발전방향에 대해서 살펴보겠다. 왜냐하면 현재도 그렇지만 스마트폰은 안드로이드만의 독창적인 기술이 아니며, 기존에서부터 존재한 시스템이기 때문이다.

 

 

1. smartphone이란?

 

스마트폰은 기존의 PDA(Personal Digital Assistant)와 일반 휴대전화의 통합된 형태로 볼 수 있다. PDA는 개인 휴대 컴퓨터의 개념으로 1990년대 말서부터 등장하기 시작하였고, 개인 스케쥴관리, 메모장(필기체 인식 포함), 주소록, 달력 등의 기능들을 가지고 있다.

 

그림>

 

PDA와 휴대전화의 공통점은 널리 사용되는 단말의 형태이지만, 사용하는 측면에 있어서는 차이가 있다. PDA는 주로 통신 모듈이 WiFi와 bluetooth와 같은 단거리를 위한 것이었고, 휴대전화는 통신모듈의 커버리지가 훨 넓기는 하지만, 음성통화가 주 목적이었고 데이터 전송에 대한 대역폭이 작은 특징을 가지고 있다.

 

그리고, 각 목적에 따라서 전원관리에 대한 측면도 서로 다르게 적용이 되었다. PDA의 경우는 전원관리가 그다지 좋지 않았던 반면에, 상대적으로 휴대전화는 오랜 시간동안 사용할 수 있는 환경이 되도록 구성되었다. 이와 같은 부분은 하드웨어적인 측면이 강하다고도 볼 수 있다(LCD 크기 및 WiFi 등).

 

각 휴대폰 제조사들이 2005년도 후반서부터 많은 제조사들이 PDA와 휴대폰의 경계가 모호한 제품들을 생산하기 시작하였고, 시장에서는 이러한 제품을 smartphone으로 부르기 시작하였다.

 

스마트 폰은 기존의 휴대폰과는 다른 PC와 유사한 기능을 제공하는 휴대 단말로 볼 수 있다(PC-Mobile handset convergence).

스마트 폰에 대한 산업적인 정의는 실제로는 없고, 각 제조사마다 각기 다른 운영체제와 미들웨어를 가지고 동작하는게 일반적이다. 제조업체 혹은 소프트웨어 공급자에 따라 완전한 체계적인 표준 인터페이스를 제공하는 운영체제와 응용 프로그램 개발자를 위한 플랫폼을 제공하는 업체도 있는 반면에 간단하게 phone기능에 e-mail, internet, e-book 등과 같은 기능을 추가하는 경우도 있다(이 경우는 무늬만 스마트 폰이라고 볼 수 있다).

 

실제로 스마트 폰이냐 아니냐에 대한 정확한 정의는 없지만 iPhone 혹은 windows mobile phone이 출시된 이후에는 위에세 얘기한 표준 인터페이스를 갖는 운영체제와 응용 프로그램 개발자를 위한 환경이 잘 갖추어진 플랫폼을 갖는 폰을 스마트 폰으로 보는게 알맞을 듯 하다.

 

근래의 추세는 강력한 3D engine을 갖는 Graphic Process Unit 기능과 1080p의 H.264 영상을 디코딩할 수 있는 멀티미디어 엔진등을 갖고 있는 SoC(System on Chip)등이 등장함에 따라서(예를 들어 ARM사의 Cortex-A8에 기반을 둔) 이에 기반을 둔 많은 스마트 폰들이 제조되고 있다.

 

이와 더불에 메모리 단가가 낮아지고, 큰 LCD등이 사용되는 표준화된 Operating System이 등장하게 되었고, 이러한 제품이 적용될 수 있는 시장이 열리게 됨으로써 스마트 폰의 필요성에 대한 요구사항이 늘어나게 되었다.

 

smartphone market 성장에 대한 그림>

 

2. smartphone 증가의 이유

 

스마트폰 증가의 이유로는 여러 가지가 있지만, 가장 큰 것은 휴대 단말의 가격이 싸지면서 기능이 많이 좋아진 것을 들 수 있다.

 

이러한 상황의 배경으로 가장 큰것은 SoC의 발전속도에 가속도가 붙기 시작했고(ARM11과 Cortex-A 시리즈의 발전속도), 이에 따라 칩벤더의 기능/가격 경쟁 때문에 싸면서도 강력한 기능의 SoC가 2007년도 이후서부터 근래까지 시장에 나오게 된 것이다. 이런 경향은 2009년도에 Cortex-A 시리즈의 SoC가 출시되면서 서로 경쟁에 불이 붙게 되었는데, 기존의 SoC와는 차원이 다른 레벨의 성능을 갖고 있는 칩들이 각 제조사에서부터 쏟아져 나오게 되면서 스마트 폰의 기능 경쟁에 불을 붙이게 되었다.

 

현재 스마트 폰의 시장은 뒤에 설명을 다시 하겠지만, Cortex-A8 기반의 SoC가 주를 이루고 있으며(iPhone 3GS와 모토롤라 Droid등의 스마트 폰), 2010년 하반기 혹은 2011년 상반기서부터는 2010년 하반기에 생산되기 시작할 Cortex-A9 MPCore기반의 Dual CPU가 그 기반을 이룰 것으로 보여진다.

 

스마트 폰 증가의 이유는 SoC와 다른 주변 부품들의 발전과 더불어 사용에 대한 Internet의 발달을 들 수가 있다. 기존의 통화위주의 셀룰러 통신이 3G 망으로 발전하면서 데이터 통신을 할 수 있는 상황이 되었으며, 2000년대 초반서부터 서서히 발전이 되어가던 WiFi와 같은 기존의 통신망이 시간이 흐름에 따라 점차 일반화 되어가는 상황과 잘 맞아 떨어진 것이다.

 

기존의 인터넷 서비스가 텍스트와 그래픽 위주에서 멀티미디어 환경으로 발전된 것과 이것을 이동중에 볼 수 있는 환경을 보고 싶어하는 사용자들의 요구와 선구적인 마인드를 갖고 있는 하드웨어/소프트웨어 제조사(ex> Apple 사)의 기술개발에 탄력을 받은 것도 스마트 폰의 수요증가에 한 몫을 한 것으로 볼 수 있다.

 

위의 여러 가지 이유를 제시했지만, 가장 큰 것은 SoC의 발전과 인터넷의 발전을 유심히 지켜보면서 보유하고 있던 소프트웨어 기술을 발전시켜서 기존의 휴대폰과 차별화를 둔 새로운 스마트 폰을 내놓은 애플사의 힘이 가장 컸다고 볼 수 있다. 이것은 스마트 폰 시장의 후발주자인 국내에서도 큰 충격을 주면서 시장을 스마트 폰으로 움직일 수 있는 계기가 되었다(2009년 12월서부터)

 

3. 스마트 폰의 하드웨어 구성

 

일반적인 스마트 폰의 하드웨어는 다음과 같은 구성을 갖는다.

 

1> SoC

주로 ARM코어를 사용한다. 이유는 높은 성능에 따른 저전력 구현이 잘 되어 있기 때문이고, 대부분의 폰관련 칩벤더들이 ARM코어를 선호하기 때문이기도 하다. Android의 경우도 ARM코어를 그 타겟으로 개발하였다(MIPS에도 RMI사의 지원으로 동작하도록 개발은 되었다)

 

ARM은 여러 버전이 존재하는데, Android에서는 주로 ARMv5를 기본 타겟으로 코드가 생성된다. 해서 ARMv4인 ARM920T가 CPU인 SoC들에서는(ex> S3C24xx 시리즈들) 동작되지 않는다. 다만 ARMv5 특징적인 부분을 ARMv4로 수정을 해서 기존에 있는 휴대폰에 포팅하는 Openmoko란 오픈 커뮤니티같은도 존재를 한다. 하지만, 공식 안드로이드 버전이 이를

지원하지 않고, Android가 계속 버전이 올라감에 따라 해당 코드를 계속 발전시켜야 하는 문제점이 생긴다.

 

ARMv6의 경우는 ARMv5보다 훨씬 강력한 기능을 갖는 CPU이긴 하지만(VFP-vector floating point, 32bit SIMD-Single Instruction Multiple data), 실제 적용에서는 강력한 기능을 여러 가지 문제 때문에 사용하지 못하고, 조금 빠른 ARMv5에 가깝게(그냥 clock이 높은 ARMv5) 사용을 한다.

 

이와는 다르게 ARMv7인 Cortex-A 계열(Cortex-A8, Cortex-A9, Scorpion core, Cortex-A9 MPCore)의 CPU에서는 ARM11에서 충분히 활용하지 못하였던 VFP, 128bit SIMD 명령을 사용할 수 있는 NEON technology 등을 충분히 활용할 수 있다.

 

- ARM11 특징

http://www.arm.com/products/processors/classic/arm11/index.php

 

- Cortex-A8 특징

http://www.arm.com/products/processors/cortex-a/cortex-a8.php

 

- Thumb-2 특징

http://www.ecnkoreamag.com/article-2072-ARM%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-Asia.html

 

- SIMD

http://www.terms.co.kr/SIMD.htm

 

Android 2.0 Eclair서부터는 ARMv7을 기본으로 지원하게 되어 있으며, GCC 버전이 높아짐에 따라 위의 기능들을 제대로 활용할 수 있는 기반이 갖추어지게 되었다. 당연히 위의 기능을 이용한 멀티미디어 코덱등의 활용에 있어 기존의 ARM CPU보다 훨씬 강력한 CPU성능을 나타내게 되었다.

 

참고: NEON technology를 이용한 Multimedia codec의 구현은 ffmpeg project의 libavcodec의 sub-directory중 arm 디렉토리를 보면 된다.

"사람은 자기가 보고 싶은 현실만 볼 뿐이다." - Gaius Julius Caesar
엮인글 :
http://www.aesop.or.kr/index.php?mid=Board_Documents_Android_Frameworks&document_srl=34879&act=trackback&key=f8b

유형목

2010.05.17 18:08:32
*.216.81.162

곧 백수가 될 예정이라서..^^;


슬렁슬렁 고도리님의 연재 씨리즈나 쫓아가봐야겠습니다.


이빵호

2010.08.24 20:13:21
*.232.191.146

감사합니다. 초보인 저에게 도움이 많이 되네요.. ^^

List of Articles
번호 제목 글쓴이 날짜 조회 수
64 Google 의 새로운 코덱 VP8 Video Codec 규격자료를 올려 봅니다... file [1] 장석원 2010-05-24 14955
63 [실습-03] android source compile시 battery 부분 patch하기 [7] 고도리 2010-05-24 15897
62 [실습-02] android에서 new product 만들고 compile하기 file [7] 고도리 2010-05-18 13223
» [이론-00] Android의 개요와 구성 part0 [2] 고도리 2010-05-17 12471
60 [실습-01] android 개발환경 세팅과 source download [2] 고도리 2010-05-17 13781
59 [실습-00] android eclair porting을 위한 ubuntu 설치하기 file [6] 고도리 2010-05-17 12321
58 AudioSystem과 AudioSystem.java를 이용한 JNI 단에서의 연결 [1] JhoonKim 2010-04-14 10871
57 AudioPolicyService와 AudioFlinger 및 HAL의 연결 구조 JhoonKim 2010-04-08 11294
56 Android 2.x AudioFlinger와 HAL의 연결 구조 분석 [2] JhoonKim 2010-04-08 19342
55 busybox에 대한 질문 [3] 득드로이드 2010-03-24 8881
54 누가 Android 에 tslib를 포팅해 놓은듯 합니다. file 최종환 2009-11-11 11062
53 Android Battery 부분 조금 정리해 놓은것 file [2] 최종환 2009-11-04 10726
52 Power Management from Linux Kernel to Android file [10] 최종환 2009-11-01 14996
51 이솝 임베디드 포럼 - 10월 31일 Google Android Seminar 발표 ... file [16] 관리자 2009-10-28 10898
50 Dummy Battery 드라이버 입니다. file [3] 관리자 2009-10-10 10263
49 [참고] Android wifi howto - 아직 테스트는 다 못했습니다. file [10] 고도리 2009-09-22 21723
48 [번역] Android Camera Framework 번역 file [7] 고도리 2009-09-10 19665
47 Android home key is not working(home key 동작 안 할경우 ) [1] 고현철 2009-09-10 10597
46 S3C6410 프로세서용 Andoird Kernel 2.6.29 이식 방법 #1 [2] 김재훈 2009-09-04 15823
45 삼성 안드로이드폰(갤럭시) 리눅스 커널 소스코드 file [3] 유형목 2009-09-01 15909

사용자 로그인