[HBE-SM5-S4210 BASE]
리눅스 커널을 기반으로 하는 Android Board의 디바이스 드라이버를 작성하고 어플리케이션에서 추가된 하드웨어를 쓸 수 있도록 한다.
Android Operating System
모바일 디바이스를 가지고 여러 서비스를 제공하기 위한 Software Stack 이다.
- 운영체제 + 미들웨어 + 어플리케이션을 포함한다. 많은 부분이 오픈소스 기반. 일부는 유료이며 오픈소스가 아닙니다. 컴포넌트 기반의 아키텍처를 가진다.
- 프로그램이 실행되고 종료될 때까지 Life Cycle 을 관리해주기도 한다.
- 커널 부분은 C, 런타임 라이브러리도 C로 되어있지만, 어플리케이션 개발자는 Java, Kotlin으로 개발한다.
크게 4개의 Layer로 나뉘어져 있다.
- 커널은 디바이스의 각 HW요소를 제어하는 드라이버로 이루어져 있다. IPC는 Inter-Process Communication으로 프로세스 간의 통신을 한다. 즉, 대부분의 디바이스 드라이버는 리눅스 커널 영역에 위치한다. 리눅스 커널은 Hardware Abstraction Layer (HAL)로 신규 드라이버를 붙인다. 신규 센서에 대한 디바이스 드라이버를 이러한 방식으로 포함시킨다.
- 리눅스 커널 위에는 런타임 라이브러리가 올라간다. 이 라이브러리들은 대부분 표준화 단체에서 진행하는 컴포넌트를 도입하였다. 안드로이드 플랫폼에서 여러 어플리케이션으로 서비스를 제공하는데 필수적인 모듈이다. [Surface Manager는 화면에 데이터를 뿌리기 위해 Bitmap Image를 처리한다. (OpenGL은 표준화된 그래픽 라이브러리)(SSL은 Secured Socket Library로 HTTPS와 같이 보안이 추가된 통신기능을 포함)
- 우측의 Android Runtime 은 Intermediate Language로 Java Language를 빌드하면 Intermediate Code가 만들어지는데, 이것이 Java Virtual Machine 에서 돌아갈 수 있게 된다. 어플리케이션이 실행될 때 Intermediate Code 가 컴파일되고 실행파일이 만들어지는데, 이것을 Just In Time (JIT) Compilation 이라 한다.
많이 쓰는 모듈의 경우 Ahead of Time (AOT) 컴파일
.
구글에서는 SDK를 개방해 누구나 어플리케이션을 작성할 수 있게 했다.
Eclipse IDE 사용
Kernel Configuration
SM5S4210 선택 후 Kernel Configuration 화면 Exit 하면 Kernel Configuration 완료된 것
Kernel Compile
C/C++ Perspective로 들어가
File Menu - Makefile Project with Existing Code
프로젝트 인덱싱 완료될 때까지 10분 소요. 인덱싱 완료되면 다음과 같이 Project Explorer 에서 linux-kernel 오른쪽 클릭 후 Properties 선택
컴파일 (망치 이모티콘) 클릭하여 리눅스 커널 빌드
'EE > Embedded Systems' 카테고리의 다른 글
[Android][3] On-Board LED 제어하기 (0) | 2021.09.24 |
---|---|
[Android][2] Device Driver 컴파일 (0) | 2021.09.17 |
[nRF52BLE][4]C Development with SoftDevice API (5) | 2021.01.04 |
[nRF52BLE][3]Components for Data Transfer (0) | 2021.01.04 |
[nRF52BLE][2]Connection and Softdevice (0) | 2021.01.04 |