본문 바로가기

[INTERFACE]/USB

USB Device Driver 작성

USB Device Driver 작성



옛날 작성해 두었던 자료를 보니... 작성하다 말았네 윽... 시간을 두어 정리해 두는것이 얼마나 중요한 것인이 새삼 느낀다.
제공하는 드라이버는 NT용으로 제작된 드라이버라 DDK버젼이 많이 틀려서 않되는것 같다.
쉽지 않다... 컴파일하니 640개의 에러를 발생한다.


억지로 읽어올 수는 있겠지만... 아무래도 고유의 드라이버를 할당하는것이 좋을것 같다.
그러면 드라이버를 새로 컴파일 해서 만들어야 한다.
일단 예전에 만들었던 ezusb 드라이버를 살려보자.
 
[2006-09-09 19:53:30]
환경 설정이 만만치 않다.
최소한의 기능만 가지고 심플하게 동작할 수 있도록 다이어트 하자... 필요한 함수만 모아서 이해하기 쉽게 작성



Bulid 옵션 잡아주고



DDK PATH가 변경되었다. 이것도 수정..



마지막으로 환경 설정


정상 컴파일이 잘 된다. usb device driver 제작 완료!


이제 펌웨어에서 pid, vid 변경하니 정상적으로 올라온다.


PC프로그램은 PIPE변경하니 데이터 송수신도 잘 동작한다. 예전에는 IOCTL로 통신하던 부분을 BULK로 전송할 수 있도록 수정.
 
 pipeNum = 2;
 buf[0] =  COMMAND_LED1_OFF;
 buf[1] =  0;
 buf[2] =  0;
 buf[3] =  0;
 
 // Perform the BULK OUT
    bResult = DeviceIoControl(m_hWdmHandle,
                     IOCTL_USB_BULK_WRITE,
                     &pipeNum,
                     sizeof(pipeNum),
                     buf,
                     sizeof(buf),
                     &nBytes,
                     NULL);
 
수정된 테스트 프로그램 
 
고속 데이터 전송을 위해 쓰레드가 필요할텐데... 이부분은 테스트 해보고 다시 한번 봐야 겠다.




테스트 동영상<- 최근 테스트 하면서 다시 만들어 봤다.



반응형