SlideShare una empresa de Scribd logo
1 de 184
Descargar para leer sin conexión
이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0




               삼성 Exynos-4210 듀얼코어 프로세서로
                   배우는 안드로이드 플랫폼 학습
             www.hardkernel.com




                                                                              1
Agenda
      www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



0.   시작하기에 앞서
1.   기초 과정: 안드로이드 플랫폼을 빌드하고 수정하는 방법
2.   중급 과정: 안드로이드 기반의 임베디드 시스템 구성 및 API활용
3.   하드웨어 확장 및 활용
4.   부록 Google Open Accessory Library


      www.hardkernel.com




                                                                                      2
시작하기에 앞서(1)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



본 과정은 ODROID-A4를 사용하여 안드로이드 시스템 개발에서부터 앱 개발까지의 과정을 포함하
고 있다.

ODROID-A4는 안드로이드 OS가 설치되어진 8GB T-Flash카드와 시스템을 디버깅할 수 있는 디버
그보드, 컴퓨터와 통신할 수 있는 TTA20 to USB케이블로 구성되어 있다.




    www.hardkernel.com                                                   ODROID-A4 IO Board
                                                                             (별도판매)


안드로이드 시스템을 개발하기 위해서는 USB to Serial

변환장치가 별도로 필요하다.

옆의 사진은 전 과정을 수행하기 위한 개발환경이다.

기초과정에서는 Debug Board를 바로 ODROID-A4에 연결

하여 사용하면 된다.




                                                                                              3
시작하기에 앞서(2)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



본 과정은 ㈜하드커널의 엔지니어들에 의해 초안이 만들어지고 비엔지니어가 검증을
했다. 많은 시행착오가 있었고, 따라하는 사람들의 시행착오를 최소화하고자 노력을
많이 했다. 그러나… 컴퓨터에 환경에 따라 바뀌는 요소들은 구글링으로 열심히 찾아
보는 것만이 유일한 방법이었다.

혹시라도 진행하다 환경설정이 안되는 곳은 구글링을 해서 방법을 찾자. 이 글을 작성

     www.hardkernel.com
하고 검증한 사람들의 PC에서 나타나지 않은 부분은 해결해주기 어렵다.

개발환경과 안드로이드 버전이 지속적으로 업그레이드 되고 있다. 이 글을 작성한 시
점이 2012년 3월이라는 점을 감안하자.

환경설정이 끝나고 본 개발에 있어서 궁금한 내용은 게시판에 질문을 남기자. 단, 다른
사람이 한 질문 중에 내가 아는 답이 있으면 꼭 답을 달아주자. 혹시 아는가? 답을 잘
달아주는 사람은 하드커널에서 선물이라도 보내줄지.
http://com.odroid.com/sigong/nf_board/nboard.php?brd_id=odroidaf


                                                                                     4
용어설명(1)
      www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



안드로이드 : 휴대 전화를 비롯한 휴대용 장치를 위한 운영 체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램(

웹 브라우저, 이메일 클라이언트, 단문 메시지 서비스(SMS), 멀티미디어 메시지 서비스(MMS)등)을 포함하고 있는 소프트웨

어 스택이자 모바일 운영 체제이다. 안드로이드는 개발자들이 자바 언어로 응용 프로그램을 작성할 수 있게 하였으며, 컴파일

된 바이트코드를 구동할 수 있는 런타임 라이브러리를 제공한다. 또한 안드로이드 소프트웨어 개발 키트(SDK: Software

Development Kit)를 통해 응용 프로그램을 개발하기 위해 필요한 각종 도구들과 응용 프로그램 프로그래밍 인터페이스(API)

를 제공한다. NDK(Native Development Kit)은 C/C++로 응용 프로그램을 개발할 수 있는 컴파일러/라이브러리/디버거로 구성



      www.hardkernel.com
되어, SDK에 추가로 설치하여 개발에 사용한단.안드로이드는 리눅스 커널 위에서 동작하며, 다양한 안드로이드 시스템 구성
요소에서 사용되는 C/C++ 라이브러리들을 포함하고 있다. 안드로이드는 기존의 자바 가상 머신과는 다른 가상 머신인 달빅

가상 머신을 통해 자바로 작성된 응용 프로그램을 별도의 프로세스에서 실행하는 구조로 되어 있다. 구글은 안드로이드의 모

든 소스 코드(PDK: Platform development kit)를 오픈 소스 라이선스인 아파치 v2 라이선스로 배포하고 있어 기업이나 사용자

는 각자 안드로이드 프로그램을 독자적으로 개발을 해서 탑재할 수 있다. 안드로이드는 지속적으로 버전업되고 있으며, 2011

년 말에 Android 4.0 Ice Cream Sandwich(ICS)가 출현하였다.

오드로이드 (ODROID) : Open + Android 합성어. 안드로이드와 관련된 솔루션을 만드는 (주)하드커널의 제품 브랜드 이름.

ADB : Android Debug Bridge의 약자로, 안드로이드 어플리케이션 등을 개발할 때 에뮬레이터 혹은 실제 안드로이드폰과 인터

페이스를 하여 여러가지 작업을 진행할때 안드로이드 관련 장치들을 조작할 수 있는 다리 역할을 하는 것이다. 주로 파일을 복

사하거나 시스템/응용프로그램 상황을 모니터링/디버깅하는데 사용한다. 개발용 컴퓨터에 해당 USB 디바이스 드라이버를 설
치하여야 하며, OS에 따라 설치 방법이 다르다.


                                                                                      5
용어설명(2)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Fastboot : Fastboot는 개발 전용 통신 프로토콜로 OS관련 자료가 저장된 플래시 메모리를 수정하는데 사용하고, 부트로더에

Fastboot기능을 포함시킨다. 새로 변경해서 빌드된 안드로이드 시스템 파일을 USB를 통해 전송할 때 Fastboot를 사용한다.

내부에서는 ADB 프로토콜의 일부분을 사용하고 있다. ADB용 USB 드라이버와는 별도로 Fastboot용 드라이버 설정이 필요하

다.

임베디드 시스템 : 임베디드 시스템(Embedded system, 내장형 시스템)은 컴퓨터 시스템으로 한가지 또는 몇 가지의 기능만

수행되도록 설계된 것인데 때로 실시간 계산 제한이 따른다. 하드웨어와 기계 부분을 포함하는 전체 장치의 일부로 내장된다.



     www.hardkernel.com
시스템을 동작시키는 소프트웨어를 하드웨어에 내장하여 특수한 기능만을 수행하게 되는 컴퓨터 시스템인 것이다. 일반적으

로 "임베디드 시스템"이란 용어는 엄밀하게 정의된 것은 아닌 것이, 대부분의 시스템은 어느 정도의 확장성 또는 재프로그램능

력을 갖추고 있다. 예를 들어 스마트폰은 임베디드 시스템과 유사한 운영 체제와 프로세서를 사용할 수 있지만, 다른 응용 프

로그램을 설치하거나 다른 주변장치를 연결하는 것이 허용된다. 더 나아가서 재프로그램성을 주요 기능으로 임베디드 시스템
도 보통 소프트웨어 업데이트를 지원할 필요가 있다.

리눅스 : 컴퓨터 운영 체제이며, 그 커널을 뜻하기도 한다. 리눅스는 자유 소프트웨어와 오픈 소스 개발의 가장 유명한 표본으

로 들 수 있다. 리눅스는 다중 사용자, 다중 작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)이다.

엄밀하게 따지면 이 ‘리눅스’라는 용어는 리눅스 커널만을 뜻하지만, 리눅스 커널과 GNU 프로젝트의 라이브러리와 도구들이

포함된, 전체 운영 체제(GNU/리눅스라고도 알려진)를 나타내는 말로 흔히 쓰인다.

처음에 인텔 386 마이크로프로세서를 위해 개발되었으나 현재는 다양한 컴퓨터 아키텍처를 지원한다. 리눅스는 개인용 컴퓨
터에서부터 슈퍼컴퓨터는 물론 휴대 전화, 개인용 비디오 레코더와 같은 임베디드 시스템까지 광범위하게 이용되고 있다. 안

드로이드의 커널은 표준 리눅스를 아주 일부분만 변경하여 사용하고 있다.
                                                                                     6
용어설명(3)
      www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



임베디드 리눅스 : 임베디드 리눅스(Embedded Linux)는 휴대전화, 개인 정보 단말기(PDA), 미디어 플레이어, 셋톱 박스, 그 밖의 가전 기기

, 네트워킹 장비, 기계 제어, 자동화, 내비게이션 장비, 의료 기구와 같은 임베디드 컴퓨터 시스템에서의 리눅스를 이용하는 일이다.

어플리케이션 프로세서 (Application Processor) : 스마트 기기에 들어가는 고집적 CPU를 어플리케이션 프로세서(AP)라고 부른다. 삼성전

자의 Exynos, TI의 OMAP, Freescale의 i.MX 등등 많은 제조사에서 AP를 만들고 있다. 하드커널의 ODROID 기기는 주로 삼성의 Exynos

AP를 기반으로 하고 있음

Exynos : 삼성에선 만드는 AP의 브랜드 이름입니다. 그리스어로 "스마트" + "그린" 이라는 두 단어를 합성한 엑시노스. 엑시노스는 삼성 갤



 –
       www.hardkernel.com
럭시 폰과 ODROID 시리즈에 탑재되어 그 높은 성능이 널리 알려졌다.

     Exynos3110은 S5PC110/S5PV210으로 ARM Cortex-A8 싱글 코어

 –   S5PC110은 512MByte의 모바일 DDR RAM이 PoP(Package on Package)형태로 칩위 내장되어 있고,

 –   S5PV210은 SCP(Single Chip Package)로 외부에 DRAM을 연결하여야 한다.

 –   S5PC110은 갤럭시S 및 갤럭시탭(7인치)에 탑재되었다.

 –   Exynos4210은 S5PC210/S5PV310으로 ARM Cortex-A9 듀얼 코어

 –   S5PC210은 1GByte의 저전력(Low power) DDR2 RAM이 PoP(Package on Package)형태로 칩위 내장되어 있고,

 –   S5PV310은 SCP(Single Chip Package)로 외부에 DRAM을 연결하여야 한다.

 –   S5PC210은 갤럭시 S2 및 해외용 갤럭시 노트에 탑재되었다.


                                                                                              7
용어설명(4)
        www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



안드로이드 플랫폼 빌드 : 부트로더, 리눅스 커널, 안드로이드 소스 코드를 안드로이드 기기에 전송할 수 있는 형태로 컴파일

하는 과정을 말한다. 안드로이드 빌드는 윈도우즈 계열의 OS에서는 불가능하여 리눅스나 맥OS같은 유닉스 계열에서 수행한

다. 구글은 공식적으로 Ubuntu라는 리눅스 배포판에서 안드로이드 빌드를 지원하고 있다.

호스트 PC : 플랫폼을 빌드하고 안드로이드 기기와 통신을 할 수 있는 개발용 컴퓨터를 호스트 PC라고 부른다. 보통은 우분투
리눅스 배포판을 설치하여 사용하고, 스스로 문제 해결이 가능하고 익숙하다면 다른 리눅스 배포판도 가능하다. 최신 안드로

이드 4.0 ICS의 경우 인텔 i5 쿼드코어 프로세서 기반의 쿼드코어 프로세서에서 2시간 이상의 빌드 시간이 필요한 경우도 있다



        www.hardkernel.com
. 따라서 코어가 많고 클럭이 빠른 최신 프로세서로 Host PC를 구성할 필요가 있다. ADB/Fastboot를 위한 USB 포트와는 별도

로 콘솔 통신을 위한 RS232C 포트가 필요하다.RS232C 포트가 내장된 컴퓨터는 거의 없으므로, USB형 RS232C 어댑터를 별

도로 구입해야만 한다. "USB Serial", "USB RS232" 등으로 검색하면 저렴한 제품들이 시중에 많이 있다. 오드로이드의 경우

디버그 보드를 본체에 꽂고 RS232를 연결한다.

콘솔 통신 : 시리얼 통신, TTY 통신, 시리얼 모니터링, 시리얼 터미널 등등 다양한 이름으로 불리고 있으며, 일반적으로 개발

보드에 탑재된 프로세서의 직렬(UART) 통신 포트와 호스트 PC의 직렬 통신 포트를 연결하여 보드의 상태를 점검하거나 개발

에 필요한 명령어/데이터를 보내고 그 결과를 볼 수 있는 기본적인 통신을 말한다. 호스트 PC에는 minicom이나 그래픽 UI가

가능한 PuTTY같은 프로그램을 이용한다. PuTTY는 리눅스/윈도우용이 모두 있다. 일반적으로 직렬 통신 설정은 115200-N81

이며, Hardware 흐름 제어는 사용하지 않는다.

http://www.plugcomputer.org/plugwiki/index.php/Serial_terminal/Linux/Programs




                                                                                        8
용어설명(5)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



안드로이드 플랫폼 개발 보드 : 안드로이드 플랫폼을 이식하여 실행시킬 수 있는 고성능 프로세서, 대용량 RAM과 플래시

(Flash) 메모리, 디스플레이, 통신 장치, 각종 입출력 버스 및 부가 요소로 구성된 기기를 말하며 회로 PCB와 각종 부품이 조립

된 형태이다. 전체 회로도와 주요 부품에 대한 자료가 제공되어 응용 기기를 만들 수 있도록 도와주며, 안드로이드와 유기적으

로 동작 가능한 각종 장치들을 구동할 수 있는 드라이버 및 플랫폼 소스코드를 포함한다. 구매할때 최신 장치들이 다양하게 장

착되어 있는지 확인이 필요하고, BSP 업데이트 이력과 커뮤니티에 의한 지원이 가능한지도 점검해 본다.

BSP : 임베디드 시스템에서 BSP(Board Support Package)는 특정 AP와 개발 보드를 지원하는 운영체제 및 관련 소프트웨어



      www.hardkernel.com
묶음을 말한다. 부트로더, 커널, 운영체제의 소스 코드와 AP 내부 및 외부 추가 장치들을 운영하는 드라이버 소스 코드로 구성

되어 있다. 루트 파일 시스템(Root File System), 툴 체인(toolchain) 그리고 각종 장치를 위한 설정이 함께 지원된다.

루트 파일 시스템 (Root File System : RFS) : 커널 부팅 직후 가장 먼저 마운트(연결)하여 설정/로그인/초기화에 필요한 파일들

과 시스템 라이브러리, 개발 지원 유틸, 사용자를 위한 각종 파일과 어플리케이션용 파일들이 모여 있는 것을 루트 파일 시스
템이라고 부른다. 안드로이드 루트 파일 시스템은 일반적으로 램디스크 이미지와 System partition으로 구성된다.

툴체인 : 컴파일러, 링커, 디버거와 같은 개발용 툴의 묶음을 툴체인(Tool-chain)이라고 한다. 안드로이드 OS 소스는

C/C++/JAVA로 구성되어 있으며, 무료로 공개된 GNU 컴파일러 및 Oracle의 Java를 툴체인을 사용하고 있다. 그 외에도 빌드
과정을 자세히 보면 Python이나 Perl도 설정과 패키징에 사용되고 있다는 것을 알 수 있다.




                                                                                     9
용어설명(6)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



플래시(Flash) 메모리 : 비휘발성 메모리로 전원이 차단되어도 기록된 내용이 계속 유지된다. 반도체 구성에 따라 다양한 제

품 존재하나, 최근에는 대용량 구성에 유리한 NAND 구조의 메모리와 이를 지원하는 컨트롤러가 합체된 형태의 제품이 널리

사용된다. eMMC/SD/MicroSD/SSD 등등 반도체 메모리 기반의 저장 장치들이 그렇다. 오드로이드 시리즈에서는 크기가 작고

착탈이 가능한 Micro-SD 카드를 이용하고 있다. 이 카드에 부트로더, 커널, 램디스크, 안드로이드 시스템까지 모두 기록한다.

저렴하고 구입이 쉬워 유지보수가 편리하고, JTAG같은 고가의 장비없이 저렴한 "메모리 카드 리더기" 만으로 부트로더 기록

이 가능하다.



     www.hardkernel.com
램디스크 : 전원이 꺼지면 내용이 사라지는 램의 속성을 갖고 있는 가상의 디스크 장치를 말한다. 안드로이드에서는 미리 호스

트 PC에서 만들어진 램 디스크 이미지를 플래시 메모리에 저장해 놓고, 부팅하면서 램으로 복사해서 사용한다. 따라서 램디스

크 내용은 사용중에 변경해도 전원을 다시 켜면 초기 상태로 돌아가게 된다. 이 덕분에 시스템이 안정적으로 복원 가능하며 보

안에도 강해질 수 있다. 또한 읽기/쓰기 속도가 빨라 부팅속도나 운영속도를 많이 올려준다. 그렇다고해서 크기를 너무 크게
만들면 실제 OS나 응용프로그램이 사용할 메모리(램)공간이 줄어들게 되므로 적절한 사이즈로 만들어야 한다. 안드로이드에

서 램디스크는 '/' root directory이며 init.rc같은 초기화 스크립트 및 시스템 관련 파일들로 구성되어 있으며, 빌드하는 과정에서

램디스크 이미지 파일에 자동으로 포함된다.

무선랜 : IEEE 802.11은 흔히 무선랜, 와이파이(Wi-Fi)라고 부르는 좁은 지역(Local Area)을 위한 컴퓨터 무선 네트워크에 사

용되는 기술로, IEEE의 LAN/MAN 표준 위원회 (IEEE 802)의 11번째 워킹 그룹에서 개발된 표준 기술을 의미한다. 주파수 대

역과 속도에 따라 a/b/g/n 으로 구분된다. 안드로이드에서는 AP를 통한 인터넷 통신뿐 아니라, 이동통신 데이터 망을 공유할
수 있는 모바일 AP기능, 고속으로 1:1 통신이 가능한 WiFi-Direct 등 최신 응용 기술들이 탑재되고 있다.


                                                                                     10
용어설명(7)
      www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



블루투스 : IEEE 802.15.1 규격을 사용하는 블루투스는 PANs(Personal Area Networks)의 산업 표준이다. 블루투스는 다양한

기기들이 안전하고 저렴한 비용으로 전 세계적으로 이용할 수 있는 무선 주파수(ISM 대역인 2.45GHz)를 이용해 서로 통신할

수 있게 한다. 안드로이드 블루투스 프레임웍은 리눅스 표준으로 사용되는 Bluez Stack을 기반으로 동작한다. RFCOMM 기반

의 안드로이드 API가 제공되어 SPP를 지원하는 주변장치와의 데이터 통신을 간단히 구현할 수 있다. 802.11 PAL(Protocol

Adaptation Layer)를 채용해서 속도를 최대 24Mbps로 향상시킨 블루투스 3.0이 일부 안드로이드 기기에 도입되었으나, 블루

투스 로우 에너지를 포함한 4.0의 적용은 현재 이루어 지지 않고 있다.



      www.hardkernel.com
USB (Universal Serail Bus) : 안드로이드에서 USB는 파일전송을 위한 Mass Storage 기능외에도, ADB/Fastboot와 같은 개발

에 꼭 필요한 인터페이스로 사용된다. 휴대폰에서는 내부 배터리 충전을 위한 전원 소스로 사용되기도 한다. 호스트 기능을 탑

재된 안드로이드 기기도 점차 많아지고 있는 추세이다.

ADK (Accessory Development Kit) :구글의 Open Accessory Library를 이용해서 스마트 기기용 주변장치를 개발할 수 있는 하
드웨어/펌웨어 기반의 키트를 의미한다. 일반적으로 안드로이드 기기에 내장된 USB-device포트와 ADK에 내장된 MCU의

USB-host 포트를 연결하여 통신을 한다.

GPIO (General Purpose Input Output) : 범용 입출력 포트로 0과 1 디지털 값에 의해 하드웨어 핀의 상태를 변경하거나 읽을
수 있다. 다용도 입출력 포트(GPIO)를 소프트웨어와 연동시키면 전기적 입력을 받거나 출력으로 특정 디바이스를 제어하게

할 수 있다. 간단한 LED 제어 및 키/버튼 입력을 포함해서 대부분의 전기적 On/Off 입출력이 필요한 곳에 사용된다.




                                                                                             11
용어설명(8)
      www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



인터럽트 (Interrupt) : 실행 중인 프로그램을 일시 중단하고 다른 프로그램을 끼워 넣어 실행시키는 것. 인터럽트 요인이 되는

조건이 생겼을 때 실행 중인 프로그램을 중단하여 강제적으로 특정한 주소로 제어를 옮기고, 준비되어 있는 인터럽트 처리 프

로그램을 실행시키며, 그 처리가 끝나면 원래의 프로그램으로 되돌아가서 계속 실행시킨다. 프로그램 처리의 효율화, 입출력

장치의 동시 동작 온라인 처리의 효율화를 기할 수 있다. 인터럽트 요인의 종류로는 입출력 하드웨어 인터럽트, 타이머 인터럽

트, 프로그램에 의한 소프트웨어 인터럽트, 워치독 호출, 장해 인터럽트 등이 있다. 안드로이드 시스템에는 수십가지 이상의

인터럽트와 해당 서비스(인터럽트 처리 프로그램)가 동작하고 있다.



      www.hardkernel.com
UART (universal asynchronous receiver transmitter) :비동기 통신 방식으로 모뎀이나 기타 다른 직렬 장치들과 통신하거나 데

이터를 주고받을 수 있게 한다. UART는 병렬 데이터를 직렬 비트 스트림으로 변환, 또는 복원하고, 패리티 비트를 추가하거나

패리티를 검출, 제거하며, 비동기 통신을 위해 시작 비트와 정지 비트를 추구하고 삭제하는 기능들을 수행한다. 또한, UART

직렬 통신 측의 속도와 중앙 처리 장치(CPU) 속도에는 큰 차이가 있어 완충기(buffer)를 내장하기도 한다 안드로이드 기기에서
는 블루투스, GPS, 디버그 포트 등 3개 이상의 UART가 사용되고 있다.

I2C (Inter Integrated Circuit, "I Square C") : I2C 는 필립스(NXP)에서 개발한 인터페이스 방식으로 소자간 통신으로 널리 사용

되는 버스 중 하나이다. 속도면에서는 다른 방식에 비하여 느리지만 하드웨어적으로 간단한 구성과 대화형 프로토콜을 만들

수 있고 하나의 버스에 많은 수의 노드를 연결 할 수 있다는 큰 장점이 있다. 100Khz/400Khz 두가지 속도가 표준이다. 안드로

이드에서는 카메라 제어, 각종 센서, 배터리 게이지, 터치스크린, PMIC 전원 제어, 진동 모터 드라이버 등등 10여 종류 이상의

장치들이 I2C 인터페이스를 사용하고 있다.




                                                                                                12
용어설명(9)
        www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



I2S (Integrated Interchip Sound, "I Square S") : 'Digital Audio 장치의 직렬 BUS' 표준 통신(인터페이스) 방법을 의미한다. 사운드 입출력(이어폰,스피커,

마이크)을 담당하는 오디오 코덱 IC를 연결하여 데이터를 주고 받는데 이용하는 동기 방식의 시리얼 통신이다. 모바일/스마트기기에서는 PCM 인터페이

스나 AC97 인터페이스 보다는 I2S 인터페이스가 보편적으로 사용된다.


SDIO (Secure Digital Input Output) : SDA 협회에서 만든 인터페이스 방식으로 주로 SD/SDHC 메모리카드를 연결하기위해 사용한다. 무선랜 칩과 어플리

케이션 프로세서를 연결하기 위해서도 SDIO가 사용되고 있다. 이론적으로 4비트 데이터 통신의 경우 25Mhz 클럭일때 최대 100Mbps까지 전송 가능하다.


PWM (Pulse Width Modulation) : PWM 은 Pulse Width Modulation의 약자로 펄스폭 변조 라고 한다. 이는 On Off의 비율을 변화 시켜서 제어하는 방법으



        www.hardkernel.com
로 모터의 속도 제어나 LED등 조명 제품들의 조광(광량제어)등에 많이 사용된다. 디지털 방식으로 아날로그를 표현할 수 있어 편리하게 사용할 수 있다.

PWM의 주기 중에서 높은 전원으로 동작하는 부분이 넓어지면 LED의 밝기가 더 밝아지게 된다. 이런 방법으로 안드로이드 LCD 디스플레이 장치의 백라

이트를 밝기를 제어 할 수 있다.


ADC (Analog Digital Converter) : AD 컨버터(Analog-digital converter)는 연속된 아날로그 입력을 불연속의 디지털 출력으로 변환하는 회로이다. 자연계의

여러 가지 신호는 대부분 신간에 따라 아날로그적(연속적)으로 변화한다. 우리는 이 신호들을 시간에 따라 그 크기를 알아내야 할 필요가 있으며 그 값들

을 프로세서를 통해 처리하고 분석하기도 한다. 이 아날로그 신호를 프로세서에서 처리할 수 있는 디지털 값으로 변환해 주는 장치가 AD 컨버터 이다.


루팅 (Rooting) : 일반적으로 안드로이드 응용프로그램에서 시스템 파일/장치를 제어하려면 권한이 필요하므로 init.rc이라는 초기화 스크립트에 해당 파일

/장치의 권한(permission)을 변경하는 구문을 추가해서 개발한다. 그러나 개발 초기에 여러 파일/장치를 테스트하고 실험할 때 이런 과정이 번거롭게 느껴

질 수 있다. 이럽 번거로운 과정없이 루팅을 적용한 개발 기기의 응용프로그램은 SuperUser 권한으로 안드로이드 시스템의 모든 파일 및 장치에 접근할

수 있다.




                                                                                                                      13
이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0




     1. 기초 과정 :
        안드로이드 플랫폼을 빌드하고 수정하는 방법
             www.hardkernel.com




                                                                              14
Agenda
      www.hardkernel.com    이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



ODROID-A4 SYSTEM 구성 및 Android Booting Process

ODROID-A4 안드로이드 시스템 개발환경 구축

Android SDK 설치하기

Compile ODROID-A4 U-boot and install

Compile Kernel and install


       www.hardkernel.com
Build Android and install

Install NDK and make a simple app
루팅의활용과 방법, 구글 모바일 서비스 테스트




                                                                                       15
이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0




                      ODROID-A4 SYSTEM 구성 및
                       Android Booting Process
             www.hardkernel.com




                                                                              16
Agenda
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



ODROID-A4 SYSTEM 구성
ODROID-A4 Android boot process from power on
ODROID-A4 Bootloader loading process
ODROID-A4 Kernel/Ramdisk/Android loading process



    www.hardkernel.com




                                                                                    17
ODROID-A4 SYSTEM 구성
        www.hardkernel.com    이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0




                             Exynos 4210 SOC          CAM I/F                 Carmera

                             Cortex A9 - Dual           IIS                 Audio codec

                                DDR2 1GB
                                                                            Touchscreen



        www.hardkernel.com
 Boot device
  (SD/MMC)
                              HS-MMC/SD/SDIO            IIC                   Sensors

                                                                              Vibrator
WIFI/Bluetooth                    UART
                                                                             Regulator
                             LCD I/F     SPI           GPIO
                                                                           Battery Monitor

                                   LCD                Keypad               Battery Charger




                         BOOT Device                          DEBUG Port

                      SDMMC Channel 2                           UART 2

                                                                                             18
ODROID-A4 Android boot process from power on
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0




  ODROID Power on


     Bootloader                      Clock, Memory 초기화 및 Kernel, Ramdisk download.



     www.hardkernel.com
        Kernel                       MMU, Interrupt controller 초기화 및 스케줄링 설정.
                                     주변 장치 드라이버 load 및 초기화.


                                     Init.rc parsing, System property 초기화 및 등록.
          Init                       데몬 실행 및 System service 등록.



       Zygote                        Dalvik machine 초기화 및 실행.



   System Server                     각각의 System Service 실행.

                                                                                     19
ODROID-A4 Bootloader loading process
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



                                         DRAM
     Exynos 4210 SOC                                            DRAM
                                        Controller

                                        Controller
           Cortax A9                                        Booting device
                                 4         Nand                              5
                                         Onenand
                                                              (SD/MMC)
                                         SD/MMC
                                          eMMC
                                                            Uboot_bl1.bin

     www.hardkernel.com
      Security sub system                USB OTG


                                 3                    2
                                                              Uboot.bin
      Internal ROM(64KB)              Internal SRAM
             IROM                         (128KB)


                1

 OM(Operating Mode) PIN


1.    OM Pin을 읽어 Boot Device를 결정한다.
2.    Boot Device로 부터 BL1영역의 16Kbytes를 Internal SRAM에 복사한다.
3.    Security sub system으로 부터 16Kbytes의 BL1의 Checksum을 검사한다.
4.    Load되어진 BL1으로 부터 System clock 및 DRAM controller를 초기화 한다.
5.    Bootloader를 DRAM에 복사하고 실행한다.

                                                                                     20
ODROID-A4 Kernel/Ramdisk/Android loading process
         www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


                                        DRAM
 Exynos 4210 SOC
                                       RAMDISK             3       Init            Daemon
      DRAM                              KERNEL
     Controller                                                                     Zygote
                                        UBOOT              1
                                                                    4         5
                                                                                  Dalvik VM      6
    Controller                                         2
        Nand                                                                        System
      Onenand
                                    Booting device
                                                                                    server


         www.hardkernel.com
      SD/MMC                          (SD/MMC)
       eMMC
                                                               System(EXT4)
      USB OTG                           KERNEL                                     Runtime
                                                                Data(EXT4)          library
                                       RAMDISK
                                                               Cache(EXT4)          Service
                                    Normal Partition                                             7
                                                                                  registration
          Raw Partition                                           VFAT


    1.    Uboot로 부터 Boot device의 Ramdisk영역을 읽어 DRAM에 복사한다.
    2.    Uboot로 부터 Boot device의 Kernel영역을 읽어 DRAM에 복사 및 실행한다.
    3.    Kernel은 Ramdisk를 mount하여 root에 있는 init을 실행한다.
    4.    Init에서는 Init.rc를 parsing하고 system property를 설정하며 Android에서
          사용할 partition을 mount 한다.
    5.    Init.rc에 등록되어있는 각각의 Service를 실행한다.
    6.    Zygote가 실행되어 Dalvik VM을 초기화 하고 System server를 구동한다.
    7.    System server로 부터 각각의 Service들을 registration 한다.

                                                                                                     21
이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0




          ODROID-A4 안드로이드 시스템 개발 환경 구축

             www.hardkernel.com




                                                                              22
Agenda
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



안드로이드 Build를 위한 시스템 사양
Windows7 64-bit BIOS 설정변경
Oracle VM Virtual Box
Installing Ubuntu With VirtualBox
Installing Ubuntu

     www.hardkernel.com
안드로이드 시스템 build를 위한 추가 프로그램 설치
Cross compile 환경설정
ODROID와 USB 통신설정
VirtualBox 사용 팁




                                                                                     23
안드로이드 Build를 위한 시스템 사양
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0




안드로이드 시스템 개발은 Ubuntu 10.04 이상을 추천한다.

Windows7 PC에서 개발하는 경우 Virtual Box라는 가상머신을 이용하여
Ubuntu를 설치할 수 있다. 안드로이드 버전2.3부터는 64bit에서만 시스템
Compile이 가능하다.

   www.hardkernel.com
안드로이드 빌드 시간은 CPU, MEMORY ,I/O 의존적이다.

시스템 사양 별 ICS 전체 빌드 시간
– AMD FX8150 - 40분

– Intel i7-3820 - 40분 , 4G으로 오버 클로킹 – 35분 , CCACHE 사용 – 23분




                                                                                   24
Windows7 64-bit BIOS 설정변경
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



BIOS에 들어가 다음을 Enable로 설정을 바꿔준다. 그렇지 않을 경우
VirtualBox 실행이 안되는 것으로 보인다. 다음 설정은 Intel CPU의 경우를 가
정으로 한다.
– Intel Virtualization Technology
– Intel® I-OAT
– Intel® VT-d

    www.hardkernel.com




                                                                                    25
Oracle VM Virtual Box(1)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0




VirtualBox란? http://www.virtualbox.org/
하나의 OS위에 다른 OS를 설치할 수 있게 해주는 Bridge 역할을 한다.

2008년 2월 12일, 썬 마이크로시스템즈는 버추얼박스를 개발한 회사인 이노텍
(Innotek)을 인수하였다. 2009년 4월 20일 오라클이 썬 마이크로시스템즈를 인수하면


     www.hardkernel.com
서 현재 Oracle VM VirtualBox로 배포되고 있다.

현재 개발PC가 Windows7인 경우 Ubuntu를 설치하기 위해 VirtualBox를 먼
저 설치한다.

현재 개발PC가 Ubuntu인 경우는 이 과정을 생략한다.




                                                                                     26
Oracle VM Virtual Box(2)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



버추얼박스 플랫폼 꾸러미 다운로드
아래의 링크에서 현재 사용중인 운영체제를 선택하여 다운 받는다.
https://www.virtualbox.org/wiki/Downloads




     www.hardkernel.com




                                                                                     27
Oracle VM Virtual Box(3)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



다운 받은 설치 파일을 실행 한다.




   www.hardkernel.com



                                               Next 버튼을 누른다.

                                                                                   28
Oracle VM Virtual Box(4)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



1.설치할 구성 요소를 선택한다.




   www.hardkernel.com



                                            그냥 Next 버튼을 꾹 누른다.

                                                                                   29
Oracle VM Virtual Box(5)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



2. 바로 가기 설정을 선택한다.




   www.hardkernel.com



                                            그냥 Next 버튼을 꾹 누른다.

                                                                                   30
Oracle VM Virtual Box(6)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



설치 중에 네트워크 연결이 끊길 수 있다는 경고 안내이다.




   www.hardkernel.com



                                           무시하고 그냥 Yes을 꾹 누른다.

                                                                                  31
Oracle VM Virtual Box(7)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



설치할 준비가 되었다는 안내이다.




  www.hardkernel.com



                       마음의 준비가 되었으면 Install을 꾹 누른다.

                                                                                  32
Oracle VM Virtual Box(8)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



설치 중...




    www.hardkernel.com




                                                                                   33
Oracle VM Virtual Box(9)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



설치가 완료 되었다.




   www.hardkernel.com



                                              Finish을 꾹 누른다.

                                                                                  34
Oracle VM Virtual Box(10)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



 버추얼박스 확장 기능 패키지 다운로드
 오픈소스 버전에서는 몇 가지 기능이 빠져 있기 때문에 운영체제에 상관없이 확장 팩
 을 내려 받는다.




   www.hardkernel.com
바로 실행하기를 하거나 다운받아서 확장 기능 패키지을 설치한다.




                                                                                   35
Oracle VM Virtual Box(11)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



PUEL 라이선스를 동의 하라는 안내입니다.




    www.hardkernel.com


                                  맨 밑으로 스크롤을 하고 라이선스를 “동의합니다” 버튼을 누른다.




                                확장 기능 패키지
                                                                                    36
Installing Ubuntu With VirtualBox(1)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



새 가상 머신 만들기
– 바탕화면에 설치된 VirtualBox를 실행한다.




   www.hardkernel.com




                                                                                  37
Installing Ubuntu With VirtualBox(2)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



가상 머신 생성 – 새로 만들기




   www.hardkernel.com




                                                                                   38
Installing Ubuntu With VirtualBox(3)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



새 가상 머신 만들기 – 운영체제 이름과 종류 설정
– 최신 안드로이드 버전을 개발하기 위해서는 반드시 Linux Ubuntu(64 bit)를 설치
  해야만 하므로 그렇게 만들기로 한다.




   www.hardkernel.com




                                                                                  39
Installing Ubuntu With VirtualBox(4)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



새 가상 머신 만들기– 기본 메모리 크기 설정
•   가상화 우분투의 용도에 따라서 설정 해야 하는 크기가 달라 질수 있으나 자신의
    시스템의 사용크기를 생각해서 정하는 것이 좋다.
•   안드로이드를 빌드 하기 위해서는 가능한 많이 잡는 것이 좋다. 만약에 시스템 메
    모리가 충분하다면, 기본 메모리 크기 설정은 8192MB 이상의 설정을 권장한다.
•   파란색 눈금을 넘어서 메모리 크기

     www.hardkernel.com
    를 설정하면, 호스트 PC의 시스템
    메모리 부족으로, 호스트 PC가 느려
    질 수 있다.
•   메모리 크기 설정을 자기 시스템에
    알맞은 크기를 정하고, 다음을
    누른다.




                                                                                    40
Installing Ubuntu With VirtualBox(5)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



새 가상 머신 만들기– 새 가상 디스크 만들기




   www.hardkernel.com




                                                                                  41
Installing Ubuntu With VirtualBox(6)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



새 가상 머신 만들기– 새 가상 디스크 파일 형식을 선택하기




   www.hardkernel.com




                                                                                  42
Installing Ubuntu With VirtualBox(7)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



새 가상 머신 만들기– 새 가상 디스크 저장소 설정
– 동적 크기로 선택하는 것이 컴파일이 더 빠르다.




   www.hardkernel.com




                                                                                  43
Installing Ubuntu With VirtualBox(8)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



새 가상 머신 만들기– 새 가상 디스크 파일 위치와 크기
– 하드디스크 공간이 여유가 있다면, 100GB 정도를 할당 하는 것을 추천한다.




   www.hardkernel.com




                                                                                  44
Installing Ubuntu With VirtualBox(9)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



새 가상 머신 만들기– 다음 설정을 사용하여 새 가상 디스크를 만든다




   www.hardkernel.com




                                                                                  45
Installing Ubuntu With VirtualBox(10)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



새 가상 머신 만들기– 가상 디스크를 만들기가 진행중이다.




   www.hardkernel.com




                                                                                  46
Installing Ubuntu With VirtualBox(11)
           www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



      새 가상 머신 만들기– Ubuntu11.10로 가상 디스크 만들기 완료
      이제 일부 설정을 변경해 주어야 한다. [설정]을 누른다.




           www.hardkernel.com



! 참고 : 2012년 3월 현재 Ubuntu12.04로 진행하고자 하였으나, 빌드가 안되는 문제가 있어서 11.10으로 진행한다. 설치과정은
동일하다.                                                                           47
Installing Ubuntu With VirtualBox(12)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Ubuntu11.10 설치 이미지 설정




   www.hardkernel.com




                                                                                   48
Installing Ubuntu With VirtualBox(13)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



설치 가상 디스크 이미지 선택하기




   www.hardkernel.com




                                                                                  49
Installing Ubuntu With VirtualBox(14)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



아래 링크에서 내려 받은 이미지를 선택
– http://ubuntu.com/download/ubuntu/download




    www.hardkernel.com




                                                                                    50
Installing Ubuntu With VirtualBox(15)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



가상이미지 부팅 시작하기




  www.hardkernel.com




                                                                                  51
Installing Ubuntu(1)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



언어 설정를 한국어 선택하고, Ubuntu 깔기




   www.hardkernel.com




                                                                                   52
Installing Ubuntu(2)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Ubuntu 깔면서 업데이트 확인 하고, 까는 유형 선택 하기




   www.hardkernel.com




                                                                                   53
Installing Ubuntu(3)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



디스크를 지우고 Ubuntu 깔기, 시간 대 선택




   www.hardkernel.com




                                                                                   54
Installing Ubuntu(4)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



글자판 배치, 계정 이름 , 비밀 번호 설정
– 이 비밀번호는 관리자 권한으로 계속 확인이 필요하므로 잊어버리지 않도록 해야
  한다.




   www.hardkernel.com




                                                                                   55
Installing Ubuntu(5)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



깔기 중 …




   www.hardkernel.com




                                                                                   56
Installing Ubuntu(6)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



다 깔렸으며, 컴퓨터를 다시 시작




   www.hardkernel.com




                                                                                   57
Installing Ubuntu(7)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



불완전한 언어 지원 : 이미 설치되어진 경우 메시지가 안나올 수도 있다.




   www.hardkernel.com




                                                                                   58
Installing Ubuntu(8)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



게스트 확장 설치




   www.hardkernel.com




                                                                                   59
Installing Ubuntu(9)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Terminal 실행하기




    www.hardkernel.com




                                                                                    60
안드로이드 시스템 build를 위한 추가 프로그램 설치(1)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Terminal에서 꾸러미(Package) 정보 갱신하고, 업그레이드 하기
 – 아래의 명령어를 실행한다.




  sudo apt‐get update ‐‐yes && sudo apt‐get upgrade ‐‐yes

   www.hardkernel.com




                                                                                   61
안드로이드 시스템 build를 위한 추가 프로그램 설치(2)
        www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



필수 꾸러미 깔기
 •    Git 1.5.4 또는 그 이상
 •    JDK 1.6
 •    flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-
      essential, zip, curl, libgl1-mesa-dev.
 •
        www.hardkernel.com
      아래의 명령을 한줄씩 실행한다.


     sudo   apt‐get install git‐core gnupg flex bison gperf build‐essential
     sudo   apt‐get install zip curl zlib1g‐dev libc6‐dev lib32ncurses5‐dev 
     sudo   apt‐get install ia32‐libs x11proto‐core‐dev libx11‐dev xsltproc
     sudo   apt‐get install lib32readline‐gplv2‐dev lib32z‐dev libgl1‐mesa‐dev 
     sudo   apt‐get install  g++‐multilib mingw32 tofrodos python‐markdown libxml2‐utils




 •    더 자세한 설명은 http://source.android.com/source/initializing.html 에서 확인할
      수 있다.

                                                                                           62
안드로이드 시스템 build를 위한 추가 프로그램 설치(3)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


아래의 명령을 실행한다.
Sun Java 6 깔기

  sudo sudo apt‐get install python‐software‐properties&& sudo 
  add‐apt‐repository ppa:ferramroberto/java && sudo apt‐get update 
  && sudo apt‐get install sun‐java6‐jdk sun‐java6‐plugin ‐‐yes

 – 위 터미널창의 내용을 전체 선택해서 붙여넣기를 한다.

    www.hardkernel.com
 – 화살표키로 확인을 선택하고 yes를 선택한다.
Libx11-dev:i386 깔기


  sudo apt‐get install libx11‐dev:i386 ‐‐yes




                                                                                    63
안드로이드 시스템 build를 위한 추가 프로그램 설치(4)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


아래의 명령을 실행한다.


GCC-4.4 깔기

  sudo apt‐get install gcc‐4.4 g++‐4.4 g++‐4.4‐multilib 
  gcc‐4.4‐multilib ‐‐yes


     www.hardkernel.com
  echo "export CC=gcc‐4.4 CXX=g++‐4.4" >> ~/.bashrc




  source ~/.bashrc



U-boot-tools 깔기


  sudo apt‐get install u‐boot‐tools

                                                                                     64
안드로이드 시스템 build를 위한 추가 프로그램 설치(5)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-1
Ubuntu에서 Firefox브라우저에서 아래 링크에서 IA32 GNU/Linux Installer를 내려
받기 https://sourcery.mentor.com/sgpp/lite/arm/portal/release1294




     www.hardkernel.com




                                                                                    65
안드로이드 시스템 build를 위한 추가 프로그램 설치(6)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-2
 – 다운로드를 받으면 기본적으로 다운로드 폴더안에 저장된다.
 – 아래의 명령을 실행한다. 리눅스에 한영 전환 버튼 한영또는 Shift + space


    cd ~/다운로드

     www.hardkernel.com
   sudo chmod a+x arm‐2010q1‐188‐arm‐none‐eabi.bin



    sudo dpkg‐reconfigure ‐plow dash




                                                                                    66
안드로이드 시스템 build를 위한 추가 프로그램 설치(7)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-3
 – 아니오 를 선택하고 Enter를 친다.




     www.hardkernel.com




                                                                                    67
안드로이드 시스템 build를 위한 추가 프로그램 설치(8)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-4
 – 아래의 명령을 실행한다.




   ./arm‐2010q1‐188‐arm‐none‐eabi.bin

     www.hardkernel.com




                                                                                    68
안드로이드 시스템 build를 위한 추가 프로그램 설치(9)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-5




     www.hardkernel.com




                                                                                    69
안드로이드 시스템 build를 위한 추가 프로그램 설치(10)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



 Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-6




      www.hardkernel.com




                                                                                     70
안드로이드 시스템 build를 위한 추가 프로그램 설치(11)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



 Sourcery G++ 2010q1-188 for ARM GNU/Linux 깔기-7




      www.hardkernel.com




                                                                                     71
안드로이드 시스템 build를 위한 추가 프로그램 설치(12)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



 Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-8




      www.hardkernel.com




                                                                                     72
안드로이드 시스템 build를 위한 추가 프로그램 설치(13)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



 Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-9




      www.hardkernel.com




                                                                                     73
Cross compile 환경설정
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0




  cd ~
.bashrc


  gedit ~/.bashrc


     www.hardkernel.com
 – geditor가 열리고 아래와 같이 추가해준다.
 – geditor 는 Ubuntu를 설치하면 자동으로 설치된다.
 export CROSS_COMPILE=arm-none-eabi-

 export ARCH=arm
 PATH=$PATH:/home/odroid/CodeSourcery/Sourcery_G++_Lite/bin;



 – 저장 후 나와서 위의 명령창에 변경사항 적용을 위해서 아래와 같이 입력한다.


  source ~/.bashrc

                                                                                     74
ODROID와 USB 통신설정
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


GNU/Linux 시스템에서 기본적으로 일반 사용자가 USB 장치를 직접 접근 할
수 없다. 접근 하기 위해서 설정이 필요하다.
– /etc/udev/rules.d/51-android.rules 권리자 권한으로 생성한다. 아래의 명령을 실
  행한다.


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

    www.hardkernel.com
– geditor 창이 나타난다.
– 아래 내용을 기입하고 저장한다.
   SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
– 모든 사용자에게 읽기와 실행 권한을 준다. 아래의 명령을 실행한다.


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

– udev 서비스를 다시 시작한다. 아래의 명령을 실행한다.


  sudo service udev restart

                                                                                    75
VirtualBox 사용 팁
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



VirtualBox에서는 모든 USB장치들을 마운트 해줘야 사용이 가능하다.
마운트하는 방법은 해당 장치들을 선택만 해주면 된다.
예를 들면 USB장치가 연결이 되어있는데 adb가 연결이 되지 않았다면 USB
장치를 마운트하지 않았나 확인해보자.



   www.hardkernel.com




                                                                                   76
이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0




                            Android SDK 설치하기

             www.hardkernel.com




                                                                              77
Agenda
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Ubuntu에서 Eclipse 설치하기
Android SDK설치하기
Android SDK path 환경변수 설정
Android SDK 정의
Sample app


     www.hardkernel.com




                                                                                    78
Ubuntu에서 Eclipse 설치하기(1)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0




http://developer.android.com 에서 Installing the SDK 참고.
 – Eclipse 설치하기


   sudo apt‐get install eclipse ‐‐yes



     www.hardkernel.com
 – Eclipse 실행하기


   eclipse




                                                                                     79
Ubuntu에서 Eclipse 설치하기(2)
      www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



  Eclipse를 처음 실행하면 아래와
  같이 작업공간 경로 설정하는 화
  면 나오고, 확인을 누리면, 하면
  옆에 화면과 같이 Welcome 화면
  이 뜬다.



      www.hardkernel.com


다음 실행부터 작업 공간 경로 확인 절차를 넘
  어 가려면 위 내용을 체크를 한다.




                                                                                      80
Ubuntu에서 Eclipse 설치하기(3)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Help->Install New Software… 를 누르면, 아래 와 같은 화면이 표시 된다.




   www.hardkernel.com




                                                                                   81
Ubuntu에서 Eclipse 설치하기(4)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


Add… 누르고 http://download.eclipse.org/releases/indigo 를 Location에 입력 하고, Indigo를
Name에 입력하고 확인을 누른다. Pending 상태에서 빠져 나올 때 까지, 경우에 따라서는 몇 십분
이상 걸릴 수 있다. 맨 아래에 “Web.XML.Java EE and OSGI Enterprise Development Linux
Tools”항목을 선택하고,Next를 누른다.




     www.hardkernel.com




                                                                                     82
Ubuntu에서 Eclipse 설치하기(5)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



전체를 선택하고 Next를 누른다.                           I accept … 를 선택하고 Finish를 누른다.




   www.hardkernel.com




                                                                                   83
Ubuntu에서 Eclipse 설치하기(6)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



업데이트를 시작한다. 업데이트가 끝나면 Restart Now를 클릭한다.




   www.hardkernel.com




                                                                                   84
Android SDK설치하기(1)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Help -> Install New Software 로 가서, Add 를 클릭을 한다.




    www.hardkernel.com




                                                                                    85
Android SDK설치하기(2)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



https://dl-ssl.google.com/android/eclipse/      OK를 누르고, Pending 상태에서 빠져 나오기 까
를 Work with에 기입하고, Name은 ADT Plugin            지는 경우에 따라서는 수십 분 이상이 시간이 소
을 기입하고 OK를 누른다. 문제가 있다면 https://               요될 수 있다.
를 http:// 으로 변경해 본다.                             체크박스를 선택하고 Next를 누른다.




      www.hardkernel.com




                                                                                     86
Android SDK설치하기(3)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Next를 누르고 I accept… 를 선택하고, 라이선스에 동 Finish를 누른다.




   www.hardkernel.com




                                                                                   87
Android SDK설치하기(4)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



소프트웨어가 설치되고 경고메세지가 뜬다. OK를 누른다.




  www.hardkernel.com




                                                                                  88
Android SDK설치하기(5)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



업데이트가 끝나면 Restart Now를 한다.                     Install new SDK를 선택하고 Next를 누
                                               른다. 어디에 설치했는지 잘 기억하자.




    www.hardkernel.com




                                                                                   89
Android SDK설치하기(6)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Yes를 선택하고 Finish를 누른다. 설치한다.




   www.hardkernel.com




                                                                                   90
Android SDK설치하기(7)
   www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



Accept All을 선택하고 Install을 누른다. 설치된다.




    www.hardkernel.com




                                                                                   91
Android SDK설치하기(8)
  www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



설치되고 있는 중이다.




  www.hardkernel.com




                                                                                  92
Android SDK path 환경변수 설정
        www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



.bashrc

 gedit ~/.bashrc

 – geditor가 열리고 아래와 같이 추가해준다.

 export PATH=${PATH}:~/android-sdks/platform-tools

        www.hardkernel.com
 – 저장 후 나와서 위의 명령 창에 변경사항 적용을 위해서 아래와 같이 입력한다.


     source ~/.bashrc

 – 위의 Android SDK 환경 설정을 적용하면, 터미날의 어느 위치에서나 adb,
   fastboot 등의 명령을 사용 할 수 있다.
Java-6-sun jar 교체
 –    /usr/lib/jvm/java-6-sun/bin/jar 에 해당하는 번호를 입력 한다.


      sudo update-alternatives --config jar
                                                                                        93
Android SDK 정의(1)
            www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0

공식 Google release에 의하면 다음과 같이 정의되어 있다.
“Android는 모바일 디바이스를 위한 OS, 미들웨어 그리고 key어플리케이션을 포함하는 소프
트웨어 스택이다. Android SDK는 Java 프로그램 언어를 사용하여 어플리케이션을 개발하기
위해 필요한 툴과 API를 제공한다”
Features:
  Application framework 는 components의 재사용과 교체가 가능하다.
  Dalvik 가상머신은 모바일 디바이스에 맞게 최적화 되어 있다.

            www.hardkernel.com
  Integrated browser based on the open source WebKit engine
  내부에 포함된 브라우저는 open source WebKit 엔진에 기반을 두고 있다.
 최적화된 그래픽 성능을 위한 custom 2D graphics library; 3D graphics은 OpenGL ES 1.0
에 기반한다(하드웨어 가속은 옵션)
  구조화된 data저장을 위해 SQLlite를 사용
  일반적인 오디오,비디오와 이미지 포멧의 미디어를 지원
     (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
  GSM Telephony 지원(하드웨어에 따름)
  Bluetooth, EDGE, 3G, and WiFi (하드웨어에 따름)
  Camera, GPS, compass, and accelerometer (하드웨어에 따름)
 디바이스 에뮬레이터와 디버깅 툴,메모리와 성능 프로파일링(performance profiling) 도구,
                                                           94
그리고 Eclipse IDE를 위한 Plugin등이 포함된 최신 개발 환경을 제공한다.
Android SDK정의(2)
         www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


Application Framework

Android는 개발자에세 오픈 개발 플랫폼을 제공함으로써, 아주 진부하고 혁진적인 어플리케이
션을 빌드할수 있도록 해준다. 개발자에게는 디바이스의 하드웨어의 향상된 기능을 사용하고,
위치정보를 억세스하고, 또는 백그라운드 서비스를 실행하며, 알람을 셑팅하고 상태바에 알림
을 추가하는 등의 많고 많은 기능들을 사용하는데 제한이 없다.


         www.hardkernel.com
개발자는 코어 어플리케이션에서 같은 프래임워크 API를 모두 억세스할수 있다. 어플리케이션
아키텍춰는 간단하게 컨포넌트들을 재사용 할 수 있도록 디자인 되었다. 어떤 어플리케이션은
자기의 기능을 다른 어떤 어플리케이션이든지 사용할 수 있도록 만들 수도 있다(단, 프레임워크
에 의해 관리되는 보안 제약에 기초함). 이 같은 메커니즘은 사용자에 의해서 컨포넌트들이 교
체 될 수 있는 것을 허용한다.




                                                                                         95
Android SDK(3)
          www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


Application Framework(continued...)

아래의 모든 어플리케이션들은 서비스와 시스템에 포함된 것들이다:

  풍부하고 확장 가능한 Views는 리스트(list), 그리드(grid), 텍스트 박스(text box), 버튼
(button), 심지어 임베딩 가능한 웹 브라우저에서와 같은 어플리케이션을 빌드할 때에 사용될
수 있다.

          www.hardkernel.com
  Content Providers 는 어플리케이션이 다른 어플리케이션(주소록과 같은)으로 부터 데이터
를 억세스 하거나 자기 것을 공유할 수 있게 해준다.

  Resource Manager는 지역화된 문자들(localized strings), 그래픽 그리고 레이아웃 파일
(layout files) 같이 비코드(non-code) 리소스들을 억세스할 수 있도록 해준다.

  Activity Manager는 어플리케이션의 라이프 사이클(lifecycle)을 관리하며, 일반적인 어플리
케이션의 네비게이션 히스토리를 관리한다. (단, back stack, 즉 뒤로 돌아가기 기능만 지원함)




                                                                                          96
Sample app
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



제시된 어플리케이션 예제는 유닛 컨버터 이다. 동작 방법은 단순하다.
 – 타입을 선택하고
 – 시작과 끝의 유닛을 선택
 – 변환
어플리케이션에 관련된 래퍼런스는 다음과 같다:


     www.hardkernel.com
http://developer.android.com/guide/topics/fundamentals/activities.html
http://developer.android.com/reference/android/widget/LinearLayout.html
http://developer.android.com/reference/android/widget/TextView.html
http://developer.android.com/reference/android/widget/Spinner.html
http://developer.android.com/reference/android/widget/EditText.html




                                                                                     97
이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0




            Compile ODROID-A4 U-boot and install

             www.hardkernel.com




                                                                              98
Agenda
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



ODROID-A4 U-Boot Source 준비하기
U-Boot Build
Boot Device Partition의 구조
U-Boot BL1 구조
U-Boot BL1 생성

     www.hardkernel.com
U-Boot Fusing
Debugging 환경 설정
U-Boot 실행
Lab/Exam
 – U-Boot를 수정하여 Power LED On/OFF 하기




                                                                                    99
ODROID-A4 U-Boot Source 준비하기
          www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0




                                                                     1
                                                                                  2



          www.hardkernel.com                                                      3


                                                         4



1.   터미널을 실행시킨다.
2.   mkdir –p project/odroid-a4 명령을 실행하여 작업 디렉토리를 생성한다.
3.   ODROID-A4와 함께 배포되어진 source pagkage(source.tar)파일을 작업 디렉토리로 복사한다.
4.   Source package 묶음을 해제 하여 Uboot.tar.gz 파일을 확인한다. (tar xf 명령을 사용한다.)
5.   Uboot source 파일의 압축을 해제한다. (tar xfz 명령을 사용한다.)
6.   uboot 폴더가 생성되며 uboot 폴더 안에 source code가 준비된다.


                                                                                          100
U-Boot Build
          www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0




                                                                                1
                                                                                     2
                                                                                          3


                                                                                     4




           www.hardkernel.com
                                                                                          5


1.   uboot build를 위하여 uboot 폴더로 이동한다.
2.   make distclean 명령을 통하여 기존에 생성되었던 object, config를 초기화한다.
3.   Uboot의 환경설정 파일로 /include/configs/smdkv310.h를 사용한다.
4.   make 명령을 통하여 uboot.bin 과 uboot bl1을 생성한다.
5.   정상적으로 build되는 경우 u-boot.bin 파일이 생성 되었음을 확인 할 수 있다.

                                                                                              101
ODROID-A4의 Boot Device Partition의 구조
          www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0




     Partition Type            Start Sector    Partition Name    Partition Size
                                                Media (VFAT)

       Normal                                   CACHE (EXT4)        128MB
       Partition                                 DATA (EXT4)         1GB
                                 131072         SYSTEM (EXT4)       512MB


          www.hardkernel.com      50561
                                  17793
                                                  Reserved
                                                  RAMDISK            16MB
                                  1409             KERNEL            8MB
       Low Level                  1507           U-BOOT Env          16KB
        Partition
                                   33             U-BOOT             512KB                1
                                    1           U-BOOT BL1           16KB                 2
                                    0               MBR              512B


1.    Uboot build하여 생성되는 u-boot.bin 파일이 기록되는 위치.
2.    mkbl2 app을 사용하여 생성되는 u-boot bl1.bin 파일이 기록되는 위치.

                                                                                          102
U-Boot BL1 구조
             www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



    Build되어진 u-boot.bin                       16 Kbytes – 16 bytes                 U-boot.bin



    U-boot bl1 생성 app                                                U-boot bl1 생성 app


     U-boot BL1.bin 생성                             16 bytes Header             16 Kbytes – 16 bytes




             www.hardkernel.com
  U-boot BL1 Check sum 및 Header 생성 code

Uboot/sd_fuse/c210-mkbl1.c

…
for(i = 0, checksum = 0;i < 16368;i++) {
   Buf1[i+16] = Buf[i];    checksum += Buf1[i+16];
}
*(unsigned long *)(Buf1+0) = 0x1f;      *(unsigned long *)(Buf1+4) = checksum;
Buf1[ 0] ^= 0x53;          Buf1[ 1] ^= 0x35;         Buf1[ 2] ^= 0x50;       Buf1[ 3] ^= 0x43;
Buf1[ 4] ^= 0x32;          Buf1[ 5] ^= 0x31;         Buf1[ 6] ^= 0x30;       Buf1[ 7] ^= 0x20;
Buf1[ 8] ^= 0x48;          Buf1[ 9] ^= 0x45;         Buf1[10] ^= 0x41;       Buf1[11] ^= 0x44;
Buf1[12] ^= 0x45;          Buf1[13] ^= 0x52;         Buf1[14] ^= 0x20;       Buf1[15] ^= 0x20;

for(i = 1; i < 16; i++)    Buf1[i] ^= Buf1[i-1];
…
                                                                                                      103
U-Boot BL1 생성
        www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



                                                                                         1
                                                                                         2
                                                                                3


                                                                                     4
                                                                                    5



        www.hardkernel.com
                                                                                    6




* 기존에 c210-mkbl1 실행 파일을 생성 하였다면 1-5 번 까지는 실행하지 않는다.
1.U-boot BL1 생성 Application source가 있는 folder로 이동한다.
2.Application source가 있는지 확인한다.
3.make 명령으로 c210-mkbl1 application을 build 한다.
4.Application 실행 파일이 생성 되었는지 확인 한다.
5.Uboot 폴더로 돌아간다.
6.C210-mkbl1 app를 사용하여 u-boot_bl1.bin파일을 생성 및 확인한다.
                                                                                             104
U-Boot Fusing(1)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


Uboot Fusing에 사용될 T-Flash와 T-Flash Reader를 준비 한다.




      www.hardkernel.com




                                                                                     105
U-Boot Fusing(2)
      www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


Host PC(Linux)에서 fdisk 명령을 사용하여 T-Flash mount point 를 찾아낸다.




                                                              Host PC와 Card Reader 연결 전
                                                                   fdisk –l 명령어 실행




      www.hardkernel.com                                      Host PC와 Card Reader 연결 후
                                                                   fdisk –l 명령어 실행




                                                               새롭게 감지된 Device node
                                                            (T-Flash mount point : /dev/sde)




                                                                                               106
U-Boot Fusing(3)
            www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


     Host PC(Linux)에서 dd 명령을 사용하여 T-Flash에 uboot를 fusing 한다.




                                                                                    1

                                                                                        2



            www.hardkernel.com                                                              3



                                                                      4




1.   새롭게 감지 되어진 Device node에 Host PC와 접속 되어진 모든 mount를 해제한다.
2.   Boot device partition 중 u-boot 영역에 새로 build되어진 u-boot.bin 파일을 기록한다.
3.   Boot device partition 중 u-boot bl1 영역에 새로 생성된 u-boot_bl1.bin 파일을 기록한다.
4.   Host PC에서 T-Flash로 아직 전송되지 않고 대기중인 데이터를 T-Flash에 모두 Write한다.



                                                                                                107
Debugging 환경 설정(1)
       www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


          Host PC(Linux)와 Target(ODROID-A4) 연결하기


                                                       Host PC(Linux)의
                                                       USB Port에 연결



                   USB to SERIAL
                     Converter


        www.hardkernel.com
Power ON Button
   (JOG Push)
                                                                         RS232 Cable



                                               DEBUG Board
          TARGET(ODROID-
                A4)




                                                                                       108
Debugging 환경 설정(2)
www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


   Host PC(Linux)에 Serial Terminal(Minicom) 설치




www.hardkernel.com




                                                                                109
Debugging 환경 설정(3)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


Host PC(Linux)에서 ls command 를 사용하여 접속된 USB to SERIAL Converter의 Device node 알아낸다.




                                                             Host PC와 USB to SERIAL Converter 연결 전
                                                                         ls 명령어 실행



     www.hardkernel.com
                                                             Host PC와 USB to SERIAL Converter 연결 후
                                                                         ls 명령어 실행




                          새롭게 감지되어진 Device node
               (USB to SERIAL Converter Device node : /dev/ttyUSB0)




                                                                                                     110
Debugging 환경 설정(4)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0

Minicom 환경 설정 (minicom –s command)




                                                    Minicom 환경 설정 command




    www.hardkernel.com
                                                 Minicom 환경 설정
                                                      초기화면




                                                                                    111
Debugging 환경 설정(5)
       www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


Minicom Serial port setup




                                                Serial Port 설정 메뉴 선택



        www.hardkernel.com
       각 메뉴에 할당되어진 Key를
       입력하여 설정값을 수정한다.
                                                          USB to SERIAL Converter
                                                          device node로 변경한다.

                                                           Baudrate 설정 및 flow control설정
                                                          115200, 8 bits, No parity, 1 stop bit
                                                        H/W, S/W Flow control OFF 로 변경한다.




       설정 완료 후 Enter key를 입력하여 이전 메뉴로 돌아간다.

                                                                                                  112
Debugging 환경 설정(6)
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


환경설정 저장 및 minicom 실행




     www.hardkernel.com
                                            현재 환경설정을 저장한다.




                                          환경 설정을 마치고 minicom program을 실행한다.




                                                                                    113
Debugging 환경 설정(7)
www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


                 Minicom 초기 화면




                                   현재 환경설정을 표시한다.



www.hardkernel.com
          HELP 화면을 표시한다.




                                                                                114
Debugging 환경 설정(8)
     www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


Minicom 종료




                                               CTRL-A Z Key를 입력하여 Help화면을 표시한다.




     www.hardkernel.com
                                                  X 또는 Q Key를 입력하여 minicom을 종료한다.




                                                                                     115
U-Boot 실행
      www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0


    TARGET(ODROID-A4)의 Power ON Button을 눌러 U-Boot를 실행한다.




      www.hardkernel.com


Virtualbox에서 진행하는 경우는 디바이스를 찾아서 마운트 해주어야 한다.



                                                                                      116
Lab/Exam
               www.hardkernel.com    이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



      U-Boot를 수정하여 Power LED On/OFF 하기
       uboot/board/samsung/smdkv310/smdkv310.c 파일의 board_late_init() 함수 수정하기


                                                             GPIO_SetFunctionEach(eGPIO_C1, eGPIO_3, eGPO);
…                                                            GPIO_SetDataEach(eGPIO_C1, eGPIO_3, 1);


Int board_late_init(void)                                    {



               www.hardkernel.com
{                                                                int i;
    GPIO_Init();                                                 GPIO_SetFunctionEach(eGPIO_K1, eGPIO_6, eGPO);
    GPIO_SetFunctionEach(eGPIO_X0, eGPIO_0, 0);                  for(i = 0; i < 5; i++) {
    GPIO_SetPullUpDownEach(eGPIO_X0, eGPIO_0, 0);                    GPIO_SetDataEach(eGPIO_K1, eGPIO_6, 0); udelay(500000);
    udelay(10);                                                      GPIO_SetDataEach(eGPIO_K1, eGPIO_6, 1); udelay(500000);
    if (GPIO_GetDataEach(eGPIO_X0, eGPIO_0) == 0 ||              }
                            second_boot_info == 1)           }
    {                                                 수정
        setenv ("bootcmd", CONFIG_BOOTCOMMAND);
    }                                                        GPIO_SetFunctionEach(eGPIO_X3, eGPIO_3, eGPO);
    GPIO_SetFunctionEach(eGPIO_C1, eGPIO_3, eGPO);           GPIO_SetPullUpDownEach(eGPIO_X3, eGPIO_3, 0);
    GPIO_SetDataEach(eGPIO_C1, eGPIO_3, 1);
    GPIO_SetFunctionEach(eGPIO_K1, eGPIO_6, eGPO);
    GPIO_SetDataEach(eGPIO_K1, eGPIO_6, 1);            1.   uboot/board/samsung/smdkv310/smdkv310.c 파일을 수정한다.
    GPIO_SetFunctionEach(eGPIO_X3, eGPIO_3, eGPO);
                                                       2.   Uboot Build과정을 통하여 u-boot.bin과 u-boot_bl1.bin을 생성한다.
    GPIO_SetPullUpDownEach(eGPIO_X3, eGPIO_3, 0);
    GPIO_SetDataEach(eGPIO_X3, eGPIO_3, 1);            3.   Fusing과정을 통하여 u-boot를 fusing한다.
    return 0;                                          4.   Target의 Uboot를 실행하여 정상 동작하는지 검증한다.
}                                                      5.   Power LED는 뒷면 LCD Connecter 옆에 위치한다.

…
                                                                                                                               117
이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0




                       Compile Kernel and install

             www.hardkernel.com




                                                                              118
Agenda
    www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0



ODROID-A4 Kernel Source 준비하기
Kernel Compile
Kernel Fusing
Lab/Exam
 – Keypad 드라이버에 sysfs node를 추가하여 LED On/OFF 제어 하기


     www.hardkernel.com




                                                                                    119
ODROID-A4 Kernel Source 준비하기
           www.hardkernel.com   이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0




                                                                             1
                                                                                   2

                                                                                   3



           www.hardkernel.com
                                                                                   4




1.   배포된 source package(source.tar)파일을 작업 디렉토리로 복사한다.
2.   Source package를 압축해제 하여 kernel.tar.gz 파일을 확인한다. (tar xf 명령어 사용.)
3.   Kernel source 파일의 압축을 해제한다. (tar xfz 명령어 사용.)
4.   kernel 디렉토리가 생성되며 kernel 디렉토리 안에 source code가 준비된다.




                                                                                           120
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10

Más contenido relacionado

Similar a Exynos4210 beginnerrev10

안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명Peter YoungSik Yun
 
강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노chcbaram
 
『안드로이드 시큐리티 인터널』 - 미리보기
『안드로이드 시큐리티 인터널』 - 미리보기『안드로이드 시큐리티 인터널』 - 미리보기
『안드로이드 시큐리티 인터널』 - 미리보기복연 이
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇Seungyong Lee
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)YEONG-CHEON YOU
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driverjumiss
 
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?흥배 최
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발cho hyun jong
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계chcbaram
 
OpenStack
OpenStackOpenStack
OpenStackULUG
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327호상 장
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203doo rip choi
 
Relationship between firmware and module(drvier)
Relationship between firmware and module(drvier)Relationship between firmware and module(drvier)
Relationship between firmware and module(drvier)Jaeock Shim
 
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD StudioDevgear
 

Similar a Exynos4210 beginnerrev10 (20)

안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
 
강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노
 
『안드로이드 시큐리티 인터널』 - 미리보기
『안드로이드 시큐리티 인터널』 - 미리보기『안드로이드 시큐리티 인터널』 - 미리보기
『안드로이드 시큐리티 인터널』 - 미리보기
 
조재완
조재완조재완
조재완
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
System+os study 1
System+os study 1System+os study 1
System+os study 1
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driver
 
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계
 
OpenStack
OpenStackOpenStack
OpenStack
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203
 
Relationship between firmware and module(drvier)
Relationship between firmware and module(drvier)Relationship between firmware and module(drvier)
Relationship between firmware and module(drvier)
 
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
 
PI day in COREA
PI day in COREAPI day in COREA
PI day in COREA
 

Exynos4210 beginnerrev10

  • 1. 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0 삼성 Exynos-4210 듀얼코어 프로세서로 배우는 안드로이드 플랫폼 학습 www.hardkernel.com 1
  • 2. Agenda www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 0. 시작하기에 앞서 1. 기초 과정: 안드로이드 플랫폼을 빌드하고 수정하는 방법 2. 중급 과정: 안드로이드 기반의 임베디드 시스템 구성 및 API활용 3. 하드웨어 확장 및 활용 4. 부록 Google Open Accessory Library www.hardkernel.com 2
  • 3. 시작하기에 앞서(1) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 본 과정은 ODROID-A4를 사용하여 안드로이드 시스템 개발에서부터 앱 개발까지의 과정을 포함하 고 있다. ODROID-A4는 안드로이드 OS가 설치되어진 8GB T-Flash카드와 시스템을 디버깅할 수 있는 디버 그보드, 컴퓨터와 통신할 수 있는 TTA20 to USB케이블로 구성되어 있다. www.hardkernel.com ODROID-A4 IO Board (별도판매) 안드로이드 시스템을 개발하기 위해서는 USB to Serial 변환장치가 별도로 필요하다. 옆의 사진은 전 과정을 수행하기 위한 개발환경이다. 기초과정에서는 Debug Board를 바로 ODROID-A4에 연결 하여 사용하면 된다. 3
  • 4. 시작하기에 앞서(2) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 본 과정은 ㈜하드커널의 엔지니어들에 의해 초안이 만들어지고 비엔지니어가 검증을 했다. 많은 시행착오가 있었고, 따라하는 사람들의 시행착오를 최소화하고자 노력을 많이 했다. 그러나… 컴퓨터에 환경에 따라 바뀌는 요소들은 구글링으로 열심히 찾아 보는 것만이 유일한 방법이었다. 혹시라도 진행하다 환경설정이 안되는 곳은 구글링을 해서 방법을 찾자. 이 글을 작성 www.hardkernel.com 하고 검증한 사람들의 PC에서 나타나지 않은 부분은 해결해주기 어렵다. 개발환경과 안드로이드 버전이 지속적으로 업그레이드 되고 있다. 이 글을 작성한 시 점이 2012년 3월이라는 점을 감안하자. 환경설정이 끝나고 본 개발에 있어서 궁금한 내용은 게시판에 질문을 남기자. 단, 다른 사람이 한 질문 중에 내가 아는 답이 있으면 꼭 답을 달아주자. 혹시 아는가? 답을 잘 달아주는 사람은 하드커널에서 선물이라도 보내줄지. http://com.odroid.com/sigong/nf_board/nboard.php?brd_id=odroidaf 4
  • 5. 용어설명(1) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 안드로이드 : 휴대 전화를 비롯한 휴대용 장치를 위한 운영 체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램( 웹 브라우저, 이메일 클라이언트, 단문 메시지 서비스(SMS), 멀티미디어 메시지 서비스(MMS)등)을 포함하고 있는 소프트웨 어 스택이자 모바일 운영 체제이다. 안드로이드는 개발자들이 자바 언어로 응용 프로그램을 작성할 수 있게 하였으며, 컴파일 된 바이트코드를 구동할 수 있는 런타임 라이브러리를 제공한다. 또한 안드로이드 소프트웨어 개발 키트(SDK: Software Development Kit)를 통해 응용 프로그램을 개발하기 위해 필요한 각종 도구들과 응용 프로그램 프로그래밍 인터페이스(API) 를 제공한다. NDK(Native Development Kit)은 C/C++로 응용 프로그램을 개발할 수 있는 컴파일러/라이브러리/디버거로 구성 www.hardkernel.com 되어, SDK에 추가로 설치하여 개발에 사용한단.안드로이드는 리눅스 커널 위에서 동작하며, 다양한 안드로이드 시스템 구성 요소에서 사용되는 C/C++ 라이브러리들을 포함하고 있다. 안드로이드는 기존의 자바 가상 머신과는 다른 가상 머신인 달빅 가상 머신을 통해 자바로 작성된 응용 프로그램을 별도의 프로세스에서 실행하는 구조로 되어 있다. 구글은 안드로이드의 모 든 소스 코드(PDK: Platform development kit)를 오픈 소스 라이선스인 아파치 v2 라이선스로 배포하고 있어 기업이나 사용자 는 각자 안드로이드 프로그램을 독자적으로 개발을 해서 탑재할 수 있다. 안드로이드는 지속적으로 버전업되고 있으며, 2011 년 말에 Android 4.0 Ice Cream Sandwich(ICS)가 출현하였다. 오드로이드 (ODROID) : Open + Android 합성어. 안드로이드와 관련된 솔루션을 만드는 (주)하드커널의 제품 브랜드 이름. ADB : Android Debug Bridge의 약자로, 안드로이드 어플리케이션 등을 개발할 때 에뮬레이터 혹은 실제 안드로이드폰과 인터 페이스를 하여 여러가지 작업을 진행할때 안드로이드 관련 장치들을 조작할 수 있는 다리 역할을 하는 것이다. 주로 파일을 복 사하거나 시스템/응용프로그램 상황을 모니터링/디버깅하는데 사용한다. 개발용 컴퓨터에 해당 USB 디바이스 드라이버를 설 치하여야 하며, OS에 따라 설치 방법이 다르다. 5
  • 6. 용어설명(2) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Fastboot : Fastboot는 개발 전용 통신 프로토콜로 OS관련 자료가 저장된 플래시 메모리를 수정하는데 사용하고, 부트로더에 Fastboot기능을 포함시킨다. 새로 변경해서 빌드된 안드로이드 시스템 파일을 USB를 통해 전송할 때 Fastboot를 사용한다. 내부에서는 ADB 프로토콜의 일부분을 사용하고 있다. ADB용 USB 드라이버와는 별도로 Fastboot용 드라이버 설정이 필요하 다. 임베디드 시스템 : 임베디드 시스템(Embedded system, 내장형 시스템)은 컴퓨터 시스템으로 한가지 또는 몇 가지의 기능만 수행되도록 설계된 것인데 때로 실시간 계산 제한이 따른다. 하드웨어와 기계 부분을 포함하는 전체 장치의 일부로 내장된다. www.hardkernel.com 시스템을 동작시키는 소프트웨어를 하드웨어에 내장하여 특수한 기능만을 수행하게 되는 컴퓨터 시스템인 것이다. 일반적으 로 "임베디드 시스템"이란 용어는 엄밀하게 정의된 것은 아닌 것이, 대부분의 시스템은 어느 정도의 확장성 또는 재프로그램능 력을 갖추고 있다. 예를 들어 스마트폰은 임베디드 시스템과 유사한 운영 체제와 프로세서를 사용할 수 있지만, 다른 응용 프 로그램을 설치하거나 다른 주변장치를 연결하는 것이 허용된다. 더 나아가서 재프로그램성을 주요 기능으로 임베디드 시스템 도 보통 소프트웨어 업데이트를 지원할 필요가 있다. 리눅스 : 컴퓨터 운영 체제이며, 그 커널을 뜻하기도 한다. 리눅스는 자유 소프트웨어와 오픈 소스 개발의 가장 유명한 표본으 로 들 수 있다. 리눅스는 다중 사용자, 다중 작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)이다. 엄밀하게 따지면 이 ‘리눅스’라는 용어는 리눅스 커널만을 뜻하지만, 리눅스 커널과 GNU 프로젝트의 라이브러리와 도구들이 포함된, 전체 운영 체제(GNU/리눅스라고도 알려진)를 나타내는 말로 흔히 쓰인다. 처음에 인텔 386 마이크로프로세서를 위해 개발되었으나 현재는 다양한 컴퓨터 아키텍처를 지원한다. 리눅스는 개인용 컴퓨 터에서부터 슈퍼컴퓨터는 물론 휴대 전화, 개인용 비디오 레코더와 같은 임베디드 시스템까지 광범위하게 이용되고 있다. 안 드로이드의 커널은 표준 리눅스를 아주 일부분만 변경하여 사용하고 있다. 6
  • 7. 용어설명(3) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 임베디드 리눅스 : 임베디드 리눅스(Embedded Linux)는 휴대전화, 개인 정보 단말기(PDA), 미디어 플레이어, 셋톱 박스, 그 밖의 가전 기기 , 네트워킹 장비, 기계 제어, 자동화, 내비게이션 장비, 의료 기구와 같은 임베디드 컴퓨터 시스템에서의 리눅스를 이용하는 일이다. 어플리케이션 프로세서 (Application Processor) : 스마트 기기에 들어가는 고집적 CPU를 어플리케이션 프로세서(AP)라고 부른다. 삼성전 자의 Exynos, TI의 OMAP, Freescale의 i.MX 등등 많은 제조사에서 AP를 만들고 있다. 하드커널의 ODROID 기기는 주로 삼성의 Exynos AP를 기반으로 하고 있음 Exynos : 삼성에선 만드는 AP의 브랜드 이름입니다. 그리스어로 "스마트" + "그린" 이라는 두 단어를 합성한 엑시노스. 엑시노스는 삼성 갤 – www.hardkernel.com 럭시 폰과 ODROID 시리즈에 탑재되어 그 높은 성능이 널리 알려졌다. Exynos3110은 S5PC110/S5PV210으로 ARM Cortex-A8 싱글 코어 – S5PC110은 512MByte의 모바일 DDR RAM이 PoP(Package on Package)형태로 칩위 내장되어 있고, – S5PV210은 SCP(Single Chip Package)로 외부에 DRAM을 연결하여야 한다. – S5PC110은 갤럭시S 및 갤럭시탭(7인치)에 탑재되었다. – Exynos4210은 S5PC210/S5PV310으로 ARM Cortex-A9 듀얼 코어 – S5PC210은 1GByte의 저전력(Low power) DDR2 RAM이 PoP(Package on Package)형태로 칩위 내장되어 있고, – S5PV310은 SCP(Single Chip Package)로 외부에 DRAM을 연결하여야 한다. – S5PC210은 갤럭시 S2 및 해외용 갤럭시 노트에 탑재되었다. 7
  • 8. 용어설명(4) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 안드로이드 플랫폼 빌드 : 부트로더, 리눅스 커널, 안드로이드 소스 코드를 안드로이드 기기에 전송할 수 있는 형태로 컴파일 하는 과정을 말한다. 안드로이드 빌드는 윈도우즈 계열의 OS에서는 불가능하여 리눅스나 맥OS같은 유닉스 계열에서 수행한 다. 구글은 공식적으로 Ubuntu라는 리눅스 배포판에서 안드로이드 빌드를 지원하고 있다. 호스트 PC : 플랫폼을 빌드하고 안드로이드 기기와 통신을 할 수 있는 개발용 컴퓨터를 호스트 PC라고 부른다. 보통은 우분투 리눅스 배포판을 설치하여 사용하고, 스스로 문제 해결이 가능하고 익숙하다면 다른 리눅스 배포판도 가능하다. 최신 안드로 이드 4.0 ICS의 경우 인텔 i5 쿼드코어 프로세서 기반의 쿼드코어 프로세서에서 2시간 이상의 빌드 시간이 필요한 경우도 있다 www.hardkernel.com . 따라서 코어가 많고 클럭이 빠른 최신 프로세서로 Host PC를 구성할 필요가 있다. ADB/Fastboot를 위한 USB 포트와는 별도 로 콘솔 통신을 위한 RS232C 포트가 필요하다.RS232C 포트가 내장된 컴퓨터는 거의 없으므로, USB형 RS232C 어댑터를 별 도로 구입해야만 한다. "USB Serial", "USB RS232" 등으로 검색하면 저렴한 제품들이 시중에 많이 있다. 오드로이드의 경우 디버그 보드를 본체에 꽂고 RS232를 연결한다. 콘솔 통신 : 시리얼 통신, TTY 통신, 시리얼 모니터링, 시리얼 터미널 등등 다양한 이름으로 불리고 있으며, 일반적으로 개발 보드에 탑재된 프로세서의 직렬(UART) 통신 포트와 호스트 PC의 직렬 통신 포트를 연결하여 보드의 상태를 점검하거나 개발 에 필요한 명령어/데이터를 보내고 그 결과를 볼 수 있는 기본적인 통신을 말한다. 호스트 PC에는 minicom이나 그래픽 UI가 가능한 PuTTY같은 프로그램을 이용한다. PuTTY는 리눅스/윈도우용이 모두 있다. 일반적으로 직렬 통신 설정은 115200-N81 이며, Hardware 흐름 제어는 사용하지 않는다. http://www.plugcomputer.org/plugwiki/index.php/Serial_terminal/Linux/Programs 8
  • 9. 용어설명(5) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 안드로이드 플랫폼 개발 보드 : 안드로이드 플랫폼을 이식하여 실행시킬 수 있는 고성능 프로세서, 대용량 RAM과 플래시 (Flash) 메모리, 디스플레이, 통신 장치, 각종 입출력 버스 및 부가 요소로 구성된 기기를 말하며 회로 PCB와 각종 부품이 조립 된 형태이다. 전체 회로도와 주요 부품에 대한 자료가 제공되어 응용 기기를 만들 수 있도록 도와주며, 안드로이드와 유기적으 로 동작 가능한 각종 장치들을 구동할 수 있는 드라이버 및 플랫폼 소스코드를 포함한다. 구매할때 최신 장치들이 다양하게 장 착되어 있는지 확인이 필요하고, BSP 업데이트 이력과 커뮤니티에 의한 지원이 가능한지도 점검해 본다. BSP : 임베디드 시스템에서 BSP(Board Support Package)는 특정 AP와 개발 보드를 지원하는 운영체제 및 관련 소프트웨어 www.hardkernel.com 묶음을 말한다. 부트로더, 커널, 운영체제의 소스 코드와 AP 내부 및 외부 추가 장치들을 운영하는 드라이버 소스 코드로 구성 되어 있다. 루트 파일 시스템(Root File System), 툴 체인(toolchain) 그리고 각종 장치를 위한 설정이 함께 지원된다. 루트 파일 시스템 (Root File System : RFS) : 커널 부팅 직후 가장 먼저 마운트(연결)하여 설정/로그인/초기화에 필요한 파일들 과 시스템 라이브러리, 개발 지원 유틸, 사용자를 위한 각종 파일과 어플리케이션용 파일들이 모여 있는 것을 루트 파일 시스 템이라고 부른다. 안드로이드 루트 파일 시스템은 일반적으로 램디스크 이미지와 System partition으로 구성된다. 툴체인 : 컴파일러, 링커, 디버거와 같은 개발용 툴의 묶음을 툴체인(Tool-chain)이라고 한다. 안드로이드 OS 소스는 C/C++/JAVA로 구성되어 있으며, 무료로 공개된 GNU 컴파일러 및 Oracle의 Java를 툴체인을 사용하고 있다. 그 외에도 빌드 과정을 자세히 보면 Python이나 Perl도 설정과 패키징에 사용되고 있다는 것을 알 수 있다. 9
  • 10. 용어설명(6) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 플래시(Flash) 메모리 : 비휘발성 메모리로 전원이 차단되어도 기록된 내용이 계속 유지된다. 반도체 구성에 따라 다양한 제 품 존재하나, 최근에는 대용량 구성에 유리한 NAND 구조의 메모리와 이를 지원하는 컨트롤러가 합체된 형태의 제품이 널리 사용된다. eMMC/SD/MicroSD/SSD 등등 반도체 메모리 기반의 저장 장치들이 그렇다. 오드로이드 시리즈에서는 크기가 작고 착탈이 가능한 Micro-SD 카드를 이용하고 있다. 이 카드에 부트로더, 커널, 램디스크, 안드로이드 시스템까지 모두 기록한다. 저렴하고 구입이 쉬워 유지보수가 편리하고, JTAG같은 고가의 장비없이 저렴한 "메모리 카드 리더기" 만으로 부트로더 기록 이 가능하다. www.hardkernel.com 램디스크 : 전원이 꺼지면 내용이 사라지는 램의 속성을 갖고 있는 가상의 디스크 장치를 말한다. 안드로이드에서는 미리 호스 트 PC에서 만들어진 램 디스크 이미지를 플래시 메모리에 저장해 놓고, 부팅하면서 램으로 복사해서 사용한다. 따라서 램디스 크 내용은 사용중에 변경해도 전원을 다시 켜면 초기 상태로 돌아가게 된다. 이 덕분에 시스템이 안정적으로 복원 가능하며 보 안에도 강해질 수 있다. 또한 읽기/쓰기 속도가 빨라 부팅속도나 운영속도를 많이 올려준다. 그렇다고해서 크기를 너무 크게 만들면 실제 OS나 응용프로그램이 사용할 메모리(램)공간이 줄어들게 되므로 적절한 사이즈로 만들어야 한다. 안드로이드에 서 램디스크는 '/' root directory이며 init.rc같은 초기화 스크립트 및 시스템 관련 파일들로 구성되어 있으며, 빌드하는 과정에서 램디스크 이미지 파일에 자동으로 포함된다. 무선랜 : IEEE 802.11은 흔히 무선랜, 와이파이(Wi-Fi)라고 부르는 좁은 지역(Local Area)을 위한 컴퓨터 무선 네트워크에 사 용되는 기술로, IEEE의 LAN/MAN 표준 위원회 (IEEE 802)의 11번째 워킹 그룹에서 개발된 표준 기술을 의미한다. 주파수 대 역과 속도에 따라 a/b/g/n 으로 구분된다. 안드로이드에서는 AP를 통한 인터넷 통신뿐 아니라, 이동통신 데이터 망을 공유할 수 있는 모바일 AP기능, 고속으로 1:1 통신이 가능한 WiFi-Direct 등 최신 응용 기술들이 탑재되고 있다. 10
  • 11. 용어설명(7) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 블루투스 : IEEE 802.15.1 규격을 사용하는 블루투스는 PANs(Personal Area Networks)의 산업 표준이다. 블루투스는 다양한 기기들이 안전하고 저렴한 비용으로 전 세계적으로 이용할 수 있는 무선 주파수(ISM 대역인 2.45GHz)를 이용해 서로 통신할 수 있게 한다. 안드로이드 블루투스 프레임웍은 리눅스 표준으로 사용되는 Bluez Stack을 기반으로 동작한다. RFCOMM 기반 의 안드로이드 API가 제공되어 SPP를 지원하는 주변장치와의 데이터 통신을 간단히 구현할 수 있다. 802.11 PAL(Protocol Adaptation Layer)를 채용해서 속도를 최대 24Mbps로 향상시킨 블루투스 3.0이 일부 안드로이드 기기에 도입되었으나, 블루 투스 로우 에너지를 포함한 4.0의 적용은 현재 이루어 지지 않고 있다. www.hardkernel.com USB (Universal Serail Bus) : 안드로이드에서 USB는 파일전송을 위한 Mass Storage 기능외에도, ADB/Fastboot와 같은 개발 에 꼭 필요한 인터페이스로 사용된다. 휴대폰에서는 내부 배터리 충전을 위한 전원 소스로 사용되기도 한다. 호스트 기능을 탑 재된 안드로이드 기기도 점차 많아지고 있는 추세이다. ADK (Accessory Development Kit) :구글의 Open Accessory Library를 이용해서 스마트 기기용 주변장치를 개발할 수 있는 하 드웨어/펌웨어 기반의 키트를 의미한다. 일반적으로 안드로이드 기기에 내장된 USB-device포트와 ADK에 내장된 MCU의 USB-host 포트를 연결하여 통신을 한다. GPIO (General Purpose Input Output) : 범용 입출력 포트로 0과 1 디지털 값에 의해 하드웨어 핀의 상태를 변경하거나 읽을 수 있다. 다용도 입출력 포트(GPIO)를 소프트웨어와 연동시키면 전기적 입력을 받거나 출력으로 특정 디바이스를 제어하게 할 수 있다. 간단한 LED 제어 및 키/버튼 입력을 포함해서 대부분의 전기적 On/Off 입출력이 필요한 곳에 사용된다. 11
  • 12. 용어설명(8) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 인터럽트 (Interrupt) : 실행 중인 프로그램을 일시 중단하고 다른 프로그램을 끼워 넣어 실행시키는 것. 인터럽트 요인이 되는 조건이 생겼을 때 실행 중인 프로그램을 중단하여 강제적으로 특정한 주소로 제어를 옮기고, 준비되어 있는 인터럽트 처리 프 로그램을 실행시키며, 그 처리가 끝나면 원래의 프로그램으로 되돌아가서 계속 실행시킨다. 프로그램 처리의 효율화, 입출력 장치의 동시 동작 온라인 처리의 효율화를 기할 수 있다. 인터럽트 요인의 종류로는 입출력 하드웨어 인터럽트, 타이머 인터럽 트, 프로그램에 의한 소프트웨어 인터럽트, 워치독 호출, 장해 인터럽트 등이 있다. 안드로이드 시스템에는 수십가지 이상의 인터럽트와 해당 서비스(인터럽트 처리 프로그램)가 동작하고 있다. www.hardkernel.com UART (universal asynchronous receiver transmitter) :비동기 통신 방식으로 모뎀이나 기타 다른 직렬 장치들과 통신하거나 데 이터를 주고받을 수 있게 한다. UART는 병렬 데이터를 직렬 비트 스트림으로 변환, 또는 복원하고, 패리티 비트를 추가하거나 패리티를 검출, 제거하며, 비동기 통신을 위해 시작 비트와 정지 비트를 추구하고 삭제하는 기능들을 수행한다. 또한, UART 직렬 통신 측의 속도와 중앙 처리 장치(CPU) 속도에는 큰 차이가 있어 완충기(buffer)를 내장하기도 한다 안드로이드 기기에서 는 블루투스, GPS, 디버그 포트 등 3개 이상의 UART가 사용되고 있다. I2C (Inter Integrated Circuit, "I Square C") : I2C 는 필립스(NXP)에서 개발한 인터페이스 방식으로 소자간 통신으로 널리 사용 되는 버스 중 하나이다. 속도면에서는 다른 방식에 비하여 느리지만 하드웨어적으로 간단한 구성과 대화형 프로토콜을 만들 수 있고 하나의 버스에 많은 수의 노드를 연결 할 수 있다는 큰 장점이 있다. 100Khz/400Khz 두가지 속도가 표준이다. 안드로 이드에서는 카메라 제어, 각종 센서, 배터리 게이지, 터치스크린, PMIC 전원 제어, 진동 모터 드라이버 등등 10여 종류 이상의 장치들이 I2C 인터페이스를 사용하고 있다. 12
  • 13. 용어설명(9) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 I2S (Integrated Interchip Sound, "I Square S") : 'Digital Audio 장치의 직렬 BUS' 표준 통신(인터페이스) 방법을 의미한다. 사운드 입출력(이어폰,스피커, 마이크)을 담당하는 오디오 코덱 IC를 연결하여 데이터를 주고 받는데 이용하는 동기 방식의 시리얼 통신이다. 모바일/스마트기기에서는 PCM 인터페이 스나 AC97 인터페이스 보다는 I2S 인터페이스가 보편적으로 사용된다. SDIO (Secure Digital Input Output) : SDA 협회에서 만든 인터페이스 방식으로 주로 SD/SDHC 메모리카드를 연결하기위해 사용한다. 무선랜 칩과 어플리 케이션 프로세서를 연결하기 위해서도 SDIO가 사용되고 있다. 이론적으로 4비트 데이터 통신의 경우 25Mhz 클럭일때 최대 100Mbps까지 전송 가능하다. PWM (Pulse Width Modulation) : PWM 은 Pulse Width Modulation의 약자로 펄스폭 변조 라고 한다. 이는 On Off의 비율을 변화 시켜서 제어하는 방법으 www.hardkernel.com 로 모터의 속도 제어나 LED등 조명 제품들의 조광(광량제어)등에 많이 사용된다. 디지털 방식으로 아날로그를 표현할 수 있어 편리하게 사용할 수 있다. PWM의 주기 중에서 높은 전원으로 동작하는 부분이 넓어지면 LED의 밝기가 더 밝아지게 된다. 이런 방법으로 안드로이드 LCD 디스플레이 장치의 백라 이트를 밝기를 제어 할 수 있다. ADC (Analog Digital Converter) : AD 컨버터(Analog-digital converter)는 연속된 아날로그 입력을 불연속의 디지털 출력으로 변환하는 회로이다. 자연계의 여러 가지 신호는 대부분 신간에 따라 아날로그적(연속적)으로 변화한다. 우리는 이 신호들을 시간에 따라 그 크기를 알아내야 할 필요가 있으며 그 값들 을 프로세서를 통해 처리하고 분석하기도 한다. 이 아날로그 신호를 프로세서에서 처리할 수 있는 디지털 값으로 변환해 주는 장치가 AD 컨버터 이다. 루팅 (Rooting) : 일반적으로 안드로이드 응용프로그램에서 시스템 파일/장치를 제어하려면 권한이 필요하므로 init.rc이라는 초기화 스크립트에 해당 파일 /장치의 권한(permission)을 변경하는 구문을 추가해서 개발한다. 그러나 개발 초기에 여러 파일/장치를 테스트하고 실험할 때 이런 과정이 번거롭게 느껴 질 수 있다. 이럽 번거로운 과정없이 루팅을 적용한 개발 기기의 응용프로그램은 SuperUser 권한으로 안드로이드 시스템의 모든 파일 및 장치에 접근할 수 있다. 13
  • 14. 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0 1. 기초 과정 : 안드로이드 플랫폼을 빌드하고 수정하는 방법 www.hardkernel.com 14
  • 15. Agenda www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 ODROID-A4 SYSTEM 구성 및 Android Booting Process ODROID-A4 안드로이드 시스템 개발환경 구축 Android SDK 설치하기 Compile ODROID-A4 U-boot and install Compile Kernel and install www.hardkernel.com Build Android and install Install NDK and make a simple app 루팅의활용과 방법, 구글 모바일 서비스 테스트 15
  • 16. 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0 ODROID-A4 SYSTEM 구성 및 Android Booting Process www.hardkernel.com 16
  • 17. Agenda www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 ODROID-A4 SYSTEM 구성 ODROID-A4 Android boot process from power on ODROID-A4 Bootloader loading process ODROID-A4 Kernel/Ramdisk/Android loading process www.hardkernel.com 17
  • 18. ODROID-A4 SYSTEM 구성 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Exynos 4210 SOC CAM I/F Carmera Cortex A9 - Dual IIS Audio codec DDR2 1GB Touchscreen www.hardkernel.com Boot device (SD/MMC) HS-MMC/SD/SDIO IIC Sensors Vibrator WIFI/Bluetooth UART Regulator LCD I/F SPI GPIO Battery Monitor LCD Keypad Battery Charger BOOT Device DEBUG Port SDMMC Channel 2 UART 2 18
  • 19. ODROID-A4 Android boot process from power on www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 ODROID Power on Bootloader Clock, Memory 초기화 및 Kernel, Ramdisk download. www.hardkernel.com Kernel MMU, Interrupt controller 초기화 및 스케줄링 설정. 주변 장치 드라이버 load 및 초기화. Init.rc parsing, System property 초기화 및 등록. Init 데몬 실행 및 System service 등록. Zygote Dalvik machine 초기화 및 실행. System Server 각각의 System Service 실행. 19
  • 20. ODROID-A4 Bootloader loading process www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 DRAM Exynos 4210 SOC DRAM Controller Controller Cortax A9 Booting device 4 Nand 5 Onenand (SD/MMC) SD/MMC eMMC Uboot_bl1.bin www.hardkernel.com Security sub system USB OTG 3 2 Uboot.bin Internal ROM(64KB) Internal SRAM IROM (128KB) 1 OM(Operating Mode) PIN 1. OM Pin을 읽어 Boot Device를 결정한다. 2. Boot Device로 부터 BL1영역의 16Kbytes를 Internal SRAM에 복사한다. 3. Security sub system으로 부터 16Kbytes의 BL1의 Checksum을 검사한다. 4. Load되어진 BL1으로 부터 System clock 및 DRAM controller를 초기화 한다. 5. Bootloader를 DRAM에 복사하고 실행한다. 20
  • 21. ODROID-A4 Kernel/Ramdisk/Android loading process www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 DRAM Exynos 4210 SOC RAMDISK 3 Init Daemon DRAM KERNEL Controller Zygote UBOOT 1 4 5 Dalvik VM 6 Controller 2 Nand System Onenand Booting device server www.hardkernel.com SD/MMC (SD/MMC) eMMC System(EXT4) USB OTG KERNEL Runtime Data(EXT4) library RAMDISK Cache(EXT4) Service Normal Partition 7 registration Raw Partition VFAT 1. Uboot로 부터 Boot device의 Ramdisk영역을 읽어 DRAM에 복사한다. 2. Uboot로 부터 Boot device의 Kernel영역을 읽어 DRAM에 복사 및 실행한다. 3. Kernel은 Ramdisk를 mount하여 root에 있는 init을 실행한다. 4. Init에서는 Init.rc를 parsing하고 system property를 설정하며 Android에서 사용할 partition을 mount 한다. 5. Init.rc에 등록되어있는 각각의 Service를 실행한다. 6. Zygote가 실행되어 Dalvik VM을 초기화 하고 System server를 구동한다. 7. System server로 부터 각각의 Service들을 registration 한다. 21
  • 22. 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0 ODROID-A4 안드로이드 시스템 개발 환경 구축 www.hardkernel.com 22
  • 23. Agenda www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 안드로이드 Build를 위한 시스템 사양 Windows7 64-bit BIOS 설정변경 Oracle VM Virtual Box Installing Ubuntu With VirtualBox Installing Ubuntu www.hardkernel.com 안드로이드 시스템 build를 위한 추가 프로그램 설치 Cross compile 환경설정 ODROID와 USB 통신설정 VirtualBox 사용 팁 23
  • 24. 안드로이드 Build를 위한 시스템 사양 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 안드로이드 시스템 개발은 Ubuntu 10.04 이상을 추천한다. Windows7 PC에서 개발하는 경우 Virtual Box라는 가상머신을 이용하여 Ubuntu를 설치할 수 있다. 안드로이드 버전2.3부터는 64bit에서만 시스템 Compile이 가능하다. www.hardkernel.com 안드로이드 빌드 시간은 CPU, MEMORY ,I/O 의존적이다. 시스템 사양 별 ICS 전체 빌드 시간 – AMD FX8150 - 40분 – Intel i7-3820 - 40분 , 4G으로 오버 클로킹 – 35분 , CCACHE 사용 – 23분 24
  • 25. Windows7 64-bit BIOS 설정변경 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 BIOS에 들어가 다음을 Enable로 설정을 바꿔준다. 그렇지 않을 경우 VirtualBox 실행이 안되는 것으로 보인다. 다음 설정은 Intel CPU의 경우를 가 정으로 한다. – Intel Virtualization Technology – Intel® I-OAT – Intel® VT-d www.hardkernel.com 25
  • 26. Oracle VM Virtual Box(1) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 VirtualBox란? http://www.virtualbox.org/ 하나의 OS위에 다른 OS를 설치할 수 있게 해주는 Bridge 역할을 한다. 2008년 2월 12일, 썬 마이크로시스템즈는 버추얼박스를 개발한 회사인 이노텍 (Innotek)을 인수하였다. 2009년 4월 20일 오라클이 썬 마이크로시스템즈를 인수하면 www.hardkernel.com 서 현재 Oracle VM VirtualBox로 배포되고 있다. 현재 개발PC가 Windows7인 경우 Ubuntu를 설치하기 위해 VirtualBox를 먼 저 설치한다. 현재 개발PC가 Ubuntu인 경우는 이 과정을 생략한다. 26
  • 27. Oracle VM Virtual Box(2) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 버추얼박스 플랫폼 꾸러미 다운로드 아래의 링크에서 현재 사용중인 운영체제를 선택하여 다운 받는다. https://www.virtualbox.org/wiki/Downloads www.hardkernel.com 27
  • 28. Oracle VM Virtual Box(3) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 다운 받은 설치 파일을 실행 한다. www.hardkernel.com Next 버튼을 누른다. 28
  • 29. Oracle VM Virtual Box(4) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 1.설치할 구성 요소를 선택한다. www.hardkernel.com 그냥 Next 버튼을 꾹 누른다. 29
  • 30. Oracle VM Virtual Box(5) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 2. 바로 가기 설정을 선택한다. www.hardkernel.com 그냥 Next 버튼을 꾹 누른다. 30
  • 31. Oracle VM Virtual Box(6) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 설치 중에 네트워크 연결이 끊길 수 있다는 경고 안내이다. www.hardkernel.com 무시하고 그냥 Yes을 꾹 누른다. 31
  • 32. Oracle VM Virtual Box(7) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 설치할 준비가 되었다는 안내이다. www.hardkernel.com 마음의 준비가 되었으면 Install을 꾹 누른다. 32
  • 33. Oracle VM Virtual Box(8) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 설치 중... www.hardkernel.com 33
  • 34. Oracle VM Virtual Box(9) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 설치가 완료 되었다. www.hardkernel.com Finish을 꾹 누른다. 34
  • 35. Oracle VM Virtual Box(10) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 버추얼박스 확장 기능 패키지 다운로드 오픈소스 버전에서는 몇 가지 기능이 빠져 있기 때문에 운영체제에 상관없이 확장 팩 을 내려 받는다. www.hardkernel.com 바로 실행하기를 하거나 다운받아서 확장 기능 패키지을 설치한다. 35
  • 36. Oracle VM Virtual Box(11) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 PUEL 라이선스를 동의 하라는 안내입니다. www.hardkernel.com 맨 밑으로 스크롤을 하고 라이선스를 “동의합니다” 버튼을 누른다. 확장 기능 패키지 36
  • 37. Installing Ubuntu With VirtualBox(1) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 새 가상 머신 만들기 – 바탕화면에 설치된 VirtualBox를 실행한다. www.hardkernel.com 37
  • 38. Installing Ubuntu With VirtualBox(2) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 가상 머신 생성 – 새로 만들기 www.hardkernel.com 38
  • 39. Installing Ubuntu With VirtualBox(3) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 새 가상 머신 만들기 – 운영체제 이름과 종류 설정 – 최신 안드로이드 버전을 개발하기 위해서는 반드시 Linux Ubuntu(64 bit)를 설치 해야만 하므로 그렇게 만들기로 한다. www.hardkernel.com 39
  • 40. Installing Ubuntu With VirtualBox(4) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 새 가상 머신 만들기– 기본 메모리 크기 설정 • 가상화 우분투의 용도에 따라서 설정 해야 하는 크기가 달라 질수 있으나 자신의 시스템의 사용크기를 생각해서 정하는 것이 좋다. • 안드로이드를 빌드 하기 위해서는 가능한 많이 잡는 것이 좋다. 만약에 시스템 메 모리가 충분하다면, 기본 메모리 크기 설정은 8192MB 이상의 설정을 권장한다. • 파란색 눈금을 넘어서 메모리 크기 www.hardkernel.com 를 설정하면, 호스트 PC의 시스템 메모리 부족으로, 호스트 PC가 느려 질 수 있다. • 메모리 크기 설정을 자기 시스템에 알맞은 크기를 정하고, 다음을 누른다. 40
  • 41. Installing Ubuntu With VirtualBox(5) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 새 가상 머신 만들기– 새 가상 디스크 만들기 www.hardkernel.com 41
  • 42. Installing Ubuntu With VirtualBox(6) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 새 가상 머신 만들기– 새 가상 디스크 파일 형식을 선택하기 www.hardkernel.com 42
  • 43. Installing Ubuntu With VirtualBox(7) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 새 가상 머신 만들기– 새 가상 디스크 저장소 설정 – 동적 크기로 선택하는 것이 컴파일이 더 빠르다. www.hardkernel.com 43
  • 44. Installing Ubuntu With VirtualBox(8) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 새 가상 머신 만들기– 새 가상 디스크 파일 위치와 크기 – 하드디스크 공간이 여유가 있다면, 100GB 정도를 할당 하는 것을 추천한다. www.hardkernel.com 44
  • 45. Installing Ubuntu With VirtualBox(9) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 새 가상 머신 만들기– 다음 설정을 사용하여 새 가상 디스크를 만든다 www.hardkernel.com 45
  • 46. Installing Ubuntu With VirtualBox(10) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 새 가상 머신 만들기– 가상 디스크를 만들기가 진행중이다. www.hardkernel.com 46
  • 47. Installing Ubuntu With VirtualBox(11) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 새 가상 머신 만들기– Ubuntu11.10로 가상 디스크 만들기 완료 이제 일부 설정을 변경해 주어야 한다. [설정]을 누른다. www.hardkernel.com ! 참고 : 2012년 3월 현재 Ubuntu12.04로 진행하고자 하였으나, 빌드가 안되는 문제가 있어서 11.10으로 진행한다. 설치과정은 동일하다. 47
  • 48. Installing Ubuntu With VirtualBox(12) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Ubuntu11.10 설치 이미지 설정 www.hardkernel.com 48
  • 49. Installing Ubuntu With VirtualBox(13) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 설치 가상 디스크 이미지 선택하기 www.hardkernel.com 49
  • 50. Installing Ubuntu With VirtualBox(14) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 아래 링크에서 내려 받은 이미지를 선택 – http://ubuntu.com/download/ubuntu/download www.hardkernel.com 50
  • 51. Installing Ubuntu With VirtualBox(15) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 가상이미지 부팅 시작하기 www.hardkernel.com 51
  • 52. Installing Ubuntu(1) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 언어 설정를 한국어 선택하고, Ubuntu 깔기 www.hardkernel.com 52
  • 53. Installing Ubuntu(2) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Ubuntu 깔면서 업데이트 확인 하고, 까는 유형 선택 하기 www.hardkernel.com 53
  • 54. Installing Ubuntu(3) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 디스크를 지우고 Ubuntu 깔기, 시간 대 선택 www.hardkernel.com 54
  • 55. Installing Ubuntu(4) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 글자판 배치, 계정 이름 , 비밀 번호 설정 – 이 비밀번호는 관리자 권한으로 계속 확인이 필요하므로 잊어버리지 않도록 해야 한다. www.hardkernel.com 55
  • 56. Installing Ubuntu(5) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 깔기 중 … www.hardkernel.com 56
  • 57. Installing Ubuntu(6) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 다 깔렸으며, 컴퓨터를 다시 시작 www.hardkernel.com 57
  • 58. Installing Ubuntu(7) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 불완전한 언어 지원 : 이미 설치되어진 경우 메시지가 안나올 수도 있다. www.hardkernel.com 58
  • 59. Installing Ubuntu(8) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 게스트 확장 설치 www.hardkernel.com 59
  • 60. Installing Ubuntu(9) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Terminal 실행하기 www.hardkernel.com 60
  • 61. 안드로이드 시스템 build를 위한 추가 프로그램 설치(1) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Terminal에서 꾸러미(Package) 정보 갱신하고, 업그레이드 하기 – 아래의 명령어를 실행한다. sudo apt‐get update ‐‐yes && sudo apt‐get upgrade ‐‐yes www.hardkernel.com 61
  • 62. 안드로이드 시스템 build를 위한 추가 프로그램 설치(2) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 필수 꾸러미 깔기 • Git 1.5.4 또는 그 이상 • JDK 1.6 • flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build- essential, zip, curl, libgl1-mesa-dev. • www.hardkernel.com 아래의 명령을 한줄씩 실행한다. sudo apt‐get install git‐core gnupg flex bison gperf build‐essential sudo apt‐get install zip curl zlib1g‐dev libc6‐dev lib32ncurses5‐dev  sudo apt‐get install ia32‐libs x11proto‐core‐dev libx11‐dev xsltproc sudo apt‐get install lib32readline‐gplv2‐dev lib32z‐dev libgl1‐mesa‐dev  sudo apt‐get install  g++‐multilib mingw32 tofrodos python‐markdown libxml2‐utils • 더 자세한 설명은 http://source.android.com/source/initializing.html 에서 확인할 수 있다. 62
  • 63. 안드로이드 시스템 build를 위한 추가 프로그램 설치(3) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 아래의 명령을 실행한다. Sun Java 6 깔기 sudo sudo apt‐get install python‐software‐properties&& sudo add‐apt‐repository ppa:ferramroberto/java && sudo apt‐get update  && sudo apt‐get install sun‐java6‐jdk sun‐java6‐plugin ‐‐yes – 위 터미널창의 내용을 전체 선택해서 붙여넣기를 한다. www.hardkernel.com – 화살표키로 확인을 선택하고 yes를 선택한다. Libx11-dev:i386 깔기 sudo apt‐get install libx11‐dev:i386 ‐‐yes 63
  • 64. 안드로이드 시스템 build를 위한 추가 프로그램 설치(4) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 아래의 명령을 실행한다. GCC-4.4 깔기 sudo apt‐get install gcc‐4.4 g++‐4.4 g++‐4.4‐multilib  gcc‐4.4‐multilib ‐‐yes www.hardkernel.com echo "export CC=gcc‐4.4 CXX=g++‐4.4" >> ~/.bashrc source ~/.bashrc U-boot-tools 깔기 sudo apt‐get install u‐boot‐tools 64
  • 65. 안드로이드 시스템 build를 위한 추가 프로그램 설치(5) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-1 Ubuntu에서 Firefox브라우저에서 아래 링크에서 IA32 GNU/Linux Installer를 내려 받기 https://sourcery.mentor.com/sgpp/lite/arm/portal/release1294 www.hardkernel.com 65
  • 66. 안드로이드 시스템 build를 위한 추가 프로그램 설치(6) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-2 – 다운로드를 받으면 기본적으로 다운로드 폴더안에 저장된다. – 아래의 명령을 실행한다. 리눅스에 한영 전환 버튼 한영또는 Shift + space cd ~/다운로드 www.hardkernel.com sudo chmod a+x arm‐2010q1‐188‐arm‐none‐eabi.bin sudo dpkg‐reconfigure ‐plow dash 66
  • 67. 안드로이드 시스템 build를 위한 추가 프로그램 설치(7) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-3 – 아니오 를 선택하고 Enter를 친다. www.hardkernel.com 67
  • 68. 안드로이드 시스템 build를 위한 추가 프로그램 설치(8) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-4 – 아래의 명령을 실행한다. ./arm‐2010q1‐188‐arm‐none‐eabi.bin www.hardkernel.com 68
  • 69. 안드로이드 시스템 build를 위한 추가 프로그램 설치(9) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-5 www.hardkernel.com 69
  • 70. 안드로이드 시스템 build를 위한 추가 프로그램 설치(10) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-6 www.hardkernel.com 70
  • 71. 안드로이드 시스템 build를 위한 추가 프로그램 설치(11) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Sourcery G++ 2010q1-188 for ARM GNU/Linux 깔기-7 www.hardkernel.com 71
  • 72. 안드로이드 시스템 build를 위한 추가 프로그램 설치(12) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-8 www.hardkernel.com 72
  • 73. 안드로이드 시스템 build를 위한 추가 프로그램 설치(13) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Sourcery G++ Lite 2010q1-188 for ARM GNU/Linux 깔기-9 www.hardkernel.com 73
  • 74. Cross compile 환경설정 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 cd ~ .bashrc gedit ~/.bashrc www.hardkernel.com – geditor가 열리고 아래와 같이 추가해준다. – geditor 는 Ubuntu를 설치하면 자동으로 설치된다. export CROSS_COMPILE=arm-none-eabi- export ARCH=arm PATH=$PATH:/home/odroid/CodeSourcery/Sourcery_G++_Lite/bin; – 저장 후 나와서 위의 명령창에 변경사항 적용을 위해서 아래와 같이 입력한다. source ~/.bashrc 74
  • 75. ODROID와 USB 통신설정 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 GNU/Linux 시스템에서 기본적으로 일반 사용자가 USB 장치를 직접 접근 할 수 없다. 접근 하기 위해서 설정이 필요하다. – /etc/udev/rules.d/51-android.rules 권리자 권한으로 생성한다. 아래의 명령을 실 행한다. sudo gedit /etc/udev/rules.d/51-android.rules www.hardkernel.com – geditor 창이 나타난다. – 아래 내용을 기입하고 저장한다. SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666" – 모든 사용자에게 읽기와 실행 권한을 준다. 아래의 명령을 실행한다. sudo chmod a+rx /etc/udev/rules.d/51-android.rules – udev 서비스를 다시 시작한다. 아래의 명령을 실행한다. sudo service udev restart 75
  • 76. VirtualBox 사용 팁 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 VirtualBox에서는 모든 USB장치들을 마운트 해줘야 사용이 가능하다. 마운트하는 방법은 해당 장치들을 선택만 해주면 된다. 예를 들면 USB장치가 연결이 되어있는데 adb가 연결이 되지 않았다면 USB 장치를 마운트하지 않았나 확인해보자. www.hardkernel.com 76
  • 77. 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0 Android SDK 설치하기 www.hardkernel.com 77
  • 78. Agenda www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Ubuntu에서 Eclipse 설치하기 Android SDK설치하기 Android SDK path 환경변수 설정 Android SDK 정의 Sample app www.hardkernel.com 78
  • 79. Ubuntu에서 Eclipse 설치하기(1) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 http://developer.android.com 에서 Installing the SDK 참고. – Eclipse 설치하기 sudo apt‐get install eclipse ‐‐yes www.hardkernel.com – Eclipse 실행하기 eclipse 79
  • 80. Ubuntu에서 Eclipse 설치하기(2) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Eclipse를 처음 실행하면 아래와 같이 작업공간 경로 설정하는 화 면 나오고, 확인을 누리면, 하면 옆에 화면과 같이 Welcome 화면 이 뜬다. www.hardkernel.com 다음 실행부터 작업 공간 경로 확인 절차를 넘 어 가려면 위 내용을 체크를 한다. 80
  • 81. Ubuntu에서 Eclipse 설치하기(3) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Help->Install New Software… 를 누르면, 아래 와 같은 화면이 표시 된다. www.hardkernel.com 81
  • 82. Ubuntu에서 Eclipse 설치하기(4) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Add… 누르고 http://download.eclipse.org/releases/indigo 를 Location에 입력 하고, Indigo를 Name에 입력하고 확인을 누른다. Pending 상태에서 빠져 나올 때 까지, 경우에 따라서는 몇 십분 이상 걸릴 수 있다. 맨 아래에 “Web.XML.Java EE and OSGI Enterprise Development Linux Tools”항목을 선택하고,Next를 누른다. www.hardkernel.com 82
  • 83. Ubuntu에서 Eclipse 설치하기(5) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 전체를 선택하고 Next를 누른다. I accept … 를 선택하고 Finish를 누른다. www.hardkernel.com 83
  • 84. Ubuntu에서 Eclipse 설치하기(6) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 업데이트를 시작한다. 업데이트가 끝나면 Restart Now를 클릭한다. www.hardkernel.com 84
  • 85. Android SDK설치하기(1) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Help -> Install New Software 로 가서, Add 를 클릭을 한다. www.hardkernel.com 85
  • 86. Android SDK설치하기(2) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 https://dl-ssl.google.com/android/eclipse/ OK를 누르고, Pending 상태에서 빠져 나오기 까 를 Work with에 기입하고, Name은 ADT Plugin 지는 경우에 따라서는 수십 분 이상이 시간이 소 을 기입하고 OK를 누른다. 문제가 있다면 https:// 요될 수 있다. 를 http:// 으로 변경해 본다. 체크박스를 선택하고 Next를 누른다. www.hardkernel.com 86
  • 87. Android SDK설치하기(3) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Next를 누르고 I accept… 를 선택하고, 라이선스에 동 Finish를 누른다. www.hardkernel.com 87
  • 88. Android SDK설치하기(4) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 소프트웨어가 설치되고 경고메세지가 뜬다. OK를 누른다. www.hardkernel.com 88
  • 89. Android SDK설치하기(5) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 업데이트가 끝나면 Restart Now를 한다. Install new SDK를 선택하고 Next를 누 른다. 어디에 설치했는지 잘 기억하자. www.hardkernel.com 89
  • 90. Android SDK설치하기(6) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Yes를 선택하고 Finish를 누른다. 설치한다. www.hardkernel.com 90
  • 91. Android SDK설치하기(7) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Accept All을 선택하고 Install을 누른다. 설치된다. www.hardkernel.com 91
  • 92. Android SDK설치하기(8) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 설치되고 있는 중이다. www.hardkernel.com 92
  • 93. Android SDK path 환경변수 설정 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 .bashrc gedit ~/.bashrc – geditor가 열리고 아래와 같이 추가해준다. export PATH=${PATH}:~/android-sdks/platform-tools www.hardkernel.com – 저장 후 나와서 위의 명령 창에 변경사항 적용을 위해서 아래와 같이 입력한다. source ~/.bashrc – 위의 Android SDK 환경 설정을 적용하면, 터미날의 어느 위치에서나 adb, fastboot 등의 명령을 사용 할 수 있다. Java-6-sun jar 교체 – /usr/lib/jvm/java-6-sun/bin/jar 에 해당하는 번호를 입력 한다. sudo update-alternatives --config jar 93
  • 94. Android SDK 정의(1) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 공식 Google release에 의하면 다음과 같이 정의되어 있다. “Android는 모바일 디바이스를 위한 OS, 미들웨어 그리고 key어플리케이션을 포함하는 소프 트웨어 스택이다. Android SDK는 Java 프로그램 언어를 사용하여 어플리케이션을 개발하기 위해 필요한 툴과 API를 제공한다” Features: Application framework 는 components의 재사용과 교체가 가능하다. Dalvik 가상머신은 모바일 디바이스에 맞게 최적화 되어 있다. www.hardkernel.com Integrated browser based on the open source WebKit engine 내부에 포함된 브라우저는 open source WebKit 엔진에 기반을 두고 있다. 최적화된 그래픽 성능을 위한 custom 2D graphics library; 3D graphics은 OpenGL ES 1.0 에 기반한다(하드웨어 가속은 옵션) 구조화된 data저장을 위해 SQLlite를 사용 일반적인 오디오,비디오와 이미지 포멧의 미디어를 지원 (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) GSM Telephony 지원(하드웨어에 따름) Bluetooth, EDGE, 3G, and WiFi (하드웨어에 따름) Camera, GPS, compass, and accelerometer (하드웨어에 따름) 디바이스 에뮬레이터와 디버깅 툴,메모리와 성능 프로파일링(performance profiling) 도구, 94 그리고 Eclipse IDE를 위한 Plugin등이 포함된 최신 개발 환경을 제공한다.
  • 95. Android SDK정의(2) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Application Framework Android는 개발자에세 오픈 개발 플랫폼을 제공함으로써, 아주 진부하고 혁진적인 어플리케이 션을 빌드할수 있도록 해준다. 개발자에게는 디바이스의 하드웨어의 향상된 기능을 사용하고, 위치정보를 억세스하고, 또는 백그라운드 서비스를 실행하며, 알람을 셑팅하고 상태바에 알림 을 추가하는 등의 많고 많은 기능들을 사용하는데 제한이 없다. www.hardkernel.com 개발자는 코어 어플리케이션에서 같은 프래임워크 API를 모두 억세스할수 있다. 어플리케이션 아키텍춰는 간단하게 컨포넌트들을 재사용 할 수 있도록 디자인 되었다. 어떤 어플리케이션은 자기의 기능을 다른 어떤 어플리케이션이든지 사용할 수 있도록 만들 수도 있다(단, 프레임워크 에 의해 관리되는 보안 제약에 기초함). 이 같은 메커니즘은 사용자에 의해서 컨포넌트들이 교 체 될 수 있는 것을 허용한다. 95
  • 96. Android SDK(3) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Application Framework(continued...) 아래의 모든 어플리케이션들은 서비스와 시스템에 포함된 것들이다: 풍부하고 확장 가능한 Views는 리스트(list), 그리드(grid), 텍스트 박스(text box), 버튼 (button), 심지어 임베딩 가능한 웹 브라우저에서와 같은 어플리케이션을 빌드할 때에 사용될 수 있다. www.hardkernel.com Content Providers 는 어플리케이션이 다른 어플리케이션(주소록과 같은)으로 부터 데이터 를 억세스 하거나 자기 것을 공유할 수 있게 해준다. Resource Manager는 지역화된 문자들(localized strings), 그래픽 그리고 레이아웃 파일 (layout files) 같이 비코드(non-code) 리소스들을 억세스할 수 있도록 해준다. Activity Manager는 어플리케이션의 라이프 사이클(lifecycle)을 관리하며, 일반적인 어플리 케이션의 네비게이션 히스토리를 관리한다. (단, back stack, 즉 뒤로 돌아가기 기능만 지원함) 96
  • 97. Sample app www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 제시된 어플리케이션 예제는 유닛 컨버터 이다. 동작 방법은 단순하다. – 타입을 선택하고 – 시작과 끝의 유닛을 선택 – 변환 어플리케이션에 관련된 래퍼런스는 다음과 같다: www.hardkernel.com http://developer.android.com/guide/topics/fundamentals/activities.html http://developer.android.com/reference/android/widget/LinearLayout.html http://developer.android.com/reference/android/widget/TextView.html http://developer.android.com/reference/android/widget/Spinner.html http://developer.android.com/reference/android/widget/EditText.html 97
  • 98. 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0 Compile ODROID-A4 U-boot and install www.hardkernel.com 98
  • 99. Agenda www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 ODROID-A4 U-Boot Source 준비하기 U-Boot Build Boot Device Partition의 구조 U-Boot BL1 구조 U-Boot BL1 생성 www.hardkernel.com U-Boot Fusing Debugging 환경 설정 U-Boot 실행 Lab/Exam – U-Boot를 수정하여 Power LED On/OFF 하기 99
  • 100. ODROID-A4 U-Boot Source 준비하기 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 1 2 www.hardkernel.com 3 4 1. 터미널을 실행시킨다. 2. mkdir –p project/odroid-a4 명령을 실행하여 작업 디렉토리를 생성한다. 3. ODROID-A4와 함께 배포되어진 source pagkage(source.tar)파일을 작업 디렉토리로 복사한다. 4. Source package 묶음을 해제 하여 Uboot.tar.gz 파일을 확인한다. (tar xf 명령을 사용한다.) 5. Uboot source 파일의 압축을 해제한다. (tar xfz 명령을 사용한다.) 6. uboot 폴더가 생성되며 uboot 폴더 안에 source code가 준비된다. 100
  • 101. U-Boot Build www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 1 2 3 4 www.hardkernel.com 5 1. uboot build를 위하여 uboot 폴더로 이동한다. 2. make distclean 명령을 통하여 기존에 생성되었던 object, config를 초기화한다. 3. Uboot의 환경설정 파일로 /include/configs/smdkv310.h를 사용한다. 4. make 명령을 통하여 uboot.bin 과 uboot bl1을 생성한다. 5. 정상적으로 build되는 경우 u-boot.bin 파일이 생성 되었음을 확인 할 수 있다. 101
  • 102. ODROID-A4의 Boot Device Partition의 구조 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Partition Type Start Sector Partition Name Partition Size Media (VFAT) Normal CACHE (EXT4) 128MB Partition DATA (EXT4) 1GB 131072 SYSTEM (EXT4) 512MB www.hardkernel.com 50561 17793 Reserved RAMDISK 16MB 1409 KERNEL 8MB Low Level 1507 U-BOOT Env 16KB Partition 33 U-BOOT 512KB 1 1 U-BOOT BL1 16KB 2 0 MBR 512B 1. Uboot build하여 생성되는 u-boot.bin 파일이 기록되는 위치. 2. mkbl2 app을 사용하여 생성되는 u-boot bl1.bin 파일이 기록되는 위치. 102
  • 103. U-Boot BL1 구조 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Build되어진 u-boot.bin 16 Kbytes – 16 bytes U-boot.bin U-boot bl1 생성 app U-boot bl1 생성 app U-boot BL1.bin 생성 16 bytes Header 16 Kbytes – 16 bytes www.hardkernel.com U-boot BL1 Check sum 및 Header 생성 code Uboot/sd_fuse/c210-mkbl1.c … for(i = 0, checksum = 0;i < 16368;i++) { Buf1[i+16] = Buf[i]; checksum += Buf1[i+16]; } *(unsigned long *)(Buf1+0) = 0x1f; *(unsigned long *)(Buf1+4) = checksum; Buf1[ 0] ^= 0x53; Buf1[ 1] ^= 0x35; Buf1[ 2] ^= 0x50; Buf1[ 3] ^= 0x43; Buf1[ 4] ^= 0x32; Buf1[ 5] ^= 0x31; Buf1[ 6] ^= 0x30; Buf1[ 7] ^= 0x20; Buf1[ 8] ^= 0x48; Buf1[ 9] ^= 0x45; Buf1[10] ^= 0x41; Buf1[11] ^= 0x44; Buf1[12] ^= 0x45; Buf1[13] ^= 0x52; Buf1[14] ^= 0x20; Buf1[15] ^= 0x20; for(i = 1; i < 16; i++) Buf1[i] ^= Buf1[i-1]; … 103
  • 104. U-Boot BL1 생성 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 1 2 3 4 5 www.hardkernel.com 6 * 기존에 c210-mkbl1 실행 파일을 생성 하였다면 1-5 번 까지는 실행하지 않는다. 1.U-boot BL1 생성 Application source가 있는 folder로 이동한다. 2.Application source가 있는지 확인한다. 3.make 명령으로 c210-mkbl1 application을 build 한다. 4.Application 실행 파일이 생성 되었는지 확인 한다. 5.Uboot 폴더로 돌아간다. 6.C210-mkbl1 app를 사용하여 u-boot_bl1.bin파일을 생성 및 확인한다. 104
  • 105. U-Boot Fusing(1) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Uboot Fusing에 사용될 T-Flash와 T-Flash Reader를 준비 한다. www.hardkernel.com 105
  • 106. U-Boot Fusing(2) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Host PC(Linux)에서 fdisk 명령을 사용하여 T-Flash mount point 를 찾아낸다. Host PC와 Card Reader 연결 전 fdisk –l 명령어 실행 www.hardkernel.com Host PC와 Card Reader 연결 후 fdisk –l 명령어 실행 새롭게 감지된 Device node (T-Flash mount point : /dev/sde) 106
  • 107. U-Boot Fusing(3) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Host PC(Linux)에서 dd 명령을 사용하여 T-Flash에 uboot를 fusing 한다. 1 2 www.hardkernel.com 3 4 1. 새롭게 감지 되어진 Device node에 Host PC와 접속 되어진 모든 mount를 해제한다. 2. Boot device partition 중 u-boot 영역에 새로 build되어진 u-boot.bin 파일을 기록한다. 3. Boot device partition 중 u-boot bl1 영역에 새로 생성된 u-boot_bl1.bin 파일을 기록한다. 4. Host PC에서 T-Flash로 아직 전송되지 않고 대기중인 데이터를 T-Flash에 모두 Write한다. 107
  • 108. Debugging 환경 설정(1) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Host PC(Linux)와 Target(ODROID-A4) 연결하기 Host PC(Linux)의 USB Port에 연결 USB to SERIAL Converter www.hardkernel.com Power ON Button (JOG Push) RS232 Cable DEBUG Board TARGET(ODROID- A4) 108
  • 109. Debugging 환경 설정(2) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Host PC(Linux)에 Serial Terminal(Minicom) 설치 www.hardkernel.com 109
  • 110. Debugging 환경 설정(3) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Host PC(Linux)에서 ls command 를 사용하여 접속된 USB to SERIAL Converter의 Device node 알아낸다. Host PC와 USB to SERIAL Converter 연결 전 ls 명령어 실행 www.hardkernel.com Host PC와 USB to SERIAL Converter 연결 후 ls 명령어 실행 새롭게 감지되어진 Device node (USB to SERIAL Converter Device node : /dev/ttyUSB0) 110
  • 111. Debugging 환경 설정(4) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Minicom 환경 설정 (minicom –s command) Minicom 환경 설정 command www.hardkernel.com Minicom 환경 설정 초기화면 111
  • 112. Debugging 환경 설정(5) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Minicom Serial port setup Serial Port 설정 메뉴 선택 www.hardkernel.com 각 메뉴에 할당되어진 Key를 입력하여 설정값을 수정한다. USB to SERIAL Converter device node로 변경한다. Baudrate 설정 및 flow control설정 115200, 8 bits, No parity, 1 stop bit H/W, S/W Flow control OFF 로 변경한다. 설정 완료 후 Enter key를 입력하여 이전 메뉴로 돌아간다. 112
  • 113. Debugging 환경 설정(6) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 환경설정 저장 및 minicom 실행 www.hardkernel.com 현재 환경설정을 저장한다. 환경 설정을 마치고 minicom program을 실행한다. 113
  • 114. Debugging 환경 설정(7) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Minicom 초기 화면 현재 환경설정을 표시한다. www.hardkernel.com HELP 화면을 표시한다. 114
  • 115. Debugging 환경 설정(8) www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 Minicom 종료 CTRL-A Z Key를 입력하여 Help화면을 표시한다. www.hardkernel.com X 또는 Q Key를 입력하여 minicom을 종료한다. 115
  • 116. U-Boot 실행 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 TARGET(ODROID-A4)의 Power ON Button을 눌러 U-Boot를 실행한다. www.hardkernel.com Virtualbox에서 진행하는 경우는 디바이스를 찾아서 마운트 해주어야 한다. 116
  • 117. Lab/Exam www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 U-Boot를 수정하여 Power LED On/OFF 하기 uboot/board/samsung/smdkv310/smdkv310.c 파일의 board_late_init() 함수 수정하기 GPIO_SetFunctionEach(eGPIO_C1, eGPIO_3, eGPO); … GPIO_SetDataEach(eGPIO_C1, eGPIO_3, 1); Int board_late_init(void) { www.hardkernel.com { int i; GPIO_Init(); GPIO_SetFunctionEach(eGPIO_K1, eGPIO_6, eGPO); GPIO_SetFunctionEach(eGPIO_X0, eGPIO_0, 0); for(i = 0; i < 5; i++) { GPIO_SetPullUpDownEach(eGPIO_X0, eGPIO_0, 0); GPIO_SetDataEach(eGPIO_K1, eGPIO_6, 0); udelay(500000); udelay(10); GPIO_SetDataEach(eGPIO_K1, eGPIO_6, 1); udelay(500000); if (GPIO_GetDataEach(eGPIO_X0, eGPIO_0) == 0 || } second_boot_info == 1) } { 수정 setenv ("bootcmd", CONFIG_BOOTCOMMAND); } GPIO_SetFunctionEach(eGPIO_X3, eGPIO_3, eGPO); GPIO_SetFunctionEach(eGPIO_C1, eGPIO_3, eGPO); GPIO_SetPullUpDownEach(eGPIO_X3, eGPIO_3, 0); GPIO_SetDataEach(eGPIO_C1, eGPIO_3, 1); GPIO_SetFunctionEach(eGPIO_K1, eGPIO_6, eGPO); GPIO_SetDataEach(eGPIO_K1, eGPIO_6, 1); 1. uboot/board/samsung/smdkv310/smdkv310.c 파일을 수정한다. GPIO_SetFunctionEach(eGPIO_X3, eGPIO_3, eGPO); 2. Uboot Build과정을 통하여 u-boot.bin과 u-boot_bl1.bin을 생성한다. GPIO_SetPullUpDownEach(eGPIO_X3, eGPIO_3, 0); GPIO_SetDataEach(eGPIO_X3, eGPIO_3, 1); 3. Fusing과정을 통하여 u-boot를 fusing한다. return 0; 4. Target의 Uboot를 실행하여 정상 동작하는지 검증한다. } 5. Power LED는 뒷면 LCD Connecter 옆에 위치한다. … 117
  • 118. 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. www.hardkernel.com Rev1.0 Compile Kernel and install www.hardkernel.com 118
  • 119. Agenda www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 ODROID-A4 Kernel Source 준비하기 Kernel Compile Kernel Fusing Lab/Exam – Keypad 드라이버에 sysfs node를 추가하여 LED On/OFF 제어 하기 www.hardkernel.com 119
  • 120. ODROID-A4 Kernel Source 준비하기 www.hardkernel.com 이 자료는 ㈜하드커널에 모든 권리가 있습니다. 어떠한 상업적인 사용도 허용되지 않습니다. Rev1.0 1 2 3 www.hardkernel.com 4 1. 배포된 source package(source.tar)파일을 작업 디렉토리로 복사한다. 2. Source package를 압축해제 하여 kernel.tar.gz 파일을 확인한다. (tar xf 명령어 사용.) 3. Kernel source 파일의 압축을 해제한다. (tar xfz 명령어 사용.) 4. kernel 디렉토리가 생성되며 kernel 디렉토리 안에 source code가 준비된다. 120