46
Tizen Kernel & System Frameworks for Vendors and Enthusiasts (Tizen 2.1+) SW센터 S/W Platform Team 함명주 책임

Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

Tizen Kernel & System Frameworks for Vendors and Enthusiasts

(Tizen 2.1+)

SW센터 S/W Platform Team

함명주 책임

Page 2: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 2

Tizen Overview (2.x)

Page 3: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 3

Target Audience

• Vendors & Enthusiasts

– 새 제품/보드에 Tizen을 돌려보기

• Tizen BSP / Device Porting

– 새 부품이 Tizen을 지원하도록 하기

• Device Driver for Tizen

– Linux System Programming 실습(?)

• Core daemon/library 개발

• Tizen “Hacking”

• Tizen Reference Device의 활용

– RD-210 (Galaxy S2 HD) / RD-PQ (Galaxy S3 3G) / …

Page 4: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 4

Contents

• Tizen Kernel

– Graphics, Multimedia, Memory Management

– Power Management

– Other Peripherals

• Core Daemons

• OEM Adaptation Layer (OAL)

• Future Development

Page 5: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 5

Linux Kernel

• Linux Kernel Mainline (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/)

– Stable: Linux 3.9: 2013/4/29 (3.9.6: 2013/6/13)

– Dev: Linux 3.10 RC6: 2013/6/15

• MAINTAINERS

– Directory / File 별 Mainline 관리자

– 관련 Patch의 Review 및 Integration 책임을 지고

– 상위 Maintainer (보통 상위 Directory)에 정리된 patchset을 보냄

– 최종 Maintainer: Linus Torvalds

• LongTerm Stable (LTS): 3.0 / 3.4

– Stable release이후 최소 2년간 bugfix support 됨.

Linux Online (2008). "Linux Logos and Mascots". Retrieved 11 August 2009.

Page 6: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 6

Tizen Kernel

• Tizen 1.0 Reference Kernel: Linux 2.6.36

• Tizen 2.x Reference Kernel: Linux 3.0

• Next-Tizen Reference Kernel: Linux 3.10?

– Released soon at Tizen.org (2013.7.?)

• Linux Kernel Version에 크게 구애 받지 않음.

– 개별 제품별로 다른 버전 사용 가능

Linux Online (2008). "Linux Logos and Mascots". Retrieved 11 August 2009.

Page 7: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 7

Tizen Kernel Principles

• Use Mainline Features / Follow Mainline Policy

– No “Tizen-Kernel Patch”

• Easy porting w/ vanilla

• Low maintenance cost (kernel upgrade)

– Device driver interface: mainline 표준 사용.

• Graphics: DRM, Camera & Codec: V4L2, Touchscreen: input/touch, Image post process: DRM, Sound: ALSA, Bluetooth: BlueZ, …

• 몇 가지 해결 안된 부분 (표준 구현 안됨 / 표준 구현 중): 3D GPU, Telephony, NFC.

• 비표준 interface 추가 최소화. 특히 userspace에서의 직접 제어를 위한 interface open은 사용하지 않음.

– 사용된 device driver들을 mainline에 upstream해두는 것을 추천함.

• 추후 재사용이 용이함.

Page 8: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 8

Tizen Kernel Overview

Kernel

Kernel

OAL (OEM Adaptation Layer)

Telephony

Plug-ins

GStreamer

Plug-ins

Sensor

Plug-ins

System

Plug-ins

OpenGL ES/EGL

Graphics Driver

Graphics Memory

Management

IOMMU DMA

BUF

Multimedia Power Management

CPUfre

q

Devf

req

Ther

mal … DRM

Link1 Link2 V4L2

Storage

Block Layer

MMC/Flash

Input, Sensor,

Peripheral

CMA

OpenGL ES 1.0/2.0

X11 GStreamer EFL . . .

Multimedia FW

Telephony FW

. . . Sensor FW System FW

. . .

More at http://source.tizen.org/documentation/porting-guide

Core Service Layer

DRM Link1: http:// elinux.org/images/7/71/Elce11_dae.pdf

DRM Link2: http://download.tizen.org/misc/media/conference2012/wednesday/ballroom-c/2012-05-09-1330-1410-

the_drm_(direct_rendering_manager)_of_tizen_kernel.pdf

Page 9: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 9

Contents

• Tizen Kernel

– Graphics, Multimedia, Memory Management

– Power Management

– Other Peripherals

• Core Daemons

• OEM Adaptation Layer (OAL)

• Future Development

Page 10: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 10

Tizen Kernel Overview

Kernel

Kernel

OAL (OEM Adaptation Layer)

Telephony

Plug-ins

GStreamer

Plug-ins

Sensor

Plug-ins

System

Plug-ins

OpenGL ES/EGL

Graphics Driver

Graphics Memory

Management

IOMM

U

DMA

BUF

Multimedia Power Management

CPUfre

q

Devf

req

Ther

mal … DRM

Link1 Link2 V4L2

Storage

Block Layer

MMC/Flash

Input, Sensor,

Peripheral

CM

A

OpenGL ES 1.0/2.0

X11 GStreamer EFL . . .

Multimedia FW

Telephony FW

. . . Sensor FW System FW

. . .

More at http://source.tizen.org/documentation/porting-guide

Core Service Layer

DRM Link1: http:// elinux.org/images/7/71/Elce11_dae.pdf

DRM Link2: http://download.tizen.org/misc/media/conference2012/wednesday/ballroom-c/2012-05-09-1330-1410-

the_drm_(direct_rendering_manager)_of_tizen_kernel.pdf

• Memory Management in Tizen

– Coupled with Graphics & Multimedia devices.

• Graphics & Multimedia devices = DMA devices with HUGE buffers

Page 11: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 11

Tizen Kernel Overview

Kernel / Device Drivers (BSP)

Kernel / Core & Subsystem

X Server

DRM Framework GEM

Display HDMI Virtual Display

Post Processor

G2D

EFL

Evas

2D GPU backend

X Video Drivers

Userptr

NEON 2D GPU backend

PIXMAN

EXA

V4L2 VB2

Codec Camera

GStreamer

OpenMAX

Libdrm

XV Extension

UMM

Open GL

Multimedia FW

XvImageSink

Core External Library

Core Framework

OEM Adaptation

Kernel

Kernel

GPU DDK

(G3D)

Radio

* Images from MS Office clipart and Samsung

Gstreamer-CameraSrc

DMABUF

Page 12: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 12

Tizen Kernel MM, Graphics (DRM)

Kernel / Device Drivers (BSP)

Kernel / Core & Subsystem

X Server

DRM Framework GEM

Display HDMI Virtual Display

Post Processor

G2D

EFL

Evas

2D GPU backend

X Video Drivers

Userptr

NEON 2D GPU backend

PIXMAN

EXA

V4L2 VB2

Codec Camera

GStreamer

OpenMAX

Libdrm

XV Extension

UMM

Open GL

Multimedia FW

XvImageSink

Core External Library

Core Framework

OEM Adaptation

Kernel

Kernel

GPU DDK

(G3D)

Radio

* Images from MS Office clipart and Samsung

Gstreamer-CameraSrc

DMABUF

Page 13: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 13

Tizen Kernel MM, Multimedia (V4L2/VB2)

Kernel / Device Drivers (BSP)

Kernel / Core & Subsystem

X Server

DRM Framework GEM

Display HDMI Virtual Display

Post Processor

G2D

EFL

Evas

2D GPU backend

X Video Drivers

Userptr

NEON 2D GPU backend

PIXMAN

EXA

V4L2 VB2

Codec Camera

GStreamer

OpenMAX

Libdrm

XV Extension

UMM

Open GL

Multimedia FW

XvImageSink

Core External Library

Core Framework

OEM Adaptation

Kernel

Kernel

GPU DDK

(G3D)

Radio

* Images from MS Office clipart and Samsung

Gstreamer-CameraSrc

DMABUF

Page 14: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 14

Tizen Kernel MM, OpenGL/G3D-GPU

Kernel / Device Drivers (BSP)

Kernel / Core & Subsystem

X Server

DRM Framework GEM

Display HDMI Virtual Display

Post Processor

G2D

EFL

Evas

2D GPU backend

X Video Drivers

Userptr

NEON 2D GPU backend

PIXMAN

EXA

V4L2 VB2

Codec Camera

GStreamer

OpenMAX

Libdrm

XV Extension

UMM

Open GL

Multimedia FW

XvImageSink

Core External Library

Core Framework

OEM Adaptation

Kernel

Kernel

GPU DDK

(G3D)

Radio

* Images from MS Office clipart and Samsung

Gstreamer-CameraSrc

DMABUF

Page 15: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 15

Tizen Kernel MM, UMM

Kernel / Device Drivers (BSP)

Kernel / Core & Subsystem

X Server

DRM Framework GEM

Display HDMI Virtual Display

Post Processor

G2D

EFL

Evas

2D GPU backend

X Video Drivers

Userptr

NEON 2D GPU backend

PIXMAN

EXA

V4L2 VB2

Codec Camera

GStreamer

OpenMAX

Libdrm

XV Extension

UMM

Open GL

Multimedia FW

XvImageSink

Core External Library

Core Framework

OEM Adaptation

Kernel

Kernel

GPU DDK

(G3D)

Radio

* Images from MS Office clipart and Samsung

Gstreamer-CameraSrc

DMABUF

UMM (Unified Memory Management) DMABUF = “Tizen Standard Buffer”

• Buffers 공유기능 제공

• DRM, V4L2, GPU-Custom 사이의 호환성 제공

• Memcpy없는 Buffer 전달.

• Userspace에의 안전하고 효율적인 Buffer 공유

Page 16: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 16

Tizen Kernel MM, UMM DMA Mapping API @ Tizen Reference

DRM / GEM

DMA Mapping Framework

IOMMU Buddy CMA

IOMMU

Common

Driver

System Memory

V4L2 / VB2

1 2

1: “Exynos-DRM” provides unified device address space for all DRM devices

2: Each V4L2 device has its own device address space

2 2

Page 17: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 17

Tizen Kernel MM, Buffer Sync.

Kernel / Device Drivers (BSP)

Kernel / Core & Subsystem

X Server

DRM Framework GEM

Display HDMI Virtual Display

Post Processor

G2D

EFL

Evas

2D GPU backend

X Video Drivers

Userptr

NEON 2D GPU backend

PIXMAN

EXA

V4L2 VB2

Codec Camera

GStreamer

OpenMAX

Libdrm

XV Extension

UMM

Open GL

Multimedia FW

XvImageSink

Core External Library

Core Framework

OEM Adaptation

Kernel

Kernel

GPU DDK

(G3D)

Radio

* Images from MS Office clipart and Samsung

Gstreamer-CameraSrc

DMABUF

Synchronization?

Page 18: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 18

Tizen Kernel Memory Management Buffer Synchronization

• TGL (Tizen Global Lock) @ Tizen 2.x

– … Let userspace handle the issue …

– Kernel patch required.

• Sync Framework (Google)

– Jun, 2012. Resources w/o DMABUF (similar with TGL)

• KDS (Kernel Dependency System, ARM)

– May 2012 / DMABUF-compatible

• DMA Fence Framework (Canonical/TI/Samsung)

– Aug 2012 / DMABUF-compatible

– Jun 2013 / DMABUF-Sync Framework (Samsung)

Page 19: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 19

Contents

• Tizen Kernel

– Graphics, Multimedia, Memory Management

– Power Management

– Other Peripherals

• Core Daemons

• OEM Adaptation Layer (OAL)

• Future Development

Page 20: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 20

Power Management: System Overview (Tizen 2.x)

System FW

Kernel

Deviced / Devman

App-core / API / …

Power Manager

OAL

App0: “I need to keep LCD on”

App1: “I need to keep CPU running”

App2: “I don’t mind”

Power Manager (mobile)

START

NORMAL

LCD_DIM

LCD_OFF

SLEEP

Notification from Launcher UI Timeout event Input device event Kernel / HW

PM-Lib

주의: Kernel에서는 Android wake-lock과 같은 Opportunistic sleep을 사용하지 않음

Userspace(Power Manager) 에서 직접 sleep에 들어갈 것을 요구해야 함

* Tizen 3.0부터 Device Control이 Deviced로 억세스 경로가 통합되어 Deviced를 사용함. 2.x에서는 Power Manager에서

Devman Library를 통해 직접 Kernel의 Device Node 접근 가능.

Page 21: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 21

Power Management: System Overview (Tizen 3.0)

System FW

Kernel

Deviced / Devman

App-core / API / …

Resourced

OAL

App0: “I need to keep LCD on”

App1: “I need to keep CPU running”

App2: “I don’t mind”

Power Manager (mobile)

START

NORMAL

LCD_DIM

LCD_OFF

SLEEP

Notification from Launcher UI Timeout event Input device event Kernel / HW

PM-Lib

Resourced 내에 자원 관리를 위한 Component (e.g., OOM)들이 Consolidate & Merge 되었음.

* Tizen 3.0부터 Device Control이 Deviced로 억세스 경로가 통합되어 Deviced를 사용함. 2.x에서는 Power Manager에서

Devman Library를 통해 직접 Kernel의 Device Node 접근 가능.

Power mgt. component

Page 22: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 22

Power Management: Kernel Overview

OPP

OPP Spec

Hardware

Clock Regulator

Regulator Drv

CPUfreq Suspend Runtime-PM Devfreq CPUidle CPU

Hotplug

Linux Driver Model

Device Driver

CPUfreq Drv

Power Domain

SoC/CPU Architecture Support

Thermal

SoC/CPU Architecture Support

PM-QoS

Framework

Driver

Driver (arch)

Thermal Drv

Page 23: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 23

Power Management: Suspend

OPP

OPP Spec

Hardware

Clock Regulator

Regulator Drv

CPUfreq Suspend Runtime-PM Devfreq CPUidle CPU

Hotplug

Linux Driver Model

Device Driver

CPUfreq Drv

Power Domain

SoC/CPU Architecture Support

Thermal

SoC/CPU Architecture Support

PM-QoS

Framework

Driver

Driver (arch)

Thermal Drv

Suspend-to-RAM

1. Sync File system / Freeze user processes

2. Suspend devices

3. Stop IRQ

4. Suspend system core

5. Configure sleep / Save PC

Waking-up

1. Wakeup Interrupt

2. CPU boot-up / load bootloader

3. Bootloader Restore PC

4. Suspend-to-RAM과정 역순으로 진행

Page 24: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 24

Power Management: Suspend (detail)

Kernel: Enter sleep

Sync Filesystem

Notify suspend

Freeze process

Suspend device

Stop Device IRQ

Suspend system core

Save resuming PC & Enter sleep

Bootloader: Wakeup

Reset CPU

If suspended, Restore resuming PC

Kernel: Wakeup

Resume system core

Resume IRQ

Suspend Again?

Resume device

Thaw process

Notify resume

Return to user Wakeup Interrupt

Yes

No

Suspend Again

Proposed in Kernel 3.0 for In-suspend battery charger monitoring

More info: http://platform.sec.samsung.net/system/Linux/kernel/power/

Page 25: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 25

Contents

• Tizen Kernel

– Graphics, Multimedia, Memory Management

– Power Management

– Other Peripherals

• Core Daemons

• OEM Adaptation Layer (OAL)

• Future Development

Page 26: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 26

Other Peripherals

• 기본적으로는 OAL을 통해 Deviced (3.0)/Devman (2.1)이 요구하는 Callback이 모두 채워지면 됨

– E.g., adaptation/ap_samsung/device-manager-plugin-exynos

• Battery/Cable과 관련하여 OAL이 요구하는 I/F 제공 Kernel subsystem:

– Charger-manager (battery / charger)

– Extcon (external connector: cable 관리. MUIC/3.5-pi 등)

– 다른 subsystem이나 개별 device driver node에 의한 제공도 가능

• Charger-manager 대신 일반 power-supply-class를 이용해도 됨. (기능을 모두 재구현 해야 함)

• Extcon을 쓰지 않고 custom sysfs node를 만들어 사용하여도 동작에는 문제 없음. (e.g., “jack”)

More on OAL: https://wiki.tizen.org/wiki/Porting_Guide

More on Charger-Manager: http://platform.sec.samsung.net/system/Linux/drivers/power/charger_manager.pptx

[Linux]/Documentation/power/charger-manager.c

[Linux]/drivers/power/charger-manager.c

More on Extcon: http://platform.sec.samsung.net/system/Linux/drivers/extcon/

[Linux]/Documentation/extcon/porting-android-switch-class

[Linux]/drivers/extcon/*

Page 27: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 27

Other Peripherals: Sound

• Tizen은 ALSA Scenario (www.alsa-project.org) 을 사용함.

– ALSA 표준에 맞춰 hardware plugin 및 device driver 작성.

• https://wiki.tizen.org/wiki/Porting_Guide#Audio

Page 28: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 28

Other Peripherals: BlueTooth

• Tizen은 Bluez(www.bluez.org)을 사용함

• https://wiki.tizen.org/wiki/Porting_Guide#Bluetooth

Page 29: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 29

Other Peripherals: WiFi

• Tizen은 wpa-supplicant를 사용함.

• https://wiki.tizen.org/wiki/Porting_Guide#WLAN

Page 30: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 30

Other Peripherals: NFC

• 현재는 Tizen 자체 custom이며 libnfc 패키지 내에 OAL 함수를 구현해야 함. (이후 NEARD로 교체될 예정)

• https://wiki.tizen.org/wiki/Porting_Guide#NFC

Page 31: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 31

Other Peripherals: Location (GPS)

• Tizen은 Geoclue를 사용함.

• WiFi/Telephony 나 기타 센서들은 기본 Tizen library를 사용하여 Tizen framework를 억세스 함 (별도 porting 불필요).

• GPS는 GPS Plug-in을 통해 Kernel GPS driver (보통 UART interface 사용)를 사용함. (OAL 함수 구현)

Page 32: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 32

Other Peripherals: Telephony

• Tizen Telephony Framework를 위한 Telephony plugin 내에 OAL 함수 구현을 하여 Driver 제어를 함.

– Plugin이 지원하는 기능:

• Voice / Video call

• Supplementary service control, USSD

• Packet data connection handling

• Network Information (such as signal strength)/registration

• SMS transport

• SIM/USIM services such as PIN code checks and read/write/delete of SIM/USIM resident data

• SIM Application Toolkit mechanism(s)

• Sound control

– Plugin 예제: framework/telephony/tel-plugin-dbus-tapi.git

– Intel CMUX 방식도 지원함. (kernel mux)

Page 33: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 33

Other Peripherals: Input

• X Window System의 Input기능을 사용함.

• Userspace 측에서는 X input driver (주로 evdev) 를 이용해 kernel의 touchscreen, HW key, mouse 등의 device에 접근.

Page 34: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 34

Contents

• Tizen Kernel

– Graphics, Multimedia, Memory Management

– Power Management

– Other Peripherals

• Core Daemons

• OEM Adaptation Layer (OAL)

• Future Development

Page 35: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 35

Core Daemons (Tizen 3.0)

• Systemd (booting & daemon management)

• Deviced

• Resourced

– (deviced/resourced: 기존 power-manager, devman, system-server, … 등이 consolidation됨)

• DBUS

– 기존 Vconf 대폭 축소

* Tizen.org 에서 3.0 개발 현황 review 가능함.

Page 36: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 36

Systemd in Tizen

• From Tizen 2.1

• Sysvinit의 대체

• Service/Daemon 간의 dependency를 파악하여 동시에 start시켜 더 빠른 부팅을 가능하도록 함.

• Service/Daemon 의 runtime 감시 및 관리

– 예) 동작 중 update에 의한 kernel reboot의 필요성 감소

Page 37: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 37

Deviced & Resourced in Tizen “Consolidation”

• Tizen 2.x (Before) • Tizen-next (After)

Kernel

libdevice-node (OAL)

power-manager

system-server

Upper Layers

libslp-pm libsysman

daemon

library

Function call

IPC(socket)

Kernel node

libdevice-node (OAL)

Upper Layers

deviced

libdeviced

libdevman libslp-pm

libsysman

power-manager

system-server

System Framework(As-is) System Framework(To-be)

libhaptic

libdevman Resourced (OOM, Freezer, …)

… libhaptic

Resource managers

libresourced

Page 38: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 38

DBUS, IPC in Tizen

• Tizen 2.x: IPC with VCONF DBUS

– VCONF: “Registry”. Not for IPC.

– Ease of Development & Code Maintenance

• Build dependencies between IPC peers

• Tizen-next: DBUS KDBUS

– Performance!

Page 39: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 39

Contents

• Tizen Kernel

– Graphics, Multimedia, Memory Management

– Power Management

– Other Peripherals

• Core Daemons

• OEM Adaptation Layer (OAL)

• Future Development

Page 40: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 40

OEM Adaptation Layer (OAL)

• 각종 kernel node의 위치 및 사용방법 지정

• 참고: – Tizen 2.0/adaptation/*

• System FW관련 부분:

– Tizen 2.0/adaptation/ap_samsung/device-manager-plugin-exynos

– Tizen 2.0/adaptation/intel_mfld/device-manager-plugin-mfld-blackbay

• Alsa (sound) 관련 부분:

– Tizen 2.0/adaptation/devices/alsa-scenario-*

• …

• 부분이 vendor가 porting을 위해 채워 넣어야 하는 부분임.

System FW

Kernel

libdevice-node.so (OAL-3.0) /

libslp-devman-plugin.so (OAL-2.0)

Sensor FW

Sensor-plugin (OAL)**

Deviced*

libdeviced

App-core / API / …

* Tizen 3.0부터 Deviced로 억세스 경로가 통합됨. 2.x에서는 system server이며, system server (daemon)을 통하지

않고 devman library를 통해 OAL device node를 직접 억세스할 수 있음

** Subject to consolidation.

Page 41: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 41

OEM Adaptation Layer (OAL)

• Example with system F/W (device manager / deviced) OAL. – Adaptation/ap_samsung/device-manager-plugin-exynos/src/device_manager_plugin_exynos.c

– https://wiki.tizen.org/wiki/Porting_Guide#System_OAL

• X graphics/input, OpenGL, ALSA, Gstreamer 및 기타 표준제정이 되어있는 component의 plugin은 해당 표준 plugin format을 사용.

/* devman_plugin_intf.h */ typedef struct { int (*OEM_sys_get_display_count) (int *value); int (*OEM_sys_get_backlight_min_brightness) (int index, int *value); . . . } OEM_sys_devman_plugin_interface; const OEM_sys_devman_plugin_interface *OEM_sys_get_devman_plugin_interface();

static OEM_sys_devman_plugin_interface devmanp; EXPORT_API const OEM_sys_devman_plugin_interface *OEM_sys_get_devman_plugin_interface() { devmanp.OEM_sys_get_display_count = &OEM_sys_get_display_count; devmanp.OEM_sys_get_backlight_min_brightness = &OEM_sys_get_backlight_min_brightness; . . . return &devmanp; }

Page 42: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 42

Contents

• Tizen Kernel

– Graphics, Multimedia, Memory Management

– Power Management

– Other Peripherals

• Core Daemons

• OEM Adaptation Layer (OAL)

• Future Development

Page 43: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 43

Ongoing Development in Kernel+System

• 현재 Linux 3.10+로 Upstream 진행하는 New Feature의 지원 @ Tizen 3.0 Platform + Tizen Reference Kernel

– Power Management, Low/Out-of-Memory, Peripheral, Sensors, Device-Tree (Single-Binary Multi-Device), …

– Easy & Efficient DMA-CPU Synchronization & Cache Operation

– Full V4L2 Support

• System Daemon/Library Consolidation

• Analysis Tool for Tizen Developers

– For All: Native Apps, Web Apps, Frameworks, Kernel

– Performance, Power, Memory, Security Analysis

Page 44: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver
Page 45: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 45

References

• http://dri.freedesktop.org/wiki

• http://www.x.org/wiki/Development/Documentation/HowVideoCardsWork

• https://wiki.archlinux.org/index.php/KMS

• http://www.kernel.org/doc/htmldocs/drm.html

• http://elinux.org/images/7/71/Elce11_dae.pdf

Page 46: Tizen Kernel & System Frameworks for Vendors and Enthusiasts · 2013-06-23 · Telephony Plug-ins GStreamer Plug-ins Sensor Plug-ins System Plug-ins OpenGL ES/EGL Graphics Driver

tizen.org 46

Additional Information

• Tizen.org, “Tizen Porting Guide”

• Collaboration Summit: Tizen Kernel Memory Management

• kernel/linux-3.10.git at Tizen.org will be very helpful.

– “The Real Reference Tizen Kernel”