KEY 디바이스 드라이버

Similar documents
untitled

Chapter #01 Subject

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - lab14.pptx

슬라이드 1

슬라이드 1

슬라이드 1

Microsoft Word doc

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

교육지원 IT시스템 선진화

PowerPoint 프레젠테이션

Microsoft PowerPoint - 03-Development-Environment-2.ppt

2009년2학기 임베디드시스템 응용

untitled

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과


Microsoft PowerPoint - IOControl [호환 모드]

Microsoft PowerPoint - es-arduino-lecture-03

Embeddedsystem(8).PDF

슬라이드 1


Adding a New Dev file

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - lab15.pptx

본 강의에 들어가기 전

/chroot/lib/ /chroot/etc/

06Àå

vi 사용법

디바이스드라이버 (Device Driver) Driver is literally a subject which drive a object. 응용프로그램에서하드웨어장치를이용해서데이터를직접읽고쓰거나제어해야하는경우에디바이스드라이버를이용 하드웨어를제어하는프로그램과애플리케이션에서

untitled


PowerPoint 프레젠테이션

Microsoft Word - MPC850 SPI Driver.doc

Motor

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

제1장 Unix란 무엇인가?

untitled

chap7.key

untitled

제12장 파일 입출력

untitled

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

6주차.key

ECE30076 Embedded System Programming - LED Device Driver

Microsoft PowerPoint APUE(Intro).ppt

PowerPoint 프레젠테이션

BMP 파일 처리

Microsoft PowerPoint - polling.pptx

2009년2학기 임베디드시스템 응용

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

망고100 보드로 놀아보자 -13

MPLAB C18 C

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Sena Technologies, Inc. HelloDevice Super 1.1.0

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft Word - PEB08_USER_GUIDE.doc

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

The Pocket Guide to TCP/IP Sockets: C Version

Chapter 4. LISTS

11장 포인터

Microsoft Word - DCMD-1000 사용자 메뉴얼.docx

Microsoft PowerPoint - 02-Development-Environment-1.ppt

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어


2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

ABC 11장

PowerPoint 프레젠테이션

(Microsoft PowerPoint - Device Driver [\310\243\310\257 \270\360\265\345])

거제시회 2010년 3월 4일 거창읍 여회가 경남 울산 재향군인회 정기총 회 시 봉사활동대상 단체표창을 수상하였으며, 2010년 5월 7일 출되었고, 2009년 2월 23일 제46차 정기총회에서 제22대 으로 중 건계정 농수로 우회 방지를 위한 해우교 를 설치, 준공하

204

고급 프로그래밍 설계

<4D F736F F F696E74202D205BBAB0C3B75D20B8AEB4AABDBA20B5F0B9D9C0CCBDBA20B5E5B6F3C0CCB9F620B8F0B5A82E >

[ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : ~ 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 )

교육지원 IT시스템 선진화

(Microsoft PowerPoint - Device Driver [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - chap2

untitled

歯9장.PDF

Microsoft Word doc

PowerPoint 프레젠테이션

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

제1장 Unix란 무엇인가?

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

13주-14주proc.PDF

untitled

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드]

C++-¿Ïº®Çؼ³10Àå

Transcription:

KEY 디바이스드라이버 임베디드시스템소프트웨어 I (http://et.smu.ac.kr et.smu.ac.kr)

차례 GPIO 및 Control Registers KEY 하드웨어구성 KEY Driver 프로그램 key-driver.c 시험응용프로그램 key-app.c KEY 디바이스드라이버 11-2

GPIO(General-Purpose Purpose I/O) PXA255 processor는 81개의 GPIO pin이있음 GPIO는 27개의제어 register에의하여제어된다 set pin direction (GPDR0~2) read pin level (GPLR0~2) set or clear pin level (GPSR0~2, GPCR0~2) set rising/falling edge detection (GRER0~2, GFER0~2) edge detection (GEDR0~2) alternate function (GAFR_L0~2, GAFR_U0~2) 사용하지않는 GPIO는 output으로 configure하면전력소비를줄인다 KEY 디바이스드라이버 11-3

GPIO Control Registers - 1/3 Pin Direction (GPDR) - 3 개 해당 GPIO 핀을 input 혹은 output 으로사용할것인지설정함. 0 이면 input 이고 1 이면 output 으로설정됨 Pin Level (GPLR) - 3 개 해당 GPIO 핀의현재 level 을표시함. 0 이면 low 이고 1 이면 high 임 Set or Clear (GPSR, GPCR) - 각각 3 개 해당 output GPIO 핀의 level 을 high 로설정함. 1 이면 high 해당 output GPIO 핀의 level 을 low 로설정함. 1 이면 low KEY 디바이스드라이버 11-4

GPIO Control Registers - 2/3 Rising or Falling Edge (GRER, GFER) - 각각 3 개 해당 GPIO 핀의동작을지정함. 1이면 rising edge시동작됨 해당 GPIO 핀의동작을지정함. 1이면 falling edge 시동작됨 Edge Detection (GEDR) - 3 개 해당 GPIO 핀의동작을감지함. 1이면 rising/falling edge의동작이감지되었음을표시. ( 주 : 동작 GEDR을해당 bit를 clear하려면그bit에1을씀 ) KEY 디바이스드라이버 11-5

GPIO Control Registers - 3/3 Alternate Functions (GAFR_L, GAFR_U) - 6 개 해당 GPIO 핀을 generic GPIO 핀으로쓸것인지특정기능을위한핀으로쓸것인지설정함. 00 - GPIO 설정 01 - 특정기능 1 10 - 특정기능 2 11 - 특정기능 3 KEY 디바이스드라이버 11-6

하드웨어 - Key Switch 8 9 a b 4 5 6 7 0 1 2 3 KEY 디바이스드라이버 11-7

하드웨어 - Key Encoder 1. Key Switch 에연결 74C922 chip (Key Encoder) 2. 데이타생성 (4bits) 1. Key Switch 에연결 1. Key Switch 에연결 2. Key 가눌러지면인터럽트생성 3. 인터럽트는 GPIO 0 에연결 KEY 디바이스드라이버 11-8

하드웨어 - Bidirectional Transceiver 4. 데이터버스로들어감 3. Key Encoder 에서생성된데이타 KEY 디바이스드라이버 11-9

74C922 및 74LVT245 74C922 - Key Encoder KEY_ROW 1~3과 KEY_COL 1~4 이 Key Switch(3x4) 에연결 Encoding 된값은 KEY_1~4 라인으로출력 KEY_AVAL 라인은 PXA255 GPIO 0와연결 (interrupt 생성 ) 74LVT245 - Bidirectional Transceiver KEY_1~4 라인이입력 DATA00~03 라인이출력 출력데이터는데이터버스를통하여물리주소 0x14000000로전달 KEY 디바이스드라이버 11-10

커널 Configure/Compile 현재커널이미지에는 key driver 가포함되어있기때문에 key driver 프로그래밍을실습하기위해서는커널의 "Character devices" 에포함된 "KEY GPIO" 기능을 disable 하고다시컴파일하여야한다 KEY 디바이스드라이버 11-11

매크로 / 전역변수 (key-driver.c driver.c) #define DEVICE_NAME "key" #define KEY_MAJOR 242 #define KEY_ADDRESS 0x14000000 static struct file_operations key_fops = { open: key_open, read: key_read, release: key_release, }; static DECLARE_WAIT_QUEUE_HEAD(wq); static char *key_address; static char key_value; KEY 디바이스드라이버 11-12

init/cleanup (key-driver.c driver.c) int init_module(void) { int i; if((i=register_chrdev(key_major,device_name,&key_fops))<0) return i; GPDR0 &=~(GPIO_0);// GPIO 0 은 input GAFR0_L &=~(0x3); // alternate function 을 generic GPIO 로 // GPIO 0 을 falling edge set_gpio_irq_edge(0,gpio_falling_edge); } if((i=request_irq(irq_gpio(0),key_handler,sa_interrupt,"key ",NULL))<0) return i; return 0; void cleanup_module(void) { unregister_chrdev(key_major,device_name); } KEY 디바이스드라이버 11-13

open/release (key-driver.c driver.c) int key_open(struct inode *inode, struct file *file) { MOD_INC_USE_COUNT; return 0; } int key_release(struct inode *inode, struct file *file) { } MOD_DEC_USE_COUNT; return 0; KEY 디바이스드라이버 11-14

read interrupt (key-driver.c driver.c) ssize_t key_read(struct file *inode, char *gdata, size_t length, loff_t *off_what) { } interruptible_sleep_on(&wq); copy_to_user(gdata,&key_value,1); return 1; void key_handler(int irq, void *dev_id, struct pt_regs *regs) { key_address=(char*)ioremap(key_address,0x10); key_value=*(key_address)&0x0f; iounmap(key_address); wake_up_interruptible(&wq); } KEY 디바이스드라이버 11-15

시험응용프로그램 (key-app.c) #include <stdio.h> #include <fcntl.h> int main(void) { int fd; char c; if((fd=open("/dev/key",o_rdonly))<0){ fprintf(stderr,"can not open /dev/key\n"); return 1; } while(1){ read(fd,&c,1); printf("c=0x%x\n",c); if(c==0x00) break; } close(fd); return 0; } KEY 디바이스드라이버 11-16

Makefile all: key-driver.o key-app key-driver.o: key-driver.c arm-linux-gcc -Wall -D KERNEL -DMODULE - DMODVERSIOBN \ -I/home/et1/lab-05/linux-2.4.19/include \ -include /home/et2/lab-05/linux- 2.4.19/include/linux/modversions.h \ -c key-driver.c -o key-driver.o key-app: key-app.c arm-linux-gcc key-app.c -o key-app clean: rm -f key-driver.o key-app KEY 디바이스드라이버 11-17

참고자료 Intel Corporation, 4.1 General-Purpose I/O, Intel PXA255 Processor Developer s Manual, March, 2003. ( 주 ) 휴인스, 11장디바이스드라이버실습, Intel PXA255와임베디드리눅스응용, Power Point 강의자료, 홍릉과학출판사, 2004. KEY 디바이스드라이버포함되지않은커널이미지, http://et.smu.ac.kr/classes/2005-cm0033/materials/11-kernelwithout-key-driver, 2005. KEY 디바이스드라이버소스, http://et.smu.ac.kr/classes/2005- cm0033/materials/ 11-key-driver, 2005. KEY 디바이스드라이버 11-18