Microsoft Word doc

Similar documents
PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

KEY 디바이스 드라이버

Chapter #01 Subject

PowerPoint 프레젠테이션

교육지원 IT시스템 선진화

Microsoft Word doc

untitled

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Microsoft PowerPoint - es-arduino-lecture-03

Embeddedsystem(8).PDF

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

슬라이드 1

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

슬라이드 1

Microsoft PowerPoint - lab14.pptx

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

API 매뉴얼

PowerPoint 프레젠테이션

MAX+plus II Getting Started - 무작정따라하기

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

10.

03장.스택.key

UI TASK & KEY EVENT

lecture4(6.범용IO).hwp

[8051] 강의자료.PDF

MPLAB C18 C

Microsoft Word - KPMC-400,401 SW 사용 설명서

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

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

ECE30076 Embedded System Programming - LED Device Driver

Microsoft Word - PEB08_USER_GUIDE.doc

Formatvorlage für Arbeitsanweisungen

chap7.key


DTS-L300-V2 Specification Page 1 of 14 비접촉온도측정 원거리온도측정 High Accuracy Digital Interface : SPI Arduino UNO 예제코드제공 제품설명 DTS-L300-V2는접촉을하지않고원하는물체표면에온도를 50

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

1. 제품규격및특징 구분 규격및특징 입력전압 DC 12~30V 모터구동방식 Bipolar 방식 최대모터전류 Max 3.0A 초기설정정지전류 :4(0.46A), 구동전류 :18(1.75A) 분주비 0(x256), 1(x128), 2(x64), 3(x32), 4(x16),

<4D F736F F F696E74202D205BBAB0C3B75D20B8AEB4AABDBA20B5F0B9D9C0CCBDBA20B5E5B6F3C0CCB9F620B8F0B5A82E >

PowerPoint 프레젠테이션

Motor

Formatvorlage für Arbeitsanweisungen

Microsoft Word - PLC제어응용-2차시.doc

IoT FND8 7-SEGMENT api

Microsoft PowerPoint - IOControl [호환 모드]

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

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

디지털공학 5판 7-8장

untitled

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

Microsoft Word - MPC850 SPI Driver.doc

T100MD+

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Mango-AM335x LCD Type 커널 Module Parameter에서 변경하기

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

PowerPoint 프레젠테이션

DA C.4.

5.스택(강의자료).key

Microsoft PowerPoint - ch25ysk.pptx

<4D F736F F F696E74202D20332EB5F0C1F6C5D0C8B8B7CEBFCD20B1B8C7F62E >

5 167 Python Jon Franklin Python Python Python Python USB USB RS485 C Python DLL Python Python dll Python Python ctypes dll ctypes Python C Linux Wind

歯03-ICFamily.PDF

Microsoft Word doc

MicrocontrollerAcademy_Lab_ST_040709

C 프로그래밊 개요

hd1300_k_v1r2_Final_.PDF

가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을

UART Controller 구현

11장 포인터

Chapter 4. LISTS

Smart Power Scope Release Informations.pages

Chap06(Interprocess Communication).PDF

6 강남구 청담지구 청담동 46, 삼성동 52 일대 46,592-46,592 7 강남구 대치지구 대치동 922번지 일대 58,440-58,440 8 강남구 개포지구 개포동 157일대 20,070-20,070 9 강남구 개포지구중심 포이동 238 일대 25,070-25,

27집최종10.22

황룡사 복원 기본계획 Ⅵ. 사역 및 주변 정비계획 가. 사역주변 정비구상 문화유적지구 조성 1. 정비방향의 설정 황룡사 복원과 함께 주변 임해전지(안압지) 海殿址(雁鴨池)와 분황사 등의 문화유적과 네트워크로 연계되는 종합적 정비계획안을 수립한다. 주차장과 광장 등 주변

API 매뉴얼

untitled

Microsoft Word ARM_ver2_0a.docx

DIB-100_K(90x120)

untitled

android_HAL_input.hwp

Mango220 Android How to compile and Transfer image to Target

BMP 파일 처리

PRO1_09E [읽기 전용]

UI TASK & KEY EVENT

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

Microsoft Word - LKP-RTD 사용자 설명서

歯9장.PDF

슬라이드 1

歯superimp.PDF

금오공대 컴퓨터공학전공 강의자료


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

Transcription:

2. 디바이스드라이버 [ DIO ] 2.1. 개요 타겟보드의데이터버스를이용하여 LED 및스위치동작을제어하는방법을설명하겠다. 2.2. 회로도 2.3. 준비조건 ARM 용크로스컴파일러가설치되어있어야한다. 하드웨어적인점검을하여정상적인동작을한다고가정한다. NFS(Network File System) 를사용할경우에는 NFS가마운트되어있어야한다. 여기서는소스전문을포함하지않았다. 만약소스전문을보기원한다면제공한 CD 를참조하기바란다. DIO 디바이스드라이버를어플리케이션에서사용하기위해서는타겟보드의 /dev 디렉토리에다음과같이디바이스노드를만들어야한다. $ mknod /dev/port c 241 0 이외의준비조건은앞절의 GIPO의준비조건과동일하다.

2.4. 회도도설명 74HC138의핀의기능은다음과같다. 핀번호 SYMBOL 설명 1,2,3 A, B, C Address inputs. 타겟보드의어드레스버스 A8,A9,A10을 74HC138 의 A,B,C에연결하였다. 4 G2A Enable input. 타겟보드의 ncs4 신호를연결하였다. "L" 일때 active 된다. 5 G2B Enable input. 타겟보드의 ncs4 신호를연결하였다. "L" 일때 active 된다. 6 G1 Enable input. "H" 일때 active 된다. 8 GND Ground. (0V) 15,14,13,12,11,10,9, 7 Y0 to Y7 Y0 to Y7 Outputs. 16 VCC Positive supply voltage. 74HC138의동작모드는다음과같다 입력 출력 G2A G2B G1 A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 L L H L L L L H H H H H H H L L H H L L H L H H H H H H 회로도를보면출력신호로 Y0, Y1 2개의신호만을사용하고있다. 따라서, 74HC138의동 작모드는이에대한입력만을처리하였다. 다른출력신호에대한입력을알고자한다면 74HC138의데이터시트를참조하면된다. 74HC574의핀의기능은다음과같다. 핀번호 SYMBOL 설명 1 OC 3-state output enable input. "L" 일때 active 된다. 2,3,4,5,6,7,8,9 D1 to D8 Data inputs. PXA255의데이터버스 D0~D7에연결하였다. 10 GND Ground. (0V) 11 CLK Clock input. "Low-to-High" 일때 active 된다. 19,18,17,16,15,14,13,12 Q1 to Q8 3-state flip-flop outputs. 20 VCC Positive supply voltage. 14장 디바이스드라이버

74HC574의동작모드는다음과같다. OC CLK Dn Q1 to Q8 L l L L h H H l Z H h Z Notes H = HIGH voltage level h = HIGH voltage level one set-up time prior to the LOW-to-HIGH CLK transition L = LOW voltage level l = LOW voltage level one set-up time prior to the LOW-to-HIGH CLK transition Z = HIGH impedance OFF-state = LOW-to-HIGh clock transition 74HC245의핀의기능은다음과같다. 핀번호 SYMBOL 설명 direction control. 핀의방향을결정한다. 1 DIR "H" 일때 An-to-Bn으로데이터를보낸다. "L" 일대 Bn-to-An으로데이터를보낸다. 2,3,4,5,6,7,8,9 A0 to A7 data inputs/outputs "DIR" 핀이 "L" 이면출력이된다. "DIR" 핀이 "H" 이면입력이된다. 10 GND Ground. (0V) 18,17,16,15,14,13,12,11 B0 to B7 data inputs/outputs "DIR" 핀이 "L" 이면입력이된다. "DIR" 핀이 "H" 이면출력이된다. 19 G output enable input."l " 일때 active 된다. 20 VCC Positive supply voltage. 74HC245의동작모드는다음과같다. G DIR An Bn L L A=B Inputs L H inputs B=A H X Z Z IC 에관한더자세한사항을알고자한다면해당 IC 의데이터시트를참조하면된다. 아래는위의회로도를구동하기위한시퀀스를설명한내용이다.

회로도에서 LED 출력을위해서는타겟보듸의 D0 ~ D7의데이터버스가 74HC574를통하여 LED에연결되어있다. 즉 D0 ~ D7의데이터버스에입력되는값에따라서 LED는 ON/OFF 하게된다. LED를 ON/OFF하기위해서는 74HC574의 CLK(clock) 를 Low-to-High 상태로만들어주어야만 D0 ~ D7의데이터값이출력이되어 LED를 ON/OFF 할수있다. 74HC574의 CLK(clock) 를 Low-to-High 상태로만들어주기위해서는 74HC138의 1번핀에연결되어있는타겟보드의 A8,A9,A10 어드레스버스에 LOW 신호를인가하고, 74HC138의 G2A 핀에연결되어있는타겟보드의 ncs4핀에 LOW-to-HIGH신호를인가하면된다. BASE Address : 0xF4000000 : ncs4 OFFSET Address : 0x000 : A8(LOW), A9(LOW), A10(LOW) 회로도에서스위치의입력을위해서는타겟보드의 D0 ~ D7의데이터버스가 74HC245를통하여스위치에연결되어있다. 즉, 스위치를누르면 D0 ~ D7의데이터버스를통하여스위치누름을감지할수있다. 여기서는 8개의스위치가 D0~D8 에연결되어있다. 스위치의동작을읽기위해서는 74HC245의 DIR 핀을 LOW로만들어주어야한다. 회로도를보면 DIR핀이그라운드에연결되어 LOW 상태가되어있음을알수있다. 단지제어해야할것은 74HC245의 G 핀을 LOW로만들어주기만하면된다. 74HC245의 G핀을 LOW상태로만들어주기위해서는 74HC138의 1번핀에연결되어있는타겟보드의 A8 어드레스버스에 HIGH 신호를인가, A9,A10 어드레드버스에 LOW 신호를인가하고, 74HC138의 G2A 핀에연결되어있는타겟보드의 ncs4핀에 LOW신호를인가하면된다. BASE Address : 0xF4000000 : ncs4 OFFSET Address : 0x100 : A8(HIGH), A9(LOW), A10(LOW) 2.5. 컴파일및실행 이디바이스드라이버및어플리케이션의컴파일및실행은이미앞절의 GPIO에서설명하였기에여기에서는더이상설명하지않겠다. 대신디바이스드라이버의소스를분석하기로하겠다. 소스전문을보기원한다면제공한 CD를참조하기바란다. 2.6. 디바이스드라이버소스분석 작업디렉토리는 /project/ez-s2410/port 디렉토리이다. 핵심부분만을설명하도록하겠다.

디바이스드라이버의 [/project/ez-s2410/port/dev_int.c ] 의내용중 int port_init(void ) 함수를보면장치드라이버를등록하고있다. int port_init( void ) // 장치를등록한다. ============================================ major &= 0xff; if(!register_chrdev( major, DEV_NAME, &port_fops ) ) printk(" register device %s OK (major=%d)\n", DEV_VERSION, major ); else printk(" unable to get major %d for %s \n", major, DEV_NAME ); return -EBUSY; return 0; IO 영역의등록을살펴보자. LED 출력은 74HC138의 G2A, G2B, A, B, C 핀이 LOW G1 핀이 HIGH 상태일때 Y0로 LOW가출력되어 74HCT574의 CLK 신호를움직여 LED 출력을하게된다. 스위치입력은 74HC138의 G2A, G2B, B, C 핀이 LOW A, G1 핀이 HIGH 상태일때 Y1로 LOW가출력되어 74HCT245의 noe 신호를움직여스위치입력을받게된다. 여기서, G2A 핀에는타겟보드의 ncs4가연결되어있고, A,B,C 핀에는타겟보드의 A8,A9,A10의어드레스신호가연결되어있다. NCS4는타겟보드에서정의하기를물리적주소는 0x20000000이고, 가상주소는 0xf4000000 에매핑되어있다. 이매핑은 arch/arm/mach-s3c2410 /mach-ez-s2410.c 에등록되어있다. 만약이파일을확인하여등록이되어있지않다면추가하고다시커널을컴파일하여타겟보드에올려야한다. static struct map_desc ez_s2410_iodesc[] initdata = /* virtual physical length domain */ 0xf1000000, S3C2410_CS1 +0x000000, 0x00100000, MT_DEVICE, // ncs1, CS8900 0xf1200000, S3C2410_CS1 +0x800000, 0x00100000, MT_DEVICE, // ncs1, REV1 0xf1300000, S3C2410_CS1 +0xc00000, 0x00100000, MT_DEVICE, // ncs1, REV2 ; 0xf2000000, S3C2410_CS2, 0x01000000, MT_DEVICE, // ncs2 0xf3000000, S3C2410_CS3, 0x01000000, MT_DEVICE, // ncs3 0xf4000000, S3C2410_CS4, 0x01000000, MT_DEVICE, // ncs4 0xf5000000, S3C2410_CS5, 0x01000000, MT_DEVICE, // ncs5

IO영역의범위및입 / 출력주소에대하여알아보기로하자. 이것에대한정의는 [ /project/ez-s24120/port/dev_int.h ] 에정의되어있다. /* 모듈관련 -------------------------------------------------------------------*/ #define DEV_MAJOR_DEF 241 #define DEV_VIRT_PORT_DEF 0xf4000000 // ncs4 #define DEV_PORT_SIZE_DEF 0x00001000 디바이스드라이버 open 시이주소가설정된다. LED 출력과스위치입력을위한 IO영역은 0xf4000000 ~ 0xf4000100 까지이다. LED 출력을위한주소는 74HC138의 A, B, C 핀이 LOW 상태로타겟보드에연결되어있는 A8,A9,A10 어드레스신호가 LOW 상태로되어야한다. 따라서 ncs4( 0xf4000000 ) + A8( 0x000) + A9(0x000) + A10(0x000) = 0xf4000000의어드레스신호가 LED 출력을위한주소이다. 스위치입력을위한주소는 74HC138의 B, C 핀이 LOW 상태이고, A 핀이 HIGH 상태로타겟보드에연결되어있는 A8 어드레스가 HIGH 상태로되어야한다. 따라서 ncs4 ( 0xf4000000 ) + A8(0x100) + A9(0x000) + A10(0x000) = 0xf4000100의어드레스신호가스위치입력을위한주소이다. 어플리케이션에서이주소를 ioctl 함수를통해서설정할수있게하였다. 디바이스드라이버의 [/project/ez-s2410/port/drv_port.c ] 의내용중 ioctl 함수와어플리케이션의 ioctl 함수접근하는소스를보여준다. [ioctl 함수 ] dev_port.c int port_ioctl( struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg ) dev_port_t *pdev = (dev_port_t *)filp->private_data; switch (cmd) case IOCTL_SET_PORT : set_port_t set_port; // 어플메모리에서복사한다. copy_from_user( (void *)&set_port, (void *)arg, sizeof(set_port_t) ); // 물리주소를가상주소를변경한다. pdev->virport = (volatile unsigned char *)set_port.virport; pdev->size = set_port.size; return 0; return -EINVAL;

[ 어플리케이션접근함수 ] app_port.c set_port.virport = 0xf4000100; // ncs4 set_port.size = 0x100; ioctl( fd, IOCTL_SET_PORT, &set_port ); [ioctl 인자구조체 ] dev_port.h typedef struct unsigned int virport; unsigned int size; set_port_t; 이디바이스드라이버를등록하고, 어플리케이션을실행시키면스위치입력에따라 LED 가 ON/OFF 하는것을확인할수있다.