driver - 해당되는 글 2건

BUFFALO LPC3-CLX driver

Windows 98/95
Windows 2000
Windows xp

      카테고리 없음  |  2008. 4. 6. 10:02




장치를 읽어와서 유저 어플리케이션에 전달을 해주는것이목표이다.
형태는
--------
리드하는 함수 쓰는방법 read함수에서 필요한것은
ssize_t _XXX_read(struct file *flip, char *buff, size_t  count,  loff_t  *off)
read를 할때는 copy_to_user를 사용한다.
변수하나에 등록을 할때는 putuser를 사용한다.
디바이스를열때
O_NONBLOCK, O_NDELAY등에 연결되어있다,.
리드함수에서 하드웨어를 다루려면 다음함수를 사용한다.
매모리맵아이오 :  readb,readw, readl  암에서 주로쓴다
포트맵아이오 inb,inw,inl,nsb,insw,insl 엑스팔육에서 주로쓰고
아이오 매모리 블럭 memcopy  이런거 쓴다.
다용자에게 카피투유저나 풋유저를 사용해서 사용자가 넘겨준 주소를 쓰면된다.

인터럽트 서비스
내부저장
내부버퍼에 쌓여있는 데이터를 보고 풋유저나 카피투유저를 이용해서
사용자 메모리에다가 복사를 해준다.
-----------------------

iotcl은 리드나 라이트 함수가지고 할수없는제어나 기능들
리드나 라이트를 장치로부터 데이타를 쓰거나 데이타를 읽어 오는기능들은하는것이다.
보레이트 설정이나,
이런것들은 ioctl을 이용해서 특정값을 쓸수있도록 구현을 해줄수있다

cmd는 정해진게아니다, 보통인트형이고 디바이스마다 다르다.
어플리에선이렇게 쓰면된다.
int ioctl(int fd, int cmd...);

예를 들어서 유아트의 보레이트를 설정하고 싶으면
set _보레이트 가 1번으로 설정되어 있으면
intioctl(1, 232..);이런식으로 쓴다
==============================================
커널의 ioctl은
변함없이 inode구조체랑파일구조체가 넘어온다.
그리고 arg라고하는 주소를 전달해주는것이 넘어온다.
cmd인수를 명령을 나타내는 응용프로그램의 인수전달

cmd상수값  디바이스드라이버에서 정의한 이값을 유저 어플리케이션에도 알고 있어야된다.
예를들면 커널의 cmd 1을 유저 어플에서도 cmd 1번이 같게 동작하게 만들어야된다.
int sk_ioctl(struct inode *inode, struct file *filp, unsigned int cmd , unsigend long arg);
-----------------------------------------------------------------------------------------
커널 cmd가 들어왔을때 0 이면 어떤작업하고 1이면 어떤작업하고 하는게 케이스문같은걸로 정의 되어 있다.

      리눅스  |  2007. 10. 19. 10:39



sokoban's Blog is powered by Daum & Tattertools