본문 바로가기

USB Lecture

(30)
USB Vendor ID List Source : http://www.cs.utah.edu/~lambert/mlrsim/download_orig/pcidevs /* * Copyright (c) 2002 University of Notre Dame du Lac * Copyright (c) 2002 University of Utah * Copyright (c) 1982, 1986, 1989, 1991, 1992, 1993 * The Regents of the University of California. All rights reserved. * (c) UNIX System Laboratories, Inc. * * Portions of this file developed by: * Lambert Schaelicke, University of ..
GPIF를 사용한 Bulk In 출처 : http://muosys.egloos.com/221117 회로도 Array 전체적인 모습 Array 세부모습1 Array 세부모습2 Array UniHigh Firmware v2.7 UniHigh App v2.7 v2.7 Application은 기본적으로 v2.6과 동일하다. Overlapped I/O에 관련된 코드오류를 바로잡은 것이 다른 점이다. 실험방법은 이전 v2.6의 실험방법과 동일하다. Firmware v2.7은 v2.6의 8051 코어가 Bulk IN을 수행하던 부분을 GPIF가 대신하도록 바꾼 것이다. 구체적으로는 TD_Poll()의 마지막에 기존의 같은 기능을 하던 부분을 들어내고, 다음의 코드를 추가한 것이다. if( bConfigured ) { if( GPIFTRIG & 0x..
두번째 Bulk In 출처 : http://muosys.egloos.com/203067 오늘은 Bulk IN transfer를 실험해 보자. 이전 강의 “Bulk IN 실험”을 참조하시라. 우선 아래와 같은 회로를 꾸미자. 이전 강의(Bulk IN 실험)의 회로와 약간 다르니, 이전 강의의 회로도를 참조해서 실험하면서 왜 안되나요? 라고 물으면 대략 즐. Array 바로 전 실험을 하면서 이미 꾸며져 있는 회로에 Parallel Port와 인터페이스 할 배선만 추가하면 된다. 전체사진 Array 세부사진1(Parallel Port 쪽) Array 세부사진2(LED 쪽) Array 세부사진3(버튼 쪽) Array 펌웨어는 v2.5에 v1.6을 추가하는 형식으로 수정하였다. Unihigh Firmware v2.6 어플리케이션 소..
EEPROM에 펌웨어 구워넣기 출처 : http://muosys.egloos.com/198883 오늘은 잠깐 곁가지로 새서, EEPROM에 펌웨어를 구워보자. 이제까지 우리는 작성한 펌웨어를 EZ-USB Control Panel을 써서 CY7C68013으로 다운로드 해 왔다. 하지만 이러한 방법은 개발할 때에나 쓸 수 있는 것이고, USB장치를 사용할 때마다 사용자더러 이렇게 번거로운 절차를 행하라고 시킬 수는 없는 일 아닌가? 따라서 펌웨어를 EEPROM에 구워 넣고, 장치를 USB 포트에 끼워 넣으면 바로 우리가 코딩한 펌웨어에 따라 동작하는 USB 디바이스로 인식되게끔 만들어 보자. 먼저 EEPROM의 시작번지 첫 두 바이트에 0xFF 0xFF를 써 주어야 한다. 요 짓을 왜 하느냐 하면 아래에 설명하겠지만, EEPROM 이미지..
Bulk Out Pipe(PIPE 01)를 통해 디바이스로 데이터 전송하기 출처 : http://muosys.egloos.com/196351 오늘은 Bulk Out Endpoint를 통해 호스트로부터 데이터를 디바이스로 전송하는 것을 연습해 볼 차례이다. Bulk Endpoint로 데이터 날리기를 참조하여 회로를 꾸미고, 아래의 소스들을 다운로드 받아 설치하자. 참고적으로 다가 얘기하자면 이미 구성되어 있는 회로(Port A.7의 LED, Port A.6의 버튼 )는 떼어내지 말고, 그대로 두고서 Port B에 8개의 LED를 추가로 설치하길 바란다. Array UniHigh Firmware v2.5 UniHigh Application v2.5 data.bin
IN Setup & 버튼(메시지) 받기 출처 : http://muosys.egloos.com/193127 오늘은 Default Control Pipe를 이용하는 마지막 예제를 디벼보고, 버튼입력을 받는 것을 연습해 보자. 그 전에 잠깐. 이전에 다운 받은 예제 중에 UniHigh Application v2.1/v2.2내의 OnButtonLEDBllink()함수에서 파라메터(sizeof(PCONTROL_REQUEST))가 잘못 사용되었다. 이를 수정하여 다시 올렸으니 다운 받으시던지 아니면 그냥 아래의 정정된 예제를 참조하시든지 하시라. 이전 강의 Control Endpoint의 DATA stage 활용 - IN편에서는 IN Data Stage를 이용해서 디바이스로부터 호스트로 데이터를 전송하는 것을 설명하였었다. 이 예제들을 실험하기 위해서는..
UniHigh v2.1 & v2.2 와 드라이버 업데이트 출처 : http://muosys.egloos.com/181705 계속해서 Default Control Endpoint를 통해 디바이스와 통신하는 방법을 연습해 보자. 오늘은 이전 강의 SETUPDAT 활용하기와 Control Endpoint의 DATA stage 활용 - OUT편 을 unihigh.sys를 이용해서 어플리케이션에서 디바이스로 접근할 수 있도록 고쳐본다. 먼저 새로운 버전의 unihigh.sys를 다운받아서 드라이버 업데이트를 시켜야 한다. UniHigh Driver v2.1 위의 드라이버를 다운 받아서 원하는 위치에 압축을 풀어 놓자. (c: 같이 ASCII문자로만 구성되며, 공백이 없는 디렉토리에 풀어 놓는게 안전하다.) 드라이버를 업데이트 시키는 방법은 다음과 같다. UniHigh ..
UniHigh 2.0 펌웨어, 드라이버, 어플리케이션 출처 : http://muosys.egloos.com/176088 오늘은 이전 강좌의 펌웨어 예제 UniHigh v1.0을 본좌가 만든 WDM USB 드라이버인 unihigh.sys를 써서 우리가 만들 어플리케이션에서 동작시키는 연습을 해 보자. 우선 기존의 펌웨어 예제를 살짝 바꿔주어야 한다. 바꿀 부분은 디바이스 디스크립터의 Vendor ID와 Product ID이다. USB 디바이스가 포트에 꽂히면 운영체제(USB 호스트)는 디바이스 디스크립터 중에 Vendor ID와 Product ID를 읽어, 그에 해당하는 드라이버를 찾아 로딩하고 사용할 준비를 한다. 그 ID들에 해당하는 기존에 깔려있는 드라이버를 찾지 못하면 운영체제는 새 드라이버를 요구하는 대화상자를 띄우게 된다. 물론 UniHigh v1..