Codec,battery,powermanager 커널 드라이버

Slides:



Advertisements
Similar presentations
Lecture for Lab 3, Exp1 of EE505 (Developing Device Driver) T.A. Chulmin Kim CoreLab. Mar, 11, 2011 [XenSchedulerPaper_Hotcloud-commits] r21 - /
Advertisements

FTDI 소개 –FTDI( 사는 1992 년에 영국 Scotland 에 본사를 두고 있으며 최적화된 Driver 를 무상으로 제공하여 USB Connectivity 에 아주 쉽게 사용할 수 있는 Solution 을 제공하고 있습니다. 기존의.
File and I/O system calls int open(const char* path, int flags, mode_t modes) int creat(const char *path, mode_t mode) ssize_t read(int fd, void *buf,
Motion Coordinator Drafted by Jaecheon Kim Power Instruments.
Lecture 10 A/D and D/A converter for Digital Filter Prof. C.M Kyung.
USB Trip Download. 1. 다운받을 SD 카드를 컴퓨터에 꽂습니다. 주의 ) 단말기에서 사용 중인 ( 맵이들어있는 ) SD / Micro SD 카드 이여야 합니다 에서 ‘UsbTrip.zip’ 을 다운 받습니다.
20 PIN MOTHERBOARD MAIN POWER 24 PIN MOTHERBOARD MAIN POWER 20+4 PIN MOTHERBOARD MAIN POWER 4 PIN GRAPHICS 8 PIN GRAPHICS.
CONNECTORS AND POINTS Elizabeth Viverette. 20-PIN P1  Main power connector for early ATX motherboards.
EC4012PA PIC 18F Introduction 2  Processor  Input Devices  Output Devices  Memory Devices 3.
10. Noise and active RF components
 Universal Serial Bus 컴퓨터와 주변기기를 연결하는 데 쓰이는 입출력 표준 가운데 하나 (USB 1.0, 1.1, 2.0, 3.0 등 )
Human Oriented technology Leader. We make New Technology Trend. Human Oriented Technology Leader!
2012 내장형 시스템 설계 DOT Matrix 디바이스 제어
Include/mango100.h 설명 망고 100 보드로 놀아보자 -7 cafe.naver.com/embeddedcrazyboys.
Oracle webcache Installation Guide - 기본 Setting & Tunning 포함 – Version : Webcache StandAlone 전자계산소
SOAP 실전예제 Internet Computing KUT Youn-Hee Han.
Time Management GNU TIMES 05` 정일웅 06` 강주효 07` 이병준 09` 조민정.
Introduction to Logic and Computer Design Chapter 1 Introduction Definition of TERMS † Platform, BSP(Board Support Package), Common.
Memory & Storage Architecture Seoul National University Computer Architecture Byoungjun Kim School of Computer Science and.
2012 내장형 시스템 설계  Full Color LED 디바이스 구성  Full Color LED 디바이스 드라이버  Full Color LED JNI 라이브러리 작성  Full Color LED 안드로이드 App 구현  JNI 라이브러리.
Simple Bluetooth Security Manager based on the Open Bluetooth stack Dec Jongbae Park ( )
ELN230 – Bazlur slide 1 ELN230 Lecture – 02c PC Components.
Hanyang Univ.  강의 목표 ◦ 임베디드 개발 환경의 이해  강의 내용 ◦ 교차 컴파일 환경 구축 및 부트로더 실습 Hanyang Univ.
Linux/UNIX Programming APUE (Introduction) 문양세 강원대학교 IT 대학 컴퓨터과학전공.
Contents 2 About the ERIC Subject Coverage About the ERIC Collection Who Uses ERIC Search Eric - Basic/Advanced/Thesaurus Search ERIC - Author Search.
InfiniBand 를 통한 4K SDI data 전송 Framing (ver 0.5) ㈜ 스마트구루 ( 약칭 MP4RD)
망고 100 보드로 놀아보자 -18 Android 메뉴 생성 및 아이콘 생성 (SPDIF,WM8960)
Customer Oriented Display System Human Oriented technology Leader.
Test Point Insertion Using Functional Flip- Flops to Drive Control Points International Test Conference 2009 Joon-Sung Yang 1, Benoit NaDeau-Dostie 2,
User-defined Functions CSED421: Database Systems Labs.
Stepper Motor 디바이스 드라이버
Digital Audio System PCM streams have two basic properties that determine their fidelity to the original analog signal: the sampling rate, which is the.
망고 100 보드로 놀아보자 -10 망고 100 NAND,SD map
9 주 실습강의 XML Visualization(1) 학기, 소프트웨어 설계 및 실험 ( Ⅰ )
Windows95 VxD Design and Win32 Application inter face 발 표 : 노 원국 ( 컴퓨터 시스템 설계 )
1 Chapter 37 Files Transfer Protocol (FTP) Programs.
Internal Device Driver
영상 획득 영상 저장 카메라 파라메터 커스텀 이미지
Memory 설계.
SnSDK Framework Software & System Development Kit 개발 노트 Ver. 2.
Real-Time Computing and Communications Lab., Hanyang University Real-Time Computing and Communications Lab., Hanyang University.
EMLAB Modeling of Digital Communication Systems using Simulink Chap.13 Simulink Examples 13.3 Spread Spectrum 13.4 Antenna Nulling.
목차 한국기술교육대학교 강사: 김 영 준 ㈜헬로앱스 1일차 아두이노 제어 실습
망고100 보드로 놀아보자-14 디바이스 드라이버 작성 기초
Go by Example Closures ~ Errors , Sam Jo.
Visual C 실전 예제 Drawing Tool.
SnSDK Framework Software & System Development Kit 개발 노트 Ver. 1.2.
2 DHT11 Sensor VCC 3V 연결 GND GND 연결 Data GPIO 4 연결 Resistance10K.
Web ticketing Translator: Zheng Xiaoling Li Longyuan Jin Honghua Contact: Nov 20, 2012.
Chapter 7. Pipe 2 pipe 개요  Simple IPC (inter process communication) mechanism  두 프로세스간 통신 기능 제공  동작 방식  수도관 (pipe) 을.
12. The Experimenter 안광훈. University of Seoul, Seoul, Korea Setup panel 1.
아주대학교 LifecareScienceLAB Android Seminar 2 nd class Android Software Development 2011/04/13 – p.m. 06:00 – 팔달관 409 호 아주대학교.
망고100 보드로 놀아보자-19 Android Ethernet 분석
Dept. of Biomed. Eng.BME302: Medical InstrumentationKyung Hee Univ. 1 최법경 Biomedical Instrumentation Report 최법경.
Java Programming Language (3) - Input/Output Stream –
Analog IC design 1주차 Sept.25th.
Lecture-03 PC Components. System Components Video Card Sound Card Monitor (Display) Speakers Modem (or Network Card)
Analog IC design 7주차 Dec.4th Multimedia Lab..
URL PHONE FAX ADDRESS #909, VENTURE VALLEY, 958, GOSAEK-DONG, GWONSEON-GU,SUWON,
How to using the JSVM toolkit Step 1 Feb Eun-Seok Ryu Department of Computer Science and Engineering Korea Univ.
Linux Sound Drivers Framework
CHAP 8. 그래픽. © 2012 생능출판사 All rights reserved 안드로이드에서의 그래픽 XML 파일로 그래픽이나 애니메이션을 정의한다. 그 리는 작업은 안드로이드 시스템이 담당한다. onDraw() 메소드 안에 draw...() 와 같은 메소드를 호.
DaVinci Overview (features and programming) Kim dong hyouk.
Chip Config & Drivers – Required Drivers:
Sound Card A sound card (also referred to as an audio card) is a peripheral device that attaches to the ISA or PCI slot on a motherboard to enable the.
Sound Card A sound card (also referred to as an audio card) is a peripheral device that attaches to the ISA or PCI slot on a motherboard to enable the.
DIGITAL AND ANALOG AUDIO EQUIPMENT
Introduction to Linux Device Drivers
Computer System Laboratory
Troy Davis Caitlin Smart
Presentation transcript:

Codec,battery,powermanager 커널 드라이버 망고100 보드로 놀아보자-16 Codec,battery,powermanager 커널 드라이버 http://cafe.naver.com/embeddedcrazyboys http://www.mangoboard.com cafe.naver.com/embeddedcrazyboys

codec driver(wm8960) WM8960 디바이스를 I2C 0번 채널로 디바이스를 컨트롤하고 Data는 I2S0번 채널로 전송토록 설계 cafe.naver.com/embeddedcrazyboys

codec driver(wm8960) if CONFIG_I2C =y 로 설정이 되어 있어야 SND_SOC_WM8960 이 활성화 됨 ./ sound/soc/codecs/Kconfig 에 추가 cafe.naver.com/embeddedcrazyboys

codec driver(wm8960) snd-soc-wm8960.o==wm8960.o 동일 이유는 사운드 드라이버 소스가 2개이상 인 경우를 대비 ./ sound/soc/codecs/Makefile 에 추가 Wm8960.c 드라이버 파일을 ./sound/soc/codecs/에 추가 cafe.naver.com/embeddedcrazyboys

codec driver(wm8960) sound/soc/s3c24xx/Kconfig 파일에 위의 내용 추가 cafe.naver.com/embeddedcrazyboys

codec driver(wm8960) #make menuconfig 명령으로 확인 할 있음 cafe.naver.com/embeddedcrazyboys

codec driver(wm8960) sound/soc/s3c24xx/Makefile을 위와 같이 수정 sound/soc/s3c24xx/mango100_hdmi_spdif.c sound/soc/s3c24xx/mango100_wm8960.c 을 sound/soc/s3c24xx 디렉토리에 파일을 만들어서 추가 cafe.naver.com/embeddedcrazyboys

codec driver(wm8960) cafe.naver.com/embeddedcrazyboys

codec driver(wm8960) Sound/soc/codecs/wm8960.c 파일 참조 cafe.naver.com/embeddedcrazyboys

codec driver(wm8960) static struct wm8960_setup_data smdk_wm8960_setup = { .i2c_bus = 0, .i2c_address = 0x1a, }; sound/soc/s3c24xx/mango100_wm8960.c에 정의 static struct i2c_board_info i2c_devs0[] __initdata = { { I2C_BOARD_INFO("wm8960", 0x1a), }, // WM8960 ../arch/arm/mach-s5pc100/mach-mango100.c 에 정의 cafe.naver.com/embeddedcrazyboys ./drivers/i2c/busses/i2c-s3c2410.c 에서 0x1a<<1 로 shift

HDMI Driver cafe.naver.com/embeddedcrazyboys

HDMI Driver cafe.naver.com/embeddedcrazyboys static struct resource s5p_tvout_resources[] = { .. [8] = { .start = IRQ_EINT5, .end = IRQ_EINT5, .flags = IORESOURCE_IRQ } ./arch/arm/plat-s5pc1xx/devs.c에 수정, 드라이버 소스는 drivers/media/video/samsung/tv20/s5pc100/hdmi_s5pc100.c cafe.naver.com/embeddedcrazyboys

HDMI S/PDIF Driver cafe.naver.com/embeddedcrazyboys S/PDIF의 약자는 Sony/Philips Digital InterFace의 약자입니다. 소니와 필립스사에서 디지털 오디오 전송을 위해서 만든 표준 인터페이스로써, 신호선 1개와 그라운드선 1개 이렇게 2가닥을 사용하는 방식입니다.  기존의 디지털 오디오 신호의 경우 동기(싱크신호)신호를 넣어야 했고 또 신호의 간섭이 심하여 일정 이상의 거리를 전송하기 어려웠던 반면에 S/PDIF는 약 20 미터 정도까지 일정하게 데이터를 전달할 수 있어 CDP, 사운드 카드, CD-ROM drive, A/V 리시버에 다양하게 사용되고 있습니다. 사람이 들을 수 있는 신호는 모두 아날로그이며, 컴퓨터는 궁극적으로 디지털 신호만을 입출력합니다. 컴퓨터의 경우도 아날로그 출력은 디지털 신호를 아날로그로 컨버트(Digital to Analog Converter)하여 출력하는 것이고, 반대로 아날로그 신호를 저장하려면 ADC(Analog to Digital Converter)를 사용해야 합니다.  예를 들면 컴퓨터의 MP3 데이터(디지털)을 MD(디지털)로 저장하려면 디지털 신호를 사용하면 디지털 -> 디지털로 전달하면 되지만 아날로그 신호 의 경우는 사운드 카드에서 디지털 -> DAC -> ADC -> 디지털로 받게 되어 음질이 많이 손실됩니다. 때문에 디지털 인터페이스를 사용하는 것입니다.  일반적으로 디지털 기기간 원본의 손실없이 전달하기 위해 아날로그 신호전송 보다 디지털 전송을 선호하고 있습니다.  참고로 S/PDIF의 케이블간의 저항의 권장치는 75오옴입니다. cafe.naver.com/embeddedcrazyboys

HDMI S/PDIF Driver S5pc100 cpu가 기본 제공 cafe.naver.com/embeddedcrazyboys

HDMI S/PDIF Driver sound/soc/s3c24xx/Kconfig 파일에 위의 내용 추가 cafe.naver.com/embeddedcrazyboys

HDMI S/PDIF Driver “Device driver -> Sound card support-> Advanced Linux Sound Architecture-> ALSA for Soc audio support ->Soc Audio support Mango100-> Select Mango100 Audio Port Type에서 HDMI SPDIF Driver선택 cafe.naver.com/embeddedcrazyboys

HDMI S/PDIF Driver cafe.naver.com/embeddedcrazyboys ALSA device list: #0: smdks5p (HDMI-SPDIF) 커널 로그에서 위와 같이 메시지가 출력 cafe.naver.com/embeddedcrazyboys

Battery Driver drivers/power/Kconfig 에 dummy battery 를 추가 cafe.naver.com/embeddedcrazyboys

Battery Driver drivers/power/Makefile 에 추가 cafe.naver.com/embeddedcrazyboys

Battery Driver drivers/power/mango_dummy_battery.c 드라이버 소스 생성 추가 cafe.naver.com/embeddedcrazyboys

Battery Driver #define POWER_SUPPLY_PATH "/sys/class/power_supply" 실행 결과 Éclair 소스에서 framework/base/services/jni/com_android_server_BatteryService.cpp 에 POWER_SUPPLY_PATH 정의 커널.drivers/power/mango_dummy_battery.c cafe.naver.com/embeddedcrazyboys Éclair 소스에서 framework/base/services/jni/com_android_server_BatteryService.cpp

Battery Driver cafe.naver.com/embeddedcrazyboys int register_android_server_BatteryService(JNIEnv* env) { DIR* dir = opendir(POWER_SUPPLY_PATH); while ((entry = readdir(dir))) { const char* name = entry->d_name; char buf[20]; // Look for "type" file in each subdirectory snprintf(path, sizeof(path), "%s/%s/type", POWER_SUPPLY_PATH, name); int length = readFromFile(path, buf, sizeof(buf)); if (length > 0) { if (strcmp(buf, "Mains") == 0) { snprintf(path, sizeof(path), "%s/%s/online", POWER_SUPPLY_PATH, name); if (access(path, R_OK) == 0) gPaths.acOnlinePath = strdup(path); } else if (strcmp(buf, "USB") == 0) { gPaths.usbOnlinePath = strdup(path); else if (strcmp(buf, "Battery") == 0) { snprintf(path, sizeof(path), "%s/%s/status", POWER_SUPPLY_PATH, name); gPaths.batteryStatusPath = strdup(path); cafe.naver.com/embeddedcrazyboys

Battery Driver cafe.naver.com/embeddedcrazyboys snprintf(path, sizeof(path), "%s/%s/health", POWER_SUPPLY_PATH, name); if (access(path, R_OK) == 0) gPaths.batteryHealthPath = strdup(path); snprintf(path, sizeof(path), "%s/%s/present", POWER_SUPPLY_PATH, name); gPaths.batteryPresentPath = strdup(path); snprintf(path, sizeof(path), "%s/%s/capacity", POWER_SUPPLY_PATH, name); gPaths.batteryCapacityPath = strdup(path); snprintf(path, sizeof(path), "%s/%s/voltage_now", POWER_SUPPLY_PATH, name); if (access(path, R_OK) == 0) { gPaths.batteryVoltagePath = strdup(path); // voltage_now is in microvolts, not millivolts gVoltageDivisor = 1000; } else { snprintf(path, sizeof(path), "%s/%s/batt_vol", POWER_SUPPLY_PATH, name); } snprintf(path, sizeof(path), "%s/%s/temp", POWER_SUPPLY_PATH, name); gPaths.batteryTemperaturePath = strdup(path); snprintf(path, sizeof(path), "%s/%s/batt_temp", POWER_SUPPLY_PATH, name); cafe.naver.com/embeddedcrazyboys

Battery Driver drivers/power/mango_dummy_battery.c에서 dummy_battery_probe함수에 Name을 지정하고, 속성을 지정 cafe.naver.com/embeddedcrazyboys

안드로이드 PowerServiceManager private void setTimeoutLocked(long now, int nextState) { if ( mDoneBooting) { private void setTimeoutLocked(long now, int nextState) { if ( false&mDoneBooting) { frameworks/base/services/java/com/android/server/PowerManagerService.java파일에서 안드로이드 부팅 후 Sleep으로 진입을 하지 않음 cafe.naver.com/embeddedcrazyboys