USB-EK01 User s Manual AN2131, EZ-USB and Cypress are trademarks of Cypress Semiconductor, Keil and uvision2 are trademarks of Keil software. Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned in this document as their own property. The information in this document is subject to change without notice and no part of this document may be copied or reproduced without the prior written consent. Copyrights 2005 DAQ system, All rights reserved. - 1 -
-- 목차 -- 1. 개요 2. USB-EK01 사양및기능 3. 설치 3.1 내용물확인 3.2 Cypress Development kit 설치 3.3 보드드라이버설치 4. USB-EK01 설명 5. 시험 4.1 USB-EK01 개념 4.2 메모리맵 4.2.1 8051 메모리맵 4.2.2 EK01(AN2141) 메모리맵 4.2.3 IK01( 확장보드 ) 메모리맵 4.3 부팅옵션 4.4 CDROM 폴더설명 5.1 Example 시험 5.2 Keil uvision을이용한프로그램및디버깅 5.3 USB Firmware 5.4 USB PC 드라이버만들기 5.5 EEPROM Image 만들기 5.5.1 No Serial EEPROM 5.5.2 Serial EEPROM with First Byte 0xB0 5.5.3 Serial EEPROM with First Byte 0xB2 5.6 PC용어플리케이션프로그램 부록 (Appendix) A. 드라이버설치및제거 B. 보드커넥터 PIN map C. 참조사항 D. 참조자료 - 2 -
1. 개요 IBM에서 PC(Personal computer) 가 1981년도에발표된이후, PC는산업뿐만이아니라개인의생활속에도깊숙이파고들어왔다. 아마, 컴퓨터가없는일상의생활을상상한다는것은현재에서는힘든일일것이다. PC가이토록급속하게발전할수있었던이유는표준화된인터페이스및아키텍처를일반에게공개함으로써많은디바이스 ( 장치 ) 들이각각의목적에맞게설계되고, 활용되었기때문이다. 초기 PC에서는 ISA 방식의장치들의사용만으로도충분한성능및목적을달성할수가있었다. 하지만데이터속도및보다나은확장성및손쉬운사용을원하는일반사용자가증가함에따라새로운인터페이스 ( 연결 ) 가요구되었고, 이에 USB 및 PCI 등의표준인터페이스방식이제정이되었다. PCI(Peripheral Component Interconnect) 의경우병렬방식의인터페이스방식으로대량의정보를처리하는데적합하도록설계되었으며, USB(Universal Serial Bus) 의경우직렬연결을사용함으로써보다간편하게연결하고, 이동성이용이하도록하였다. 위의두방식모두 Plug and Play라는방식을이용하여사용자가장치설정을할필요가없도록하였다. ( 예전 ISA 보드의경우사용자가메모리, I/O, 인터럽트, DMA등을직접점퍼및스위치를이용하여설정하였다. -- 이러한방식의문제점은보드간에충돌발생을사용자가충분히인지하여해결을해주어야만하였다.) 특히, USB의경우 Hot-pluggable 방식으로장비 (PC) 가동작중에연결하여사용할수있으며, USB2.0의경우부족하던데이터전송속도를최대 480Mbps까지사용할수있게되었으며, 기구적인보드의확장슬롯수에관계없이총 127개까지의디바이스를하나의호스트에연결하여사용할수있다. 또한, 케이블을통하여 500mA까지전원공급이가능하므로적은전력을소비하는장치의경우별도의전원공급장치가필요가없도록하였다. 이러한 USB 디바이스 ( 장치 ) 를개발하는데있어개발자가손쉽게사용할수있고확장이용이한보드를제공함으로써개발기간을단축할수있으며, 다양한분야게응용할수있도록하는데중점을두어보드를제작하였다. USB Hub [ 그림 1-1. USB 인터페이스를이용한다양한디바이스 ( 장치 ) 연결 ] - 3 -
+5V D+ D- GND USB Con USB Tranceiver SIE (Serial Interface Engine) General Purpose Microcontroller Ext. Int. External or Internal ROM/RAM General USB Device [ 그림 1-2. 일반적인 USB 디바이스 ( 장치 ) 내부블록도 ] 보통의 USB 디바이스는내부에전기적신호를주고받는 Tranceiver, 데이터를가지고신호를만들고복원하는 Serial Interface Engine 그리고, 실질적인데이터를만들어내고이용하는 Micro-controller 등으로구성이된다. 외부인터페이스 (External Interface) 는사용자가디바이스특정목적을위하여연결할수있는기구적이나, 전기적인연결을의미한다. 마우스를예로들면, 버튼이나 Wheel이여기에해당된다. A = Low speed B = Full speed 1.5K ohm A B +5V Host D+ Controller D- GND A type Con. USB cable B type Con. +5V D+ D- GND Device Controller 15K ohm USB Host USB Device [ 그림 1-3. 일반적인 USB 디바이스연결 ] 위의 [ 그림 1-3] 은보통의 USB 디바이스를 Host(PC) 에연결하는것을보여준다. 여기에서 USB 스팩 1.1까지보게되면, 디바이스는 Low speed(1.5mbps) 와 Full speed(12mbps) 구분이되는데, Host에서디바이스의스피드를알수있는방법은그림과같이내부에장착되어있는풀업 (Pull-up) 저항을통하여알수있다. USB-EK01은 Full speed를지원하는장치이다. - 4 -
USB Device Configuration0 Interface0 End Point0 End Point1 Other Interfaces Interface1 Other Interfaces Configuration1 Interfaces Other Configurations [ 그림 1-4. USB 디바이스 Logical 개념 ] 위의그림에서알수있듯이 USB 디바이스를논리적인관점 ( 프로그램밍 ) 에서보면하나의장치 (Device) 는여러개의 Configuration을가질수있고또, Configuration은여러개의 Interface로나뉘며 Interface는여러개의 EndPoint를가질수있다. 실질적인데이터흐름을보면, 각 EndPoint가데이터시점혹은종점이된다. 따라서, 이러한 EndPoint의연결을데이터 Pipe라칭하고있다. - 5 -
2. USB-EK01 기능및사양 < 기능 > - USB Protocol 시험및개발 - 8051 프로그램시험및개발 - PC용 USB device driver 시험및개발 - Step by Step 디버깅연습 < 사양 > - Full speed(12mbps) USB 지원 - 향상된 8051 코어를사용하는마이크로컨트롤러 - 편리한인터페이스의 USB SIE(Serial Interface Engine) - Step by Step 디버깅및 8051 Compile 시험 (Code size limited 4K) - USB 케이블을통한전원공급 ( 최대 500mA) - 두개의 RS232 interface ( 최대전송속도-115200bps) 를디버깅혹은특정목적으로사용할수있음. - USB를이용한보드리셋및펌웨어프로그램로드 - Cypress의 Development Kit을이용한편리한디바이스개발 - 평가판 Keil 컴파일러및디버거사용가능 (4K code 제한 ) JP3 JP1(Boare Extention) DAQ system JP2 SW1 D1 D2 D3 P1 RS232 connection SW2 SW3 Reset AN2131 JP4 JP5 (USB B type Connector) JP7(Boare Extention) Power D4 JP6 [ 그림 2-1. USB-EK01 외형 ] 위의 [ 그림 2-1] 은보드의외형을보여주고있으며, USB 케이블이연결이되어전원 이공급될때점등하는 Power LED 와 Reset 스위치를나타내고있다. 좀더자세한사항은 4.1 USB-EK01 개념 을참조하기바란다. - 6 -
3. 설치 3.1 내용물확인 [ 그림 3-1. USB-EK01 주요내용물 ] (1) USB-EK01 Evaluation board (2) USB(A-B) 케이블 (3) 9Pin Null Modem 케이블 (4) CD ( 매뉴얼 / 회로도 / 시험예제등등 ) 3.2 Cypress Development kit 설치 보드의개발및예제에주로 Cypress에서제공하는 Development Kit를참조하였으며, 개발자여러분도많은유익한자료및내용을얻을수있을것으로판단된다. Development kit 는 Cypress 홈페이지 www.cypress.com 에서다운받아사용할수있다. Development kit 는소프트웨어패키지로약 60Mbyte 정도의크기이며, 이를 PC 에설치하게되면폴더구조는다음과같다. - 7 -
[ 그림 3-2. Cypress Development Kit 설치후폴더구조 ] [ 참조 ] Keil 소프트웨어및별도의참조자료를설치하기위하여는디폴트가아닌 커스텀설치로, 설치옵션을선택하여야한다. 설치가정상적으로이루어졌다면위에보는그림과같이폴더가사용자 PC에생기는것을확인할수가있을것이다. Cypress Development Kit 에는 Keil 컴파일러및디버거가포함이되어있으며, 코드사이즈가 4K byte 범위에서상용목적이아닐경우자유롭게사용할수있다. - 8 -
3.3 보드드라이버설치 USB-EK01 Users Manual (Rev 1.0) 모든시험은 Windows2000 Professional을기준으로하였으며, Windows XP 에서도최종시험을마친상태이다. 아래의그림과같이시작 / 설정 / 제어판 / 시스템등록정보에서하드웨어탭 / 장치관리자를실행한다. [ 그림 3-3. 장치관리자를선택하기까지의화면 ] - 9 -
[ 그림 3-4. 장치관리자실행화면 ] [ 그림 3-4] 는장치관리자의실행화면이다. 여기에서현재 PC 에연결되어있는모든 USB 디바이스를확인할수있다. 현재에는아직 USB-EK01 보드를연결하지않은상 태이기때문에표시가되지않을것이다. [ 그림 3-5. USB-EK001 연결그림 ] 상기그럼의빨간색원과같이점퍼를연결한후, USB 케이블을통하여보드와 PC를연결한다. 점퍼를사용하는이유는 EEPROM(24LC64) 의어드레스를 AN2131에서인식할수있도록하기위함이다. AN2131은 Power On Booting 시 I2C Port에연결되어있는 EEPROM의내용을갖고다양한부팅옵션을선택한다. 보드부팅옵션에사용할수있는 EEPROM은아래테이블과같으며, 보다자세한내용은 AN2131 매뉴얼의 I2C Boot Loader 를참조하기바란다. - 10 -
크기 (Bytes) EEPROM A2 A1 A0 16 24LC00 N/A N/A N/A 128 24LC01 0 0 0 256 24LC02 0 0 0 4K 24LC32 0 0 1 8K 24LC64 0 0 1 USB 케이블을연결하게되면, 아래의 새하드웨어검색마법사 가자동으로실행되며, 장치관리자에서연결된 USB 디바이스를확인할수가있다. Cypress Development Kit가미리설치가되었기때문에별도로드라이버를요구하지는않는다. [ 그림 3-6. 보드가 PC 에디폴트로등록된화면 ] 위의그림은모든것이정상적으로설치가되었을때볼수있는화면이다. 디폴트 ( 구매시 ) 로보드의 EEPROM의내용은다음과같다. 0000h: B0 47 05 80 00 00 00 ( 사이프레스의 2100.iic 파일참조 ) 즉, EEPROM에있는 VID = 0x547, PID=0x80 를이용하여 USB 장치로 PC에등록하라는것이다. - 11 -
만약, 점퍼가연결이되지않았다면화면은다음과같을것이다. 확인을할수있는 방법은점퍼를제거한후보드의리셋스위치를 ON/OFF 시키거나, USB 케이블을빼었 다가다시연결을해본다. 보다자세한사항은 4.3 부팅옵션 에서설명을할것이다. [ 그림 3-7. EEPROM 인식없이보드가 PC 에등록된화면 ] 그럼, 다시점퍼를연결하고보드를재부팅시켜, [ 그림 3-7] 과같이보드가 PC 에등 록이되어있는가를확인한다. 확인이되면, Cypress Development Kit 에서제공하는유틸 리티인 EZ-USB Control Panel(EzMr.exe) 을실행시킨다. [ 그림 3-8. EZ-USB Control Panel 실행방법 ] ( 참조 ) Cypress 에서제품개발시유용하게사용할수있는유틸리티는 Cypress\USB \Bin 그리고 Cypress\USB\Util 폴더에서찾을수있다. - 12 -
EZ-USB Control Panel(EzMr.exe) 의실행화면은 [ 그림 3-9] 와같다. 만약, 디바이스가연결이되지않을경우그림과같은화면이아닌에러메시지가표시가 된다. [ 그림 3-9. EZ-USB Control Panel 실행화면 Control Panel에대한자세한사용법은 Cypress에서제공하는 EZ-USB Contents and tutorial.pdf 을참조하기바란다. 그럼지금부터보드가 DAQ system 개발보드로 PC에등록이되도록설치를하도록한다. 기본적인모든시험은위의설정만으로도가능하나, Keil 소프트웨어를이용한디버깅시에필요한이미지를보드에넣기위하여는 DAQ system의드라이버가설치되어야한다. 설치에사용되는 Vender ID는 FFFF 이며, 이는등록된 ID가아니며임으로선정하여사용되었음을밝힌다. AN2131칩의경우 Power On Reset 시 I2C에연결된 EEPROM의첫번째바이트를읽어서그내용을보고어떠한내용으로기동할것인가를판단한다. 만약, 첫번째바이트가 0xB0 나 0xB2 가아닐경우 EEPROM이없는것으로판단하여디폴트로기동한다. (Vender ID 0x0547, Product ID 2131). - 13 -
보드를 DAQ system의개발보드로인식시키기위하여는 EEPROM의내용을수정해주어야한다. (Vender ID 0xFFFF, Product ID 0001) 부트옵션에대한보다자세한사항은 4.3 부팅옵션 을참조하기바람. EEPROM의내용을수정하는방법은다음과같다. EZ-USB Control Panel에서 EEPROM 버튼을누르게되면 file 다이얼로그박스 가나타나게된다. 이다이얼로그박스에서제공되는 CD ROM의 Program\EPROM_IMG 폴더의 Sample.eep 를선택한후열기버튼을누르게되면 EEPROM의내용이바뀌게된다. [ 그림 3-10. EEPROM 의내용을바꾸기위하여 sample.eep 를선택한화면 ] 바뀐내용은다음과같다. 0000h: B0 FF FF 01 00 00 00 즉 VID 0xFFFF 그리고 PID 0x0001로부팅하여등록하라는내용이다. EEPROM 쓰기가끝나게되면, 리셋스위치를누르던가아니면, USB 케이블을뺐다껴서보드를 PC에재등록을시킨다. 그렇게되면, 상기 ID는현재 PC에등록되어있지않기때문에 새하드웨어검색마법사 가기동이되며다음과같은화면이나타나게된다. - 14 -
[ 그림 3-11. 새하드웨어검색마법사가실행된모습 ] 다음버튼을누른다. [ 그림 3-12. 드라이버설치화면 ] 다음버튼을누른다. - 15 -
[ 그림 3-13. 드라이버파일찾기화면 ] 위의화면에서위치지정을선택한후다음버튼을누른다. [ 그림 3-14. 드라이버선택화면 ] 위의화면에서제공되는 CD ROM 의 Software\Driver 폴더의 daqusbw2k.inf 파일을선택한후확인버튼을누르게되면드라이버설치가끝나게된다. 설치가완료 되면, [ 그림 3-15] 와같은완료화면이출력이되는데마침버튼을누르면사라진다. - 16 -
[ 그림 3-15. 드라이버설치완료화면 ] 설치가완료되면, Windows의 regedit.exe 를실행하여등록된상태를확인한다. PC에서 OS (Windows) 에등록된모든내용은레지스트리에저장이되는데, 저장된내용을확인하고수정 / 집할수있는프로그램이레지스트리편집기 (regedit.exe) 이다. PC의디바이스드라이버를작성하다보면수시로이편집기를사용할경우가발생한다. 실행방법은 시작 / 실행 화면에서 regedit를적고확인버튼을누른다. [ 그림 3-16. 레지스트리편집기실행모습 ] - 17 -
[ 그림 3-17. 레지스트리편집기실행화면 ] 레지스트리편집기가가장많이사용되는경우는기존에등록되어있는 Key 값을확인할경우또는지울경우사용이된다. 경우에따라서는키값을지울경우에는, Windows2000의경우 regedt32를실행하여 보안 항목에서사용권한을바꾼후에지울수가있다. 이상으로시험및개발을위한모든설치절차를마치게된다. - 18 -
4. USB-EK01 설명 4.1 USB-EK001 개념 USB-EK001 보드의기본개념은하드웨어엔지니어및소프트웨어엔지니어가다양한시험을손쉽게할수있는데중점을두어개발을하였으며, 다양한계층의엔지니어가활용할수있도록만들었다. 즉, 처음으로임베디드프로그램및하드웨어를접하는사람이나, 다른마이크로컨트롤러에는익숙하나, 가장많이사용되고있는 8051 프로그램을연습해보고싶은사람, 임베디드 USB 보드펌웨어개발, PC용 USB 디바이스드라이버개발, USB 인터페이스를이용하는 PC용어플리케이션프로그램밍, 그리고임베디드펌웨어개발시필요한 Step by Step 디버깅연습에사용될수있도록하였다. 이러한모든기능을보드만으로실험을할수가있으며, 모든개발툴은무상으로제공이되거나평가판형태로사용가능하다. 또한, 별도전원공급장치가필요없으므로사용이간편하다. 아래의보드외형도를이용하여 USB-EK01보드의주요연결및기능을설명하도록하겠다. JP1(Boare Extention) JP2 JP3 USB-EK01 Board SW1 D1 D2 D3 P1 RS232 connection SW2 AN2131 SW3 JP4 JP5 (USB B type Connector) JP7(Boare Extention) D4 JP6 [ 그림 4-1. USB-EK01 외형도 ] [ 표 1. USB-EK01 기능설명 ] 번호 표시번호 기능설명 1 SW1 General Purpose 입력 2 SW2 General Purpose 입력 3 SW3 Reset 4 D1 General Purpose 출력 5 D2 General Purpose 출력 6 D3 프로그램 Break 출력 7 D4 전원램프 - 19 -
USB D+/- Addr, Data, I/O Addr, Data, I/O USB-EK01 Users Manual (Rev 1.0) 8 JP1 어드레스 / 데이터 / I/O 확장커넥터 9 JP2 확장 RS232 인터페이스 (COM2) 10 JP3 확장 I2C 인터페이스 11 JP4 확장전원커넥터. 500mA이상의전원공급이필요할경우외부전원공급기에연결하여사용할수있다. 12 JP5 USB B type 연결커넥터 (Host 연결 ) 13 JP6 전원선택커넥터 ( 전원을 USB 케이블에서공급을받을건지, 외부전원공급기에서받을것인가를선택함. 14 JP7 어드레스 / 데이터 / I/O 확장커넥터 15 P1 RS232C 연결, 최대 115200bps로디버깅및일반통신용으로사용할수있음. 아래의그림은 USB-EK01의기능블록도를보이고있으며, 메인칩인 AN2131QC를중심으로확장성에중점을두어설계가됐다. 모든 Data, Address, I/O는보드확장이가능하도록하였으며, RS232C, USB, I2C 인터페이스를통하여외부기기와연결을할수있도록하였다. 또한, 자체적으로 LED 및 Tact 스위치를두어간단한외부입 / 출력시험을할수있도록하였으며, 기본적으로 USB 케이블을통하여전원을공급받게되어있어별도의외부전원공급장치가필요없도록하였다. Board Expantion USB-EK001 Switchs and LEDs I/O AN2131 T/RxD RS232 COM1 COM1 +3.3V SCL/SDA +5V JP4 +5V P/S +5V USB EEPROM JP3 I2C [ 그림 4-2. USB-EK01 기능블럭도 ] - 20 -
4.2 메모리맵 4.2.1 8051 메모리맵 아래의그림은일반적인 8051 마이크로컨트롤러의메모리구조를나타내고있다. 8051 칩자체로내장하고있는메모리는점선안에표시된영역이며, 외부데이터 / 어드레스버스를사용하여 Access하는메모리영역하고는차이가있다. 0xFFFF XDATA CODE 8051 Internal SFR IDATA 0x0000 DATA BDATA REGs [ 그림 4-3. 8051 메모리맵 ] 먼저, 내부에는직접어드레스방식으로어드레싱가능한영역이 0x00에서 0x7F가있으며, 이중에어드레스 0x00부터 0x1F까지는 CPU에서연산을할때사용할수있는레지스터뱅크 (0에서 3) 로사용된다. BDATA는 0x20부터 0x2F 까지이며, 비트단위로어드레싱이가능하다. 어드레스 0x80부터 0xFF까지는직접어드레스방식으로접근할경우 SFR(Special Function Register) 영역이며, 간접지정방식으로할경우에는일반데이터영역 (IDATA) 이다. SFR영역에는 CPU 연산에사용되는레지스터및주변 I/O 기능을제어하는레지스터들이있다. 8051은외부에데이터메모리영역 (XDATA) 과프로그램메모리영역 (CODE) 이라는별도의공간을마련해놓고있으며, 각영역의 Access는 RD/WR 과 PSEN 신호라인으로구분한다. 프로그램메모리 (CODE) 는칩자체에내장할수있으며, 보통 4K Byte에서최대 64K Byte까지각제조회사별도다양한선택을할수가있다. 현재에는주로 Flash 메모리가사용되며, 사용자가편리하게프로그램을바꿀수있는구조가널리사용된다. 이때, 외부프로그램메모 - 21 -
리를사용할것인지, 내부프로그램메모리를사용할것인가는 EA pin 의입력 상태를보고결정한다. 4.2.2 USB-EK01(AN2131) 메모리맵 Cypress의 AN2131의경우마이크로컨트롤러로 8051 코어를사용하고있으므로내부메모리일반적인 8051 내부메모리구조와동일하다. 하지만, 다른점은칩내부에별도의 RAM(8K Byte) 을마련하여프로그램및데이터메모리로사용할수있게하였다. 또한, 이 RAM을 USB 데이터전송시 EndPoint buffer로사용할수있도록하였다. 따라서, 최초 Power ON reset 시드라이버에서이 RAM영역에프로그램을기록하여원하는프로그램이동작하도록할수있다. USB-EK01 보드의경우별도의외부메모리 (RAM/ROM) 를사용하지않고있으므로 AN2131칩과동일한메모리맵구조이다. 0xFFFF AN2131QC Internal 0x7FFF 0x7B40 0x27FF 0x2000 0x1FFF 0x1B40 0x1B3F REGs/Buffers DATA REGs/Buffers USB control registers 192 Bytes 16x64 Bulk End points (1024 Bytes) SFR IDATA XDATA/ CODE 6,976 Bytes 0x0000 DATA BDATA REGs EA = 0 [ 그림 4-4. USB-EK01(AN2131) 메모리맵 ] 하지만, USB-EK01 보드는외부확장커넥터를이용하여확장보드인 USB-IK01 보드와연결되면, 외부메모리영역을사용할수가있다. - 22 -
4.2.3 USB-IK01( 확장보드 ) 메모리맵 USB-EK01 보드는프로그램사이즈및데이터메모리사이즈가큰어플리케이션에사용할수있도록외부메모리를확장할수있게 RAM 및 ROM을사용하였다. ROM의경우 Flash 메모리를사용하여별도의 ROM Writer가필요없도록하였으며, 주변 I/O 시험을할수있도록 LED 스위치 (DIP/Tact) 를추가하였으며, I2C 인터페이스를통하여 I/O를확장할수있는칩 (PCF8574) 이장착되어있다. 또한, EPLD(XC9536XL) 를장착하여사용자가자유롭게하드웨어프로그램을할수있게하였다 ( 즉, 어드레스영역및 I/O 사용방법을수정할수있다 ). 이러한수정을별도의장치없이 ( 자체적으로 ISP 인터페이스내장 ) 바로 PC의프린터포트에연결하여할수있게하였다. [ 그림 4-5. USB-IK01 외형도 ] [ 그림 4-6. USB-IK01 와 USB-EK01 이결합된모습 ] - 23 -
0xFFFF USB-IK01 Board (Note) Can be programed the location by EPLD programming and DIP sw. 0x7FFF AN2131QC Internal RAM32K CODE or XDATA FLASH 64K CODE 0x2000 0x1B40 0x0000 [ 그림 4-7. USB-IK01 와 USB-EK01 의결합시메모리맵 (EA = 0)] 칩의 EA pin이 Low Level 0 일경우프로그램메모리는 AN2131칩내부의 RAM을이용하지만, EA pin이 High Level 1 일경우외부프로그램메모리영역을이용한다. 즉, 8051 reset시최초시행하는프로그램코드를어디에서불러와실행할것인가를 EA pin 입력상태로결정한다. EA pin이 High Level 1 일경우외부데이터메모리영역은영향을받지않으며, AN2131 칩내부의 RAM은일반데이터메모리로사용할수있다. 0xFFFF USB-IK01 Board (Note) Can be programed the location by EPLD programming and DIP sw. 0x7FFF AN2131QC Internal RAM32K CODE or XDATA FLASH 64K CODE 0x2000 0x0000 [ 그림 4-8. USB-IK01 와 USB-EK01 의결합시메모리맵 (EA = 1)] - 24 -
4.3 부팅옵션 USB-EK01 Users Manual (Rev 1.0) AN2131의경우 3가지리셋모드를가지고있다. (1) Power On Reset : 최초전원이인가되면내부 PLL이안정화될때까지외부 RC 회로에서시상수만큼 EZ-USB core를리셋상태에머물도록한다. 이때, 칩내부의레지스터값들은정해지값으로초기화된다. (2) 8051 Reset : EZ-USB core에서 CPUCS 레지스터의값을바꿈으로써 8051 core의리셋을제어할수있다. Power On Reset 시초기값은리셋상태이다. 이상태를벗어나기위하여는 Host(PC) 에서 USB를통한수정혹은 EEPROM load 시또는, 외부프로그램메모리사용 (EA=1) 시자동으로리셋에서해제된다. (3) USB Bus Reset : Host(PC) 에서 SE0상태 (D+ 와 D-가모두 low) 를 10mSEC 이상유지하게되면, EZ-USB core에서자동으로감지하여, 8051쪽에인터럽트 (INT2) 를발생시켜이를알린다. USB Bus Reset시대부분의레지스터는영향을받지않으며, 주로 USB 데이터전송과관련이있는레지스터들이초기값으로설정된다. EA EEPROM I2C USB Bus Reset USB +3.3V Reset Power ON Reset EZ-USB Core 8051 Reset Reset 8051 Core Address Data 12Mhz XIN/OUT Oscillator PLL /2 CLK24 48Mhz 24Mhz [ 그림 4-9. AN2131 리셋및부팅 ] AN2131 칩이 Power On Reset에서해제될경우, 먼저 I2C Boot Loader 가동작하여외부 I2C버스에 EEPROM이연결되어있는가를확인한다. 여기에서 EEPROM 이있을경우 (Ack 신호받음.) EEPROM의첫번째바이트의데이터에따라서어떻게동작을할것인가를결정한다. 만약, EEPROM이없을경우 EA pin의상태를검사하여 1 일경우에는외부프로그램메모리에서프로그램을가지고올수있도록 8051 을리셋에서해제한다. VID/PID/DID는외부프로그램에서값을얻어 Host(PC) 에등록한다. EEPROM이있고, 첫번째바이트값이 0xB0 혹은 B2가아닐경우, AN2131은 VID는 0x0547, PID는 0x2131로 Host(PC) 에등록하고, 8051 core는리셋상태로 - 25 -
머물게된다. 이러한부팅에관한동작을 Flow Chart 로나타내면다음과같다. Power On Reset Check EEPROM Not Detected Check EA '1' Detected '0' 0xB2 Check Byte at Address 0 Others 0xB0 1 2 3 4 VID = EEPROM 1/2 Bytes PID = EEPROM 3/4 Bytes Program code from EEPROM Release 8051 from Reset VID = EEPROM 1/2 Bytes PID = EEPROM 3/4 Bytes 8051 remains in Reset Program code may be loaded from host VID = 0x0547 (Cypress) PID = 0x2131(EZ-USB chip) 8051 remains in Reset Program code may be loaded from host VID = from Program code PID = from Program code Program code from external CODE memory area Release 8051 from Reset [ 그림 4-10. AN2131 부팅순서 ] 밑의내용은 EEPROM의내용에대한예를보여주고있으며, 자세한내용은 5.4 EEPROM Image 만들기 부분을참조해주기바란다. 0xB0의경우 ( 예 1) 0000h: B0 47 05 80 00 00 00 ( 사이프레스의 2100.iic참조 ) ezmon.sys 드라이버가사용된다. VID 0547 PID 0080 ( 예 2) 0000h: B0 FF FF 01 00 00 00 (sample.eep참조) daqusb.sys 드라이버가사용된다. VID FFFF PID 0001 0xB2의경우 (fw_out.eep참조) 0000h: B2 FF FF 01 00 00 00-26 -
위의경우 (0xB0 혹은 B2) 가아닌경우 ezusb.sys 드라이버가사용된다. VID 0547 PID 2131 4.4 CDROM 폴더설명 USB-EK01 과함께제공되는 CDROM 의내용은아래의그림과같으며, 간략한 내용설명은표로써나타낸다. [ 그림 4-11. 제공 CDROM 폴더구조 ] [ 표 2. CDROM 폴더설명 ] 폴더이름 Document Hardware Software Utility 내용설명매뉴얼회로도및부품리스트각종소스코드 (Application/Driver/Sample/EEPROM image) 등시험에필요한 PC용 RS232C 통신프로그램 (comm.exe) - 27 -
5. 시험 5.1 Example 시험 시험에필요한 Windows2000이나 XP Operating system이설치되어있는 Host(PC) 를준비한다. PC의뒷면을보면 RS232/PRINTER/USB 포트를확인할수있다. PRINTER Port의경우 USB-IK01의 EPLD를프로그램할경우사용된다. 최근에는 USB포트가전면에나오는 PC가많이판매되고있다. [ 그림 5-1. Host(PC) 포트 ] 먼저, 보드 (USB-EK01) 와 PC를 [ 그림 5-1] 과같이함께제공되는 USB 케이블로연결한다. 연결을하게되면, 그림의적색원안에있는 LED가전원공급이정상적으로이루어지는가를나타내기위하여점등한다. RS232C 케이블의경우디버깅을하거나, 시리얼통신시험을할경우에사용된다. 시험에사용하지않을경우연결하지않아도된다. [ 그림 5-2. USB-EK01 과 PC 를케이블로연결한상태 ] - 28 -
시험방법은 CDROM의 Software\Example\USB-EK01\ 폴더에각시험별로폴더가마련되어있다. 소스코드의수정은 Keil 컴파일러를이용한다. 각폴더마다 Keil 프로젝트파일 ( 확장자.Uv2) 를더블클릭하게되면, 프로젝트가열리며, 또한각폴더마다이미완성된 Intel hex format( 확장자.hex) 의실행바이너리파일이있다. EZ-USB Control Panel 에서 DownLoad 버튼을누르면, 아래의그림과같이파일다이얼로그박스가나타나게되고여기에서보드에서실행할바이너리파일을지정한다. 그림에서는 Led.hex 를지정하고있다. 보드로파일전송이끝나게되면, EZ-USB Control Panel 프로그램에서자동으로 8051 코어의리셋을하여로드된프로그램이마이크로컨트롤러에서새로실행된다. 한번파일을로드하게되면, 로드된파일의정보를기억하고있으므로추후에는 ReLoad 버튼을눌러사용한다. 이때에는파일다이얼로그박스가나타나지않는다. [ 그림 5-3. 실행바이너리 (*.hex) 를 USB-EK01 에내려받는방법 ] - 29 -
< LED 점등시험 > USB-EK01 Users Manual (Rev 1.0) 시험에사용되는파일은 CDROM의 Software\Example\USB-EK01\Led 폴더에서찾을수있으며, led.hex 를내려받아시험한다. 실행을하게되면, 아래그림의적색원안에있는 LED (D1과 D2) 가점등과소등을번갈아반복한다. [ 그림 5-4. LED 점등시험모습 ] - 30 -
< Serial 통신시험 > USB-EK01 Users Manual (Rev 1.0) 시험에사용되는파일은 CDROM의 Software\Example\USB-EK01\Serial 폴더에서찾을수있으며, Serial.hex 를내려받아시험한다. 시험에는 RS232통신프로그램이사용되는데, 가장많이사용되는프로그램은 Windows 하이퍼터미널이나, 여기서는 DAQ system에서제작한통신프로그램인 comm1 을이용하였다. USB-EK01과 PC를 RS232케이블로연결한후프로그램 (comm.exe) 를실행한다. 이프로그램은 CDROM의 Utility 폴더에서찾을수있다. 먼저, 프로그램에서통신설정을맞춘다. Baudrate, Stop bits, Data bits, Parity 등등그림에서는 COM1을사용하며, 38400bps, 8 데이터비트, 1 Stop 비트, Parity None을설정하여사용하고있다. 프로그램을보드에내려받아실행을하면, 아래그림과같이아스키문자를반복하여보내고이를 PC 프로그램에서표시한다. [ 그림 5-5. Serial 통신시험에서전송되는내용출력 ] - 31 -
< Switch ON/OFF 시험 > USB-EK01 Users Manual (Rev 1.0) 시험에사용되는파일은 CDROM의 Software\Example\USB-EK01\Switch 폴더에서찾을수있으며, Switch.hex 를내려받아시험한다. 시험에는 RS232통신프로그램이사용되며, 스위치 1을눌릴경우 LED(D1) 이점등되고시리얼로내용을전송한다. 스위치 2가눌릴경우 LED(D2) 가점등되고시리얼로내용을전송한다. [ 그림 5-6. 스위치 ON/OFF 시험모습 ] - 32 -
< EEPROM 읽기 / 쓰기시험 > USB-EK01 Users Manual (Rev 1.0) 시험에사용되는파일은 CDROM의 Software\Example\USB-EK01\EEPROM 폴더에서찾을수있으며, eeprom.hex 를내려받아시험한다. 시험에는 RS232통신프로그램이사용되며, 스위치 1을눌릴경우 EEPROM의내용을읽어서통신을통하여전송한다. 스위치 2가눌릴경우 EEPROM의어드레스 0번지에서 10번지까지 0x11을기록한다. 따라서, 먼저스위치 1을눌러 EEPROM의내용을확인하고, 스위치 2를눌러새로운내용을기록하고, 다시스위치 1을눌러기록된내용을확인한다. [ 그림 5-7. EEPROM 읽기 / 쓰기시험모습 ] 시험이끝나게되면, EEPROM 의내용을 EzMr 프로그램을이용하여 sample.eep 값으 로바꾸어계속하여시험을진행한다. - 33 -
< USB Disconnection 시험 > USB-EK01 Users Manual (Rev 1.0) 시험에사용되는파일은 CDROM의 Software\Example\USB-EK01\Discon 폴더에서찾을수있으며, discon.hex 를내려받아시험한다. 스위치 1을누를경우장치를 PC에서분리한다. 장치관리자의 범용직렬버스컨트롤러 를확인해보면드라이버가사라진것을확인할수있다. 스위치 2를누를경우장치를 PC에재연결을시도한다. 샘플프로그램에서는재연결시필요한코드를프로그램하지않았기때문에적절한드라이버가설치가되지않는다. 코드를추가하고싶으면, EZUSB firmware code를참조바람. [ 그림 5-8. USB Disconnection 시험 ] - 34 -
5.2 Keil uvision 을이용한프로그램및디버깅 USB-EK01 Users Manual (Rev 1.0) 사용한프로그램은간략한설명을위하여 LED 점등샘플프로그램을이용하였다. 평가판 Keil 프로그램은사이프레스에서제공하는 Development Kit에함께있으며, 설치시별도의옵션을선택하여야한다. 시험에필요한 Keil 프로그램의사용법은 Keil C51 매뉴얼을참조하기바라며, 자세한내용은 Keil 웹사이트에서얻을수있다. 평가판은또한 Keil 웹사이트에서도다운받아사용할수가있다. 먼저, Software\Example\USB-EK01\Led.Uv2를더블클릭한다. (Keil 소프트웨어가정상적으로설치가되었다면프로젝트가밑의그림과같이열린다.) 프로젝트파일의확장자는.Uv2 이다. [ 그림 5-9. Keil 프로그램실행화면 ] 간략하게 ON/OFF 시간을조정하여컴파일을한다. (uvision 의자세한사용법은 Keil 매뉴얼을참조하기바란다.) 컴파일을하게되면, led.hex 파일이생성이되 는데이를 EzMr.exe 를이용하여보드에내려받아실행하여본다. - 35 -
[ 그림 5-10. 실행바이너리 (*.hex) 를 USB-EK01 에내려받는방법 ] 위의방법은직접실행코드를 USB 연결을통하여다운로드시킨후시험하는방 법이며, 시리얼통신을이용한디버깅방법은다음과같다. 디버깅은시리얼통신 ( 보드의 COM1) 을이용하므로 comm.exe 프로그램과함께동시에사용할수없다. 만약, 보드의 com2를이용할경우 mon-int-sio1.hex 모니터프로그램을보드에로딩한후보드의 JP2와연결할수있는별도의케이블을만들어서사용하여야한다. 케이블연결방법은다음과같다. 5264-03 DSUB 9pin 1 2 3 3 2 5 1 4 6 7 8 9 [ 그림 5-11. COM2 케이블연결도 ] - 36 -
그리고, 주의할점은디버깅에서는통신속도를 19200bps를이용한다. 설정방법은 Project/Option for Target Target1 메뉴를실행하면다음과같은다이얼로그박스가나타나는데, 여기에서디버그탭을선택하여 setting 버튼을눌러설정한다. [ 그림 5-12. Keil 디버깅설정화면 ] 그리고디버깅시에는 DAQ 의디폴트드라이버가아닌모니터드라이버를이용하 여야하는데, 이때에는 Driver 폴더의 cpdaqmon.bat 파일의내용을확인한후실행 하여시험한다. 배치명령을사용할때에는보드를 PC 와분리한후실행한다. 프로젝트가로딩이된상태에서화면에서버튼을누르게되면, 디버거가기동이되면서화면이 [ 그림 5-13] 과같이변하게된다. 여기에서부터 step by step 디버깅시험을할수있다. 디버깅시에는 CPU 레지스터, 메모리데이터어셈블리니모닉등을확인할수있으며, 수정이가능하다. 자세한프로그램사용법은 Keil 매뉴얼을참조하기바란다. - 37 -
[ 그림 5-13. Keil 디버깅설정화면 ] - 38 -
5.3 Firmware(Ezusbfw) 설명 USB-EK01 Users Manual (Rev 1.0) Cypress에서는기본적인 USB 프로토콜을 8051 코어에서구현한 Firmware 소스코드를개발자들에게제공하고있다. 소스코드는아래그림과같은폴더에서찾을수있다. [ 그림 5-14. Firmware 소스폴더 ] 위의화면에서 fw.uv2 를더블클릭하면, 아래와같은프로젝트가 Keil 프로그램에서열리게된다. 화면을보게되면, 사용되는파일은다섯가지 (fw.c, periph.c, dscr.a51, ezusb.lib, usbjmptb.obj) 이며, USB 디비이스등록에사용되는 VID/PID 그리고스트링테이블은 DSCR.A51( 어셈블리소스코드 ) 에서찾아서수정할수있으며, 대부분의응용코드는 Periph.c에서수정하여사용할수있다. USBJmpTb.OBJ는오브젝트코드이나, 소스형태로 Target\lib 폴더에서찾아사용할수있으며, Ezusb.lib도개발자에맞게수정하여사용할수있다. - 39 -
[ 그림 5-15. VID/PIC 수정하는모습 ] 보다자세한사용법및내용은 Anchor Firmware FW.pdf 파일을참조하기바란다. - 40 -
5.4 USB PC 드라이버만들기 USB-EK01 Users Manual (Rev 1.0) Win32용 USB PC 드라이버를만들기위하여는 DDK(Driver Development Kit) 가 PC에설치되어있어야한다. 사용할수있는 DDK는 Windows 98/2000/me 이고, DDK 설치에앞서 Visual C++ version 5.0 이상이설치되어있어야한다. 요즈음에는간편하게 Device 드라이버를간단하게작성할수있는편리한툴들이많이판매되고있지만대부분이고가의프로그램이다. 여기서는 DDK만설치하여사용할수가있다. 드라이버를만들수있는환경설정순서는다음과같다. (1) Visual C 설치 (2) DDK 설치설치가완료되면밑의그림과같은실행시킬수있다. Checked build 환경은디버깅정보가들어있는컴파일환경이며주로개발시에사용되며, Free build 의경우배포용드라이버를만들때사용한다. [ 그림 5-16. 설치된 DDK 확인모습 ] 최초설치후에는전체적으로 compile 을해주어야한다. 즉, 각각의환경을 실행하면 DDK 가설치된폴더로이동할것이다. 여기에서 build -cz 를실행하여전체소스를컴파일한다. 예상소요시간은 약 30 분정도이다. 만약컴파일이정상적으로이루어지지않는다면설치에문제 가있는것이다. USB에서사용하는 DDK 소스위치는다음과같다. NTDDK src wdm usb bulkusb NTDDK src wdm usb isousb NTDDK src wdm hid - 41 -
(3) Driver 컴파일 Cypress에서샘플로제공하는 Driver 소스는다음과같다. 이는 Drivers 폴더에서찾을수있는데, ezloader, ezmon, ezusbdrv 이상세가지이다. 이드라이버들은전체적인소스는동일하나, 약간의차이점이있다. Ezmon과 ezusbdrv는다운로드실행파일을갖고있는지없는지의차이이다. Ezmon의경우 keil 디버거바이너리이미지를갖고있어등록시자동으로다운로드하여디버깅에사용할수있다. Ezusbdrv는다운로드바이너리이미지를갖고있지않고디폴드 USB 등록만하고, 8051를 Reset 상태로유지한다. Ezloader는 USB 관련된대부분의 I/O control 루틴이제거되고, 부팅시다운로드할수있는코드가적용되어있다. 주로 ezmon의소스를이용하는것이유용할것이라판단된다. 이때, 최초부팅시사용될바이너리이미지를만들어서컴파일을하여야하는데만드는방법은다음과같다. 먼저, 실행될프로그램을 Keil 컴파일러를이용하여만든다. 결과파일은 xxx.hex 이다. daqmon.sys 드라이버를만들때사용된바이너리이미지는 Keil 디버거모니터 mon-int-sio0.hex 를이용하였다. 사용한이유는내부메모리와 COM1을디버깅포트로사용하는이미지를이용하기위함이다. 그리고, hex2c 유틸리티를이용하여 hex 출력을 c 소스코드로변환시킨다. hex2c.exe mon-int-sio0.hex mon-int-sio0.c 변환시킨소스를 mon51hi.c 에복사하여컴파일한다. 컴파일하는화면은아래그림과같다. [ 그림 5-17. 디바이스드라이버컴파일모습 ] - 42 -
모든 WDM 드라이버의기본적인소스구조는다음과같다. DriverEntry() : CallBack 루틴등록 AddDevice() : DriverObject 생성, Symbolic linkname 등록, TopOfStackObject 얻기 PnP 처리 : Power/Pnp 관련사항처리, USB Descriptor 얻기, Pipe 정보얻기, Device 제거루틴 사용자 I/O 요청처리 : CreateFile(), CloseHandle(), ReadFile(), WriteFile(), DeviceIoControl() 등의 Wind32함수호출에대한처리 5.5 EEPROM Image 만들기 4.3 부팅옵션 에서설명하였듯이 AN2131 칩이 Power On Reset에서해제될경우먼저, I2C Boot Loader 가동작하여외부 I2C버스에 EEPROM이연결되어있는가를확인한다. 여기에서 EEPROM이있을경우 (Ack 신호받음.) EEPROM의첫번째바이트의데이터에따라서어떻게동작할것인가를결정한다. 5.5.1 No Serial EEPROM EEPROM이있고, 첫번째바이트값이 0xB0 혹은 B2가아닐경우 AN2131은 VID는 0x0547, PID는 0x2131로 Host(PC) 에등록하고, 8051 core는리셋상태로머물게된다. 따라서디바이스드라이버나, 응용프로그램에서 8051을리셋에서해제하여야한다. VID PID DID 0x0547 (Cypress semiconductor) 0x2131 (EZ-USB chip) 0xXXYY (depends on revision) 5.5.2 Serial EEPROM with First Byte 0xB0 하지만, 첫번째바이트가 0xB0일경우다음과같은 ID로 Host에등록하고, 8051 core는리셋상태로머물게된다. 따라서디바이스드라이버나, 응용프로그램에서 8051을리셋에서해제하여야한다. 보통 EEPROM의용량이작을경우 EEPROM에 ID만저장하고드라이버에서실행바이너리이미지를다운로드하여동작하도록할경우주로사용한다. EEPROM ADDR 0 0xB0 1 VID Low 2 VID High 내용 - 43 -
3 PID Low 4 PID High 5 DID Low 6 DID High 7 Not Used 5.5.3 Serial EEPROM with First Byte 0xB2(fw_out.eep참조 ) 첫번째바이트가 0xB2일경우다음과같은 ID로 Host에등록하고, EEPROM 에서실행바이너리이미지를메모리에로드한후 8051 core는리셋상태상태에서자동으로해제하여동작하도록한다. 보통프로그램의용량이크지않고, EEPROM의용량이충분할경우사용하며, PC에직접연결하지않고사용할필요가있을때주로사용한다. EEPROM ADDR 0 0xB2 1 VID Low 2 VID High 3 PID Low 4 PID High 5 DID Low 6 DID High 내용 7 Length High 8 Length Low 9 Start Address High 10 Start Address Low -- Data Block -- -- Length High -- Length Low -- Start Address High -- Start Address Low -- Data Block -- -- 0x80 -- 0x01-44 -
-- 0x7F -- 0x92 -- -- 00000000 Length High의최대값은 0x3이며, 따라서레코드의최대크기는 1024 바이트이다. 마지막레코드에는처음바이트는마지막을알리는 0x80이며, 두번째는 1 바이트전송그리고, CPUCS(0x7F92) 에 00 값을직접내려받아 8051 core를리셋에서해제되도록한다. EEPROM의데이터는 AN2131의내부 RAM으로만전송이될수있다. 외부메모리에는전송이되지않는다. 이러한 EEPROM 이미지를만들기위하여는 hex2bix 유틸리티를사용하여, 배치파일로만들어서사용하면편리하다. 아래의예는 firmware(fw.hex) 를 EEPROM 이미지로만드는것을보이고있으며, CDROM의 EEPROM_IM 폴더에서 eprom.bat 파일로찾을수있다. hex2bix -IR -M 0x8000 -V 0x6712 -P 0x0001 -F 0xB2 -O fw_out.eep fw.hex 만들어진 EEPROM 이미지는그림4.27과같이 EZ-USB Control Panel 을이용하여 USB-EK01의 EEPROM에내려받아사용할수있다. [ 그림 5-18. EEPROM 다운로드모습 ] - 45 -
5.6 PC 용어플리케이션프로그램 USB-EK01 Users Manual (Rev 1.0) PC용어플리케이션을제작하는방법은다양한툴및방법이있겠지만, 본매뉴얼에서는 Microsoft사의 Visual C++ 를이용하여작성하는방법을이용하였다. 프로그램작성시가장좋은방법은엔지니어개개인이편하고익숙하게사용하는툴을이용하는것이가장좋은방법이라생각된다. 장치드라이버의소스를보게되면, EZ-USB 디비이스는 "ezusb-i 라는심볼릭이름으로 Host(PC) 에등록이된다. 여기에서 i는등록된디바이스순서에따라달리생성이된다. [ 그림 5-19] 는 Visual C를이용하여프로그램을하는것을보여주고있으며, 사용된소스는 CDROM의 Software/Application 폴더에서찾을수있다. [ 그림 5-19. Visual C++ 를이용한프로그램작성모습 ] 본어플리케이션은 32bit Windows 오퍼레이팅시스템에서동작하는것을목적으로하기때문에 Win32 API 함수를사용하는것은필수라고하겠다. Win32 API중에서중요한두가지함수는다음과같다. (1) CreateFile() (2) DeviceIoControl(). 아래의소스는위의두가지 API 를프로그램에서어떻게사용하는가를보여주고 있다. - 46 -
보다자세한내용은 EZ-USB General Purpose Driver Spec.pdf 를참조하기바 란다. 아래의그림은최종완성된어플리케이션의실행화면이다. 먼저프로그램이실행 되면, 장치가 PC 에연결이되어있는가를검사한후찾지못할경우자동으로종료 하고, 찾았을경우에는프로그램이실행된다. - 47 -
[ 그림 5-20. 완성된어플리케이션프로그램실행화면 ] 프로그램의동작은화면의 ON/OFF 버튼을누를경우, 보드의 LED(D1/D2) 가버튼누른것에맞추어서 ON/OFF를반복한다. 또한, [ 그림 5-21] 과같이 USB-EK01의파란색원안에이는스위치를누를경우에도 LED(D1/D2) 가 ON/OFF를반복하는데이내용을자동으로전송하여어플리케이션의 LED 출력에나타나게된다. [ 그림 5-21 어플리케이션연동실험화면 ] - 48 -
부록 (Appendix) A. 드라이버설치및제거 < 드라이버설치 > Plug and Play를지원하는장치 (PCI, USB 등 ) 가시스템 (PC) 에연결이될경우 OS에서는디바이스 ID(VID) 와제품 ID(PID) 등을이용하여 Enumeration을하는데이때, 장치 ( 디바이스 ) 에맞는드라이버를레지스트리에서찾게되면해당드라이버를로딩하고, 그렇지않을경우 ( 예를들면, 최초장치를설치시 ) 에는하드웨어설치마법사가실행이되며 ( 3.3 보드드라이버설치 참조 ) 디바이스를 PC에등록시킨다. < 드라이버제거 > 개발시드라이버를수정하고, 디바이스의 ID를바꾸고하는일이빈번하게발생하는데이때, 기존에등록된장치의드라이버를제거하여야하는일이자주발생한다. 이때에는 Windows 레지스트리를수정하여야하는데레지스트리는 Windows의모든정보를담고있기에잘못수정을할경우복구할수없는치명적인오류를유발할수있으므로사용하는데주의가필요하다. 레지스트리제거시참조사항 Windows98 과2000 XP는모두다른레지스트리키를사용한다. Windows2000에서키값을삭제하기위해서는삭제권한을가져야한다. (Administrator도마음대로삭제할수없다.) Windows2000은두개의레지스트리편집기가있다. Regedit.exe와 regedt32.exe이다. 삭제권한을얻기위하여는 regedt32.exe를실행창에서실행을하면아래의그림과같은화면을볼수가있고, 여기에서키값을선택한후 보안 메뉴에서 사용권한 을선택하여모든권한을체크한후키값을지워야한다. - 49 -
Windows XP 는위두개의실행파일이통합이되어있으며, 역시 편집 메뉴에서 사 용권한 을선택한후모든권한을체크한후지울수있다. 지워야할레지스트리키및파일은다음과같다. 1. HKLM\SYSTEM\CurrentControlSet\Enum\USB\ 에서 Vender ID와 Product ID로만들어진키 Vid_xxxx&Pid_xxxx. 여기에서현재사용되는 control set은 CurrentControlSet 키에저장되어있지만, Windows에서는레지스트리에이전 control set을 ControlSet001 과 ControlSet002 로저장을하여오류발생시복구할수있도록하고있는데, 경우에따라서는 ControlSet001 과 ControlSet002 에있는값도지워야한다. 2. HKLM\SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF -8056-444553540000} 에서 Class에등록되어있는값을지운다. 아래그림을보면클리스 ID {36FC9E60-C465-11CF -8056-444553540000} 범용직렬버스컨트롤러의고유값이다. - 50 -
아래그림을보게되면 Class ID 밑에등록된순서에의한키가있으며우측창을 보면등록된내용을알수있다여기에서 0018 이라는키값을제거한다. 위의그림에서우리는제거하여야할 inf 파일을알수가있다. 위에서는 oem6.inf 이며이파일은 Windows 설치폴더의 inf 폴더에서찾을수있다. 예를들 면 C:\WINNT\Inf 폴더이다. - 51 -
3. HKLM\SYSTEM\CurrentControlSet\Services\ 서비스이름 ( 보통회사이름이 많이사용된다 ). B. 커넥터 (JP1 and JP7) PIN Map <JP1> PIN 번호 명칭 설명 1 NC No Connection 2 NC No Connection 3 GND Signal Ground 4 GND Signal Ground 5 SM0 Serial ROM select 0 6 SM1 Serial ROM select 1 (short to ground for 24LC64) 7 PA7 8051 General Purpose PortA 7 8 PA6 8051 General Purpose PortA 6 9 PA5 8051 General Purpose PortA 5 10 PA4 8051 General Purpose PortA 4 11 PA3 8051 General Purpose PortA 3 12 PA2 8051 General Purpose PortA 2 13 PA1 8051 General Purpose PortA 1-52 -
14 PA0 8051 General Purpose PortA 0 15 GND Signal Ground 16 WAKEUP# Wakeup input from CPU suspend 17 SCL I2C signal clock 18 SDA I2C signal data 19 BKPT Break Point 출력 20 3.3V 3.3V 전원공급 21 D6 Data bus 6 22 D7 Data bus 7 23 D4 Data bus 4 24 D5 Data bus 5 25 PB6 8051 General Purpose PortB 6 26 PB7 8051 General Purpose PortB 7 27 PB4 8051 General Purpose PortB 4 28 PB5 8051 General Purpose PortB 5 29 D2 Data bus 2 30 D3 Data bus 3 31 D0 Data bus 0 32 D1 Data bus 1 33 GND Signal Ground 34 GND Signal Ground 35 PB2 8051 General Purpose PortB 2 36 PB3 8051 General Purpose PortB 3 37 PB0 8051 General Purpose PortB 0 38 PB1 8051 General Purpose PortB 1 39 3.3V 3.3V 전원공급 40 3.3V 3.3V 전원공급 - 53 -
<JP7> PIN 번호 명칭 설명 1 USB_N USB D- 2 RST_IN External Reset 입력 3 USB_P USB D+ 4 RESET# Reset 출력 (Low Active) 5 DISCON# USB Disconnection 출력 (Low Active) 6 PSEN# Program strobe Enable 7 3.3V 3.3V 전원공급 8 GND Signal Ground 9 3.3V 3.3V 전원공급 10 CLK24 CPU clock 24Mhz 11 A0 Address Bus 0 12 GND Signal Ground 13 A2 Address Bus 2 14 A1 Address Bus 1 15 A4 Address Bus 4 16 A3 Address Bus 3 17 A6 Address Bus 6 18 A5 Address Bus 5 19 EA External Access 입력 20 A7 Address Bus 7 21 A8 Address Bus 8 22 RESET Reset 출력 (High Active) 23 A10 Address Bus 10 24 A9 Address Bus 9 25 GND Signal Ground 26 A11 Address Bus 11 27 PC0 8051 General Purpose PortC 0 28 GND Signal Ground 29 PC2 8051 General Purpose PortC 2 30 PC1 8051 General Purpose PortC 1 31 A12 Address Bus 12 32 PC3 8051 General Purpose PortC 3 33 A14 Address Bus 14 34 A13 Address Bus 13-54 -
35 PC4 8051 General Purpose PortC 4 36 A15 Address Bus 15 37 PC6 8051 General Purpose PortC 6 38 PC5 8051 General Purpose PortC 5 39 5V 5V 전원공급 40 PC7 8051 General Purpose PortC 7 C. 참조사항 ( 주 1) 보드에서사용하는 USB VID(0xFFFF) 는 USB sig(www.usg.org) 에등록되어있지 않는가상의 ID 이므로시험이아닌정식상품에는사용할수없다. ( 주 2) 본매뉴얼의많은부분이사이프레스의개발 Kit 를참조하고있으며, 또한 Keil uvision 등본매뉴얼에언급된개별회사의지적재산에대한내용을무단으로사용할 수없다. - 55 -
D. 참조자료 1. EZ-USB Manual Technical Reference Manual V1.10 -- Cypress Semiconductor Corporation 2. EZ-USB General Purpose Driver Specification -- Cypress Semiconductor Corporation 3. USB 2.0 System Architecture -- Don Anderson, USB SIG (www.usb.org) 4. Universal Serial Bus Specification -- Compaq/Intel/Microsoft/NEC, MindShare Inc. (Addison Wesley) 5. EZ USB Design by Example (A Practical Guide to Building I/O devices) -- John Hyde, Intel University Press (WILEY) - 56 -
- 57 -