V-USB
V-USB is a software-only implementation of a low-speed USB device for Atmel’s AVR® microcontrollers, making it possible to build USB hardware with almost any AVR® microcontroller, not requiring any additional chip.
위 설명처럼USB하드웨어가 없는 AVR에서 USB를 소프트웨어로 구현하는 코드. V는 Virtual 인듯
https://cortexprog.com/ 이런 프로젝트도 있다.
Mass Storage bootloader
USB device를 가진 MCU를 PC에 연결시 Mass Storage Device로 동작시키고, Hex파일을 copy하면 MCU의 application code가 업데이트 되는 형태.
lsusb 명령어를 Mac OS에서 사용하기
리눅스에 있는 lsusb를 사용할 수 있는 프로그램: https://github.com/jlhonora/lsusb
다음과 같이 brew로 인스톨한다.
brew update && brew tap jlhonora/lsusb && brew install lsusb
다음과 같은 옵션으로 사용 가능.
List USB devices
-v Increase verbosity (show output of "system_profiler SPUSBDataType")
-s [[bus]:][devnum]
Show only devices with specified device and/or
bus numbers (in decimal)
-d [vendor]:[product]
Show only devices with the specified vendor and
product ID numbers (in hexadecimal)
-p Display manufacturer names in parentheses
-t Dump the physical USB device hierarchy as a tree
-V Show version of program
-h Show usage and help
USB 하드웨어 디자인 가이드
USB 하드웨어 디자인 가이드
- GND, 샤시에 FB
- 15 Ohm Termination resistor
- ESD 인증에 문제가 있을 경우 protection device – NXP IP4220CE6
- Common mode choke – Murata plw3216s900sq2t1
- 2개의 USB 신호쌍은 parallel 하게하며, 간극은 최대 150 mil을 넘지 않도록
- 신호선의 최대 길이는 18인치를 넘지 않도록
참고자료
USB 컨넥터와 핀맵
USB 1.0 ~ 3.0
- USB 1 released in 1996 with speeds of 1.5 Mbps for Low-Bandwidth and 12 Mbps for High-Bandwidth;
- USB 2.0 release in 2000 is the most used usb port at the moment at supports a maximum speed of 480 Mbps;
- USB 3.0 released in 2008 in the latest standard who can support speed up to 5Gbps.
컨넥터의 종류는 7가지나 된다. 아래 그림을 통해 USB 컨넥터와 핀맵을 확인
USB 디바이스의 VID, PID
USB 디바이스 제품을 개발하려면 필요한 것이 USB 디바이스의 VID(Vendor ID), PID(Product ID)이다. 여기서 VID는 제조사의 ID이고, PID 제조사의 제품의 ID로 이해할 수 있는데 각각 2바이트로 VID-PID의 쌍으로 수많은 USB 디바이스와 구별이 가능하게 된다. VID, PID는 USB Implementers Forum, Inc.(http://www.usb.org)에서 발급을 하는데 문제는 발급하는 데 드는 비용이 $5,000이다.
발급 신청서 링크 – http://www.usb.org/developers/vendor/VID_Only_Form_withCCAuth_010113.pdf
이 발급 신청서에 보면 다음과 같이 발급된 VID는 다른 사람에게 판매할 수 없다고 되어 있다. 예외 조항은 “special circumstances, and then only upon prior written approval by USB-IF”
The company set forth above hereby applies for a USB Vendor ID Number and agrees to the following: The USB Implementers Forum is the authority which assigns and maintains all USB Vendor ID Numbers. Each Vendor ID Number is assigned to one company for its sole and exclusive use, along with associated Product ID Numbers. They may not be sold, transferred, or used by others, directly or indirectly, except in special circumstances, and then only upon prior written approval by USB-IF. Unauthorized use of assigned or unassigned USB Vendor ID Numbers and associated Product ID Numbers are strictly prohibited.
하지만 MCS에서는 PID를 9.95유로에 판매(링크)를 한다. 그리고 openmoko의 경우 오픈소스하드웨어에 한하여 PID를 사용할 수 있게 하고 있다. http://wiki.openmoko.org/wiki/USB_Product_IDs 이 리스트를 보니, Marlin, Pinoccio, SparkCore, Tessel등이 openmoko로 부터 PID를 받은 것을 알 수 있다.
각 업체들이 받은 VID, PID는 http://www.linux-usb.org/usb.ids 링크를 참고. 그리고 PC에 연결된 디바이스의 VID, PID를 확인하려면 windows의 경우 장치관리자에서 확인이 가능하다.
Mac OS에서는 “이 Mac에 관하여 > 개요> 시스템 리포트의 USB” 항목에서 확인이 가능하다.
USB 기반의 Microcontroller
USB 기반의 Microcontroller 링크
AT89C5130A, AT89C5131, AT89C5131A, AT89C5132, AT89C51SND1, AT89C51SND2, AT8xC5122
AT91RM3400, AT91RM9200, AT91SAM7A3, AT91SAM7S128, AT91SAM7S256, AT91SAM7S64, AT91SAM7SE256,AT91SAM7SE32, AT91SAM7SE512, AT91SAM7X128, AT91SAM7X256, AT91SAM7X512, AT91SAM7XC128, AT91SAM7XC256,AT91SAM7XC512, AT91SAM9260, AT91SAM9261, AT91SAM9261S, AT91SAM9263, AT91SAM9G10, AT91SAM9G20,AT91SAM9G45
EZ-USB (AN21XX), EZ-USB FX (CY7C646XX), EZ-USB FX1 (CY7C647XX), EZ-USB FX2 (CY7C68XXX), EZ-USB FX2LP (CY7C68XXX-X)
IPL0202
C540U-E, C541U-2E
C161U, C165 UTAH
W90N740, W90N745, W90P710
LPC2141, LPC2142, LPC2144, LPC2146, LPC2148, LPC3180
ML696201, ML69Q6203
C8051F320, C8051F321, C8051F326, C8051F327, C8051F340, C8051F341, C8051F342, C8051F343, C8051F344,C8051F345, C8051F346, C8051F347
USB97C201, USB97C202, USB97C210, USB97C242, USB97CFDC, USB97CFDC2
uPSD3212A, uPSD3234A, uPSD3254A, uPSD3422E, uPSD3422EV, uPSD3433E, uPSD3433EV, uPSD3434E, uPSD3434EV,uPSD3454E, uPSD3454EV
STR710FZ1, STR710FZ2, STR711FR0, STR711FR1, STR711FR2, STR750FL2, STR750FV0, STR750FV1, STR750FV2,STR751FR0, STR751FR1, STR751FR2, STR911FAM42, STR911FAM44, STR911FAM46, STR911FAM47, STR911FAW42,STR911FAW44, STR911FAW46, STR911FAW47, STR911FM42, STR911FM44, STR912FAW42, STR912FAW44, STR912FAW46,STR912FAW47, STR912FAZ42, STR912FAZ44, STR912FAZ46, STR912FAZ47, STR912FW42, STR912FW44
73S11xx, 73S1215F
TAS1020, TUSB2136, TUSB3200, TUSB3210, TUSB3410, TUSB5052, TUSB6250