S3c6410을 이용한 리눅스 비디오 드라이버 포팅 가이드 – - Linux Video Driver Porting Guide Using s3c6410 – 박영만 yucco@naver.com.

Slides:



Advertisements
Similar presentations
산업용 PDA AT-870. Copyright © 2008 barall All right reserved Reference Ⅰ CUSTOMERPROJECT LG 텔레콤BARCODE & GPS 를 이용한 자산 및 시설물 관리 KT LOGISGPS & CDMA 를 이용한.
Advertisements

1/37 Chapter 4: 프로세서 성능과 휴대성을 위한 하드웨어 © The McGraw-Hill Companies, Inc., 세기의 가장 중요한 발명품 : 마이크로 프로세서 일상생활에 널리 사용됨 프로그램에 의한 적응성.
컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
2.1 컴퓨터 시스템의 구성 2.2 컴퓨터 시스템의 정보 표현 2.3 중앙처리장치 2.4 저장장치 2.5 컴퓨터 주변기기
회사소개서
L A N DCT Serise W i r e l s Description
Investor Relations 2005 August, 2005
Vision System Lab, Sang-Hun Han
Linux Debugging issues
Service Training forAquarius
Project Goal..! Milestone Role Division Achievement Result
AMBA BUS Protocol의 이해 (AMBA 2.0 Specification)
Zigbee Specification RT Lab 강무진.
소프트웨어와 운영체제.
3.1 그래픽스/영상 데이터 형 3.2 널리 사용되는 파일 형태
BLU (Back light Unit)의 구조와 특징
LCD 디스플레이 구미대학교 컴퓨터정보전자과.
㈜ 디지탈프로젝트 목 차 회사소개 및 개요 사업 소개 경쟁 우위 요소 비젼 및 추진 전략 재무계획.
Computer Architecture and Design Lecture 14
제 2장 컴퓨터 구조.
IT R&D Global Leader Finger Motion 인식 SoC ETRI Technology Marketing
전자식 주행기록계 설명서 Leading Blackbox Solution
마이크로프로세서 메모리 및 입출력장치 인터페이스
제8장 주변장치.
7장 비디오.
제7장 비디오 멀티미디어의 이해.
02장 ㅎㅎ 디지털 영상 빛과 색, 시각 컬러 모델 디지털 영상의 생성 디지털 영상의 종류 한빛미디어(주)
10장 주변장치 (PIO) Slide 1 (of 28).
System Call Linux Kernel 수업 3번째.
비디오.
 midi LOGGER GL220   신제품 소개 Dec, 2011.
PXA255-FPGA 장비 개요 및 실습 Lecture #9.
색온도 및 RGB 색상 조절이 가능한 LED 조명 제어 기술
Linux를 이용한 Embedded 장비 개발
Red Color Detection Course ChanYoung Kim
DSP와 TMS320F28X의 이해
PXA255-FPGA 장비 계요 및 실습 Lecture #9.
저전력 고효율 발열시트를 이용한 온실 자동화 시스템 제안서.
DIGITAL VIDEO LINK FCC PRODUCT SPECIFICATION EL – V2202 TX / RX LINK 1
특수조명 Program Manual M.D.I Solution
학습목표 2장. 컴퓨터 하드웨어 그래픽 출력장치의 일반적인 작동원리를 이해한다.
A system is a set of related components that work together in a particular environment to perform whatever functions are required to achieve the system’s.
컴퓨터 구조.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
Red Color Detection Course ChanYoung Kim
Chapter 1 디지털 영상처리의 개념.
Chapter 7. Pentium Processor
1. Embedded System의 이해.
Gamma(감마) 발표일 : 발표자 : 임정환.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
4족 로봇 삼식이팀 박명대.
1. 발명의 명칭 2. 발명의 분야 3. 발명의 기술적 배경 (종래 기술)
18년 11월 1일 디스플레이.
Chapter 4 The Von Neumann Model.
버퍼 (Buffer).
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Boot PROM.
User Datagram Protocol (UDP)
언어교육 게임SW를 위한 음성인식 기술 IT 신성장 동력 분야별 기술개발 계획(안)
UNIT 21 Flash Memory Controller 로봇 SW 교육원 조용수.
6. Video Effects.
ViewInfo System 소개 - Video Conference - Video Monitoring
제12장 멀티미디어 개론.
디지털 TV 방송 신호 (4)
논리회로 설계 및 실험 9주차.
4 LED 출력 LED 점멸 LED 밝기 조절 RGB LED로 색상 표현하기 FND 제어 4-digit FND 제어 Dot matrix 제어 Dot matrix를 이용한 애니메이션.
Lecture 7 7-Segment LED controller using u-controller
Finger Motion 인식 SoC를 이용한 Virtual 입력단말 플랫폼 기술
MARK•Vu.
가상 기억장치 (Virtual Memory)
Presentation transcript:

s3c6410을 이용한 리눅스 비디오 드라이버 포팅 가이드 – - Linux Video Driver Porting Guide Using s3c6410 – 박영만 yucco@naver.com

Contents Overview Framebuffer Controller Pannel Backlight Video Driver Concept Video Driver Architecture Framebuffer Framebuffer Information Linux Framebuffer Driver Color Format Controller Overlay Alpha Blending Chroma Key (Color Key) Alpha Blending & Chroma Key Pannel Backlight Porting Sequence

Video Driver Concept Video 입출력을 지원하는 가장 Low Level의 S/W Video Driver의 구성 Module Controller ex) Display Controller, Graphic Card … Pannel ex) LCD, AMOLED, CRT … Framebuffer ex) Overlay 1, 2 … ※ SRAM을 의미함 Controller가 Framebuffer의 Data를 Pannel에 출력한다. 일반적으로 Framebuffer Driver 로 불리기도 함 Framebuffer Controller Pannel

Video Driver Architecture ※ 본 구조는 s3c6410 코드를 기반으로 작성된 것임. 코드에 따라 BSP 구조는 바뀔 수 있음. User System Call Kernel fbmem.c/fb.h 과 같은 커널의 Abstract Driver Framebuffer Controller Pannel BSP H/W /dev/fb0, 1… N과 같이 Framebuffer 개수에 따라 여러 Device Node로 나누어질 수 있음

Framebuffer 실제 화면에 출력되게 될 메모리 영역 Framebuffer Module Framebuffer 에 Data를 작성화면, 작성된 Data는 Controller에 의해 Pannel에 출력되게 된다. Framebuffer Module 커널에 포함되는 실제 Driver 모듈 Framebuffer module의 probe 함수가 호출되면서 driver 가 커널에 등록된다. SRAM에 Framebuffer 영역을 할당한다. dma_alloc_writecombine(device, memory_size, physical_memory_address, option) 으로 할당 ※ Framebuffer는 연속적인 Memory 영역을 가져야하기 때문에 dma_alloc_writecombine 으로 할당해야 한다. Framebuffer 정보를 설정한다. ex) bpp, width, height 정보 기본적인 framebuffer 정보는 커널이 초기화되는 시점에 미리 할당되나, Driver 가 올라간 후 부터는 Framebuffer module 에서 변경된 정보를 처리한다. Controller/Pannel 모듈 관리. + Backlight 실제로 Operation을 처리하는 Module은 Controller와 Pannel이지만 User level 에서는 Framebuffer Module을 통해 Controller와 Pannel을 Access 하게 된다. (Backlight 도 경우에 따라 Framebuffer에서 관리한다.) 또한 Framebuffer Module의 초기화 부분에서 Controller와 Pannel의 초기화 함수를 호출한다.

Framebuffer Information ※ Pixel Clock : 1 Pixel 을 그리는 데 걸리는 시간 (Pico second) ex ) Dot Clock 이 60MHz 라고 하면 pixclock = 1/60 * 1000000 pixclock xres yres bpp hsync_len left_margin right_margin vsync_len upper_margin lower_margin backlight_power lcd_power upper margin left margin right margin hsync len xres yres ※ 함수 포인터로 관련 Operation 이 붙는다. lower margin vsync len

Linux Framebuffer Driver include/linux/fb.h 커널 내 Abstract Display Driver User Level 에게 표준화된 Interface 를 제공. struct fb_var_screeninfo { __u32 xres; /* Visible resolution in the X axis */ __u32 yres; /* Visible resolution in the Y axis */ /* ... */ __u32 bits_per_pixel; /* Number of bits required to hold a pixel */ __u32 pixclock; /* Pixel clock in picoseconds */ __u32 left_margin; /* Time from sync to picture */ __u32 right_margin; /* Time from picture to sync */ __u32 hsync_len; /* Length of horizontal sync */ __u32 vsync_len; /* Length of vertical sync */ }; fbmem.c fb.h fb core struct fb_fix_screeninfo { char id[16]; /* Identification string */ unsigned long smem_start; /* Start of frame buffer memory */ __u32 smem_len; /* Length of frame buffer memory */ /* ... */ }; fb driver 1 fb driver N . . . . . struct fb_cmap { __u32 start; /* First entry */ __u32 len; /* Number of entries */ __u16 *red; /* Red values */ __u16 *green; /* Green values */ __u16 *blue; /* Blue values */ __u16 *transp; /* Transparency. Discussed later on */ }; Memory 1 Memory N ※ 1개의 Device 가 여러 Memory(FB) 를 가질 수 있다.

Color Format RGB ….. Palletized : Pallet를 통해 색상정보를 출력함. RGB 값이 Pallet의 Index를 의미함. ex) RGB 값이 3일 경우 Pallet 의 3번 색상을 출력. Non-Palletized : RGB 값이 하나의 색상정보를 의미함. R : 0 G : 1 B : 1 0번 색 1번 색 2번 색 3번 색 4번 색 5번 색 6번 색 7번 색 8번 색 ….. ※ Pallet 또한 Framebuffer 의 한 메모리 영역임.

Color Format YUV Y U V Y U V Y U V 일반적으로 YUV포맷 데이터는 Framebuffer 가 아닌 외부 장치(Camera등)에서 바로 넘어오는 경우가 많다. YUV Format YUV444 (24bpp) YUV422 (16bpp) YUV420 (12bpp) Y U V ※ YUV pixel packing format Y U V Planar Format Y Y Y Y Y Y ….. U U U U U U ….. V V V V V V ….. Y Packed Format U V YUV YUV YUV YUV YUV YUV …..

Controller 프레임버퍼의 내용(Data)을 화면(Pannel)에 출력할 수 있도록 지원해주는 Device 오버레이(Overlay), 크로마 키(Chroma Key)등의 효과를 H/W적으로 지원 컨트롤러의 사용 GPIO : LCD GPIO의 설정 ex) Input / Output PIN REGISTER : REGISTER 를 이용하여 컨트롤러를 제어할 수 있다.

Controller s3c6410 관련 Reigster Register Description MFPCON BY PASS & Normal Mode 선택 SPCON Host I/F & RGB I/F 선택 VIDCON0 출력 Format 및 Display enable/disable 설정 VIDCON1 RGB I/F control signal I80IFCONx I80-system I/F signal ITUIFCON0 ITU (BT.601) Interface Control VIDTCONx 출력 Timing 및 화면 size 설정 WINCONx 출력 Layer 별 Format 설정 VIDOSDxA, VIDOSDxB 화면 위치 설정 VIDOSDxC Alpha 값 설정 (for Alpha Blending) VIDWxxADDx Source Image Address 설정 WxKEYCONx Color key 값 설정 WINxMAP 화면 Color 제어 WPALCON Palette 제어 WxPDATAxx Window Palette Data of the each Index ※ ‘x’는 0, 1, 2 … 로 확장됨을 의미함. ex) VIDTCONx : VIDTCON0, VIDTCON1, VIDTCON2 ….

Overlay 화면의 중첩 H/W 따라 Overlay 정보 및 제어방법이 달라짐 Memory (Framebuffer) 첫 번째 화면 (Base) fb0 fb1 두 번째 화면 (Overlay 1) 세 번째 화면 (Overlay 2) fb2

Overlay s3c6410 스펙 s3c6410 관련 Register 5 개의 화면 지원 (1 Base 4 Overlay) Layer 0, 1, 2 : Main Layer (화면) 1, 2, 4 or 8-BPP (bit per pixel) palletized color 16, 18 or 24-BPP non-palletized color YCbCr (4:4:4) 로컬 버스로부터 직접 입력을 받음 (Win 0 :Post Processor. Win 1,2 :TV scaler) RGB (8:8:8) 로컬 버스로부터 직접 입력을 받음 (Win 0 :Post Processor. Win 1,2 :TV scaler) Layer 3, 4 : Sub Layer (자막, 커서) 1, 2 or 4-BPP (bit per pixel) palletized color 화면 순위 (고정) Layer 5 > Layer 4 > Layer 3 > Layer 2 > Layer1 s3c6410 관련 Register WINCONx 0x77100020 ~ 출력 Layer 별 Format 설정

Alpha Blending 투명 효과 (Transparency Effect) ARGB Color Format 이용 ARGB A : Alpha Channel (투명도를 나타냄) s3c6410 관련 Register Alpha Blending 기능 설정 Alpha 값 셋팅 A R G B WINCONx 출력 Layer 별 Format 설정 VIDOSDxC Alpha 값 설정 (for Alpha Blending)

Chroma key Chroma Key 를 적용하여 특정 이미지를 제거 함 s3c6410 관련 Register WxKEYCONx Color key 값 설정 Layer 0 Layer 1

Alpha Blending & Chroma key s3c6410 관련 Register WxKEYCONx Color key 값 설정

Virtual Screen 실제 보여질 수 있는 화면(Pannel Size)보다 더 큰 영상을 보여줄 때 사용 s3c6410 관련 Register VIDWxxADDx Source Image Address 설정 ※ 위 Register의 VBASEU_F 값과 VBASEL_F 값에 따라 보여지는 화면의 위치가 변경된다. LCDBASEU LCDBASEL

Pannel Timing sequence Pannel On/Off 에 대한 Timing sequence가 존재함. (Pannel 매뉴얼이 별도로 존재) Timing sequence 에 맞게 On/Off 가능한 함수를 만든 후 fb_info(Framebuffer Information) 구조체에 삽입해서 컨트롤 ex ) < xxx.h > struct fb_info { .... void (*lcd_power)(int); } < xxx.c > probe() // 초기화 함수 { ….. fb->lcd_power = pannel 함수; ※ Timing - 전류의 흐름을 시간 간격에 따라 High 로 해줄 것인지 low 로 해줄 것인지를 나타냄 - 위 그림에서는 xcs, sclk, si 3핀간의 Timing 값을 보여준다.

Backlight 화면의 밝기 조정 PWM(Pulse-Width Modulation Unit) 을 이용 기능 구현 방법 Framebuffer Driver 에 삽입하는 방법 : Framebuffer Driver 에서 직접 PWM을 컨트롤 Backlight Driver 를 별도로 구현하는 방법 : Backlight Driver 작성 후 Backlight Driver에서 PWM 컨트롤 ※ Backlight Driver 구조 & 제어 방법 drivers/video/backlight/backlight.c Backlight core Core에서 제공하는 sysfs 인터페이스 제공 ex ) /sys/s3c-bl/brightness Backlight Driver Core에서 제공하는 sysfs 인터페이스에 실제 동작을 연결 PWM(H/W)

Porting Sequence 커널 초기화 부분에 Video Driver와 관련된 기본 값을 설정한다. ※ 기본적으로 GPIO PIN 과 Register의 Physical Address는 정의되어 있다고 가정함 커널 초기화 부분에 Video Driver와 관련된 기본 값을 설정한다. (일반적으로 fb_info 구조체를 만들어 기본 값들을 셋팅한다.) Driver가 Kernel에 삽입될 수 있도록 Linux Device Driver Model에 맞는 구조를 잡는다. (platform_device / platform_driver 구조체 선언 및 셋팅) ※ 기본적으로 platform_device 는 커널 초기화 부분에서, platform_driver 는 framebuffer module에서 선언된다. Driver가 초기화될 때 일어나야 할 일들을 probe에 순서대로 작성한다. (Framebuffer 할당 및 초기화, gpio 및 register 셋팅, driver 등록) 추가적인 사항 작성 (ioctl 등… ) ※ s3c6410 video driver 기본 구조 Framebuffer alloc s3cfb.c fimd4xx.c s3cfb_xxx.c Controller Pannel