1 / 24

LED, LCD, Snake 실습

LED, LCD, Snake 실습. Sunmoon univ. Ubiquitous Application Lab. shbae. 하드웨어 제어. 방법 메모리 맵을 이용한 하드웨어 제어 . 디바이스 드라이버를 이용한 하드웨어 제어 . << 차례 디바이스 드라이버의 정의 및 종류 . 디바이스 드라이버 등록 및 해제 . 디바이스 드라이버 응용 프로그램 작성. 디바이스 드라이버란 ?. 정의 응용프로그램이 H/W 를 제어할 수 있도록 인터페이스를 제공해 주는 코드 .

tate-quinn
Download Presentation

LED, LCD, Snake 실습

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LED, LCD, Snake 실습 Sunmoon univ. Ubiquitous Application Lab. shbae

  2. 하드웨어 제어 • 방법 • 메모리 맵을 이용한 하드웨어 제어. • 디바이스 드라이버를 이용한 하드웨어 제어. << • 차례 • 디바이스 드라이버의 정의 및 종류. • 디바이스 드라이버 등록 및 해제. • 디바이스 드라이버 응용 프로그램 작성.

  3. 디바이스 드라이버란? • 정의 • 응용프로그램이 H/W를 제어할 수 있도록 인터페이스를 제공해 주는 코드. • 프로그래머로 하여금 하드웨어 독립적인 프로그램을 작성하도록 도와줌. • 종류 • 문자 디바이스 드라이버 • 블록 디바이스 드라이버 • 네트워크 디바이스 드라이버

  4. Applicationarea Application System Call Interface 문자드라이버와 블록드라이버의 차이 VFS Kernelarea Buffer Cache Network Subsystem Character D/D Block D/D Network D/D Device Interface Hardware Hardware Linux Kernel Layout

  5. 디바이스 드라이버의 종류(1) • Character Device • 자료의 순차성을 지닌 장치 • 입출력연산 한번으로 임의의 데이터 전송 • Console, Keyboard, Serial, Parallel port …… • Block Device • 블록 단위로 데이터 입출력- Buffer Cache를 사용 • File System에 마운트 되어 관리되는 장치 • 입출력연산 한번으로 고정된 크기의 데이터 전송 • Disk, Cdrom, Floppy ……

  6. 디바이스 드라이버의 종류(2) • Network Device • 대응하는 장치파일이 없음. • 응용프로그램과의 통신은 표준 파일 시스템관련 콜 대신 socket(), bind() 등의 시스템 콜 사용.

  7. 디바이스 종류 주번호(Major Number) 부번호(Minor Number) 디바이스 장치 파일 예제

  8. 기본적인 문자디바이스 드라이버 • 디바이스 드라이버 구성 • 초기화 인터페이스 • init() 함수, init_module() 함수 • 디바이스 등록 • 파일 시스템 인터페이스 • 잘 정의된 인터페이스 : file_operations 이용 • open(), release(), read(), write(), ioctl() • 하드웨어 인터페이스 • memory mapped I/O : 메모리 연산 • special in/out instruction – in(), out()

  9. 드라이버의 구조 • init_module(), cleanup() :디바이스 등록 및 해제하기 위한 함수 • open():해당 디바이스에 연산을 가하기 위해 해당 디바이스 파일을 열기 위한 함수. 사용수 증가. • read():해당 디바이스로부터 데이터를 얻은 데이터를 커널 영역에서 사용자 영역으로 복사하기 위한 함수. • write():사용자 영역의 데이터를 커널 영역으로 복사하기 위한 함수. • release():해당 드라이버가 응용프로그램에 의해 닫힐 때 호출 하는 함수. 사용수 감소. • Ioctl():읽기 / 쓰기 이외의 부가적인 연산을 위한 인터페이스 - 디바이스 설정 및 하드웨어 제어(향상된 문자드라이버 작성가능)

  10. 설정 - 드라이버 적재 및 삭제 • 노드 생성 - 노드를 통해서 입출력 수행. • mknod /dev/파일이름 드라이버특성 주번호 부번호 • 예) mknod /dev/lcd_dd c 127 0 • 생성 후 속성변경 : chmod ug+w /dev/led_dd • 디바이스 드라이버 적재 • insmod 드라이버명.o • 예) insmod lcd_dd.o

  11. 설정 - 드라이버 적재 및 삭제 • 디바이스 드라이버 삭제 • rmmod 드라이버명 • 예)rmmod lcd_dd (주의 .o가 붙지 않음) • 드라이버의 적재 여부 • lsmod

  12. 프로그램 명세 • 응용프로그램 • 입력 : 키보드로 사용자의 입력을 받음. • 출력 : LCD창에 입력된 내용 출력. • 파일 • font.h : LCD에 사용할 폰트 파일. • lcd_dd.h : 디바이스 드라이버 제작에 사용한 헤더 파일(함수 및 내장변수 목록). • lcd_app.c : 사용자의 입력을 받아서 LCD 드라이버에 넘겨주는 소스파일.

  13. 예제 실습 • CD에 있는 예제를 작업디렉토리로 복사 • /mnt/cdrom/Resource/Part4/Driver/ • 위의 경로에서 LED, LCD 디렉토리를 작업 디렉토리로 복사 • /mnt/cdrom/Resource/Part5/ • 위의 경로에서 Snake 디렉토리를 작업 디렉토리로 복사

  14. LED • LED 작업 디렉토리에서 Makefile을 통해서 컴파일과 디바이스 드라이버를 생성을 한다. -Host % make clean % make - Makefile에 의해서 leddd_test.o가 /usr/driver에 복사된다.

  15. LED • 디바이스 드라이버를 적재 • 장비 bash-2.05b# cd /usr/driver bash-2.05b# insmod leddd_test.o - Host • /LED/testp에서 다시 make한다. % make clean % make

  16. LED • 실행 파일을 장비에서 실행시킨다. • 실행 • 장비에서 자신의 작업디렉토리에 있는 leddd_test를 실행시켜준다. bash-2.05b# ./leddd_test 

  17. LCD • LCD 작업 디렉토리에서 Makefile을 통해서 컴파일과 디바이스 드라이버를 생성을 한다. -Host % make clean % make - Makefile에 의해서 lcd_dd.o가 /usr/driver에 복사된다.

  18. LCD • 디바이스 드라이버를 적재 • 장비 bash-2.05b# cd /usr/driver bash-2.05b# insmod lcd_dd.o - Host • /LCD/testp에서 다시 make한다. % make clean % make

  19. LCD • 실행 파일을 장비에서 실행시킨다. • 실행 • 장비에서 자신의 작업디렉토리에 있는 lcd_test를 실행시켜준다. bash-2.05b# ./lcd_test 

  20. LCD • 또 다른 LCD 예제 하나 더 • Host • /LCD/lcd_app에서 다시 make 한다. % make clean % make

  21. LCD • 실행 파일을 장비에서 실행시킨다. • 실행 • 장비에서 자신의 작업디렉토리에 있는 lcd_app를 실행시켜준다. bash-2.05b# ./lcd_app 

  22. Snake • Snake 작업 디렉토리에서 Makefile을 통해서 컴파일과 디바이스 드라이버를 생성을 한다. -Host % make clean % make - Makefile에 의해서 snake가 /usr/snake/snake에 복사된다.

  23. Snake • Snake 예제는 3가지를 insmod 해야한다.(key_dd.o, led_dd.o, lcd_dd.o) - 디바이스 드라이버를 적재 • 장비 bash-2.05b# cd /usr/driver bash-2.05b# insmod led_dd.o bash-2.05b# insmod lcd_dd.o bash-2.05b# insmod key_dd.o

  24. Snake • make를 통해 생성된 실행 파일을 장비에서 실행한다. bash-2.05b# ./snake 

More Related