1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6 <title>USB Compliance Tests</title>
7 <title>CMSIS-Driver Validation: USB Compliance Tests</title>
8 <link href="tabs.css" rel="stylesheet" type="text/css"/>
9 <link href="drv.css" rel="stylesheet" type="text/css" />
10 <script type="text/javascript" src="jquery.js"></script>
11 <script type="text/javascript" src="dynsections.js"></script>
12 <script type="text/javascript" src="printComponentTabs.js"></script>
13 <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtree.js"></script>
16 <script type="text/javascript">
17 $(document).ready(initResizable);
18 $(window).load(resizeHeight);
20 <link href="search/search.css" rel="stylesheet" type="text/css"/>
21 <script type="text/javascript" src="search/search.js"></script>
22 <script type="text/javascript">
23 $(document).ready(function() { searchBox.OnSelectItem(0); });
25 <link href="stylsheetf" rel="stylesheet" type="text/css" />
28 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
30 <table cellspacing="0" cellpadding="0">
32 <tr style="height: 46px;">
33 <td id="projectlogo"><img alt="Logo" src="keilarm.png"/></td>
34 <td style="padding-left: 0.5em;">
35 <div id="projectname">CMSIS-Driver Validation
36  <span id="projectnumber">Version 1.2.0</span>
38 <div id="projectbrief">Driver Validation</div>
44 <!-- end header part -->
45 <div id="DRVnav" class="tabs1">
47 <script type="text/javascript">
49 writeComponentTabs.call(this);
54 <!-- Generated by Doxygen 1.8.6 -->
55 <script type="text/javascript">
56 var searchBox = new SearchBox("searchBox", "search",false,'Search');
58 <div id="navrow1" class="tabs">
60 <li><a href="index.html"><span>Main Page</span></a></li>
61 <li><a href="pages.html"><span>Usage and Description</span></a></li>
62 <li><a href="modules.html"><span>Reference</span></a></li>
64 <div id="MSearchBox" class="MSearchBoxInactive">
66 <img id="MSearchSelect" src="search/mag_sel.png"
67 onmouseover="return searchBox.OnSearchSelectShow()"
68 onmouseout="return searchBox.OnSearchSelectHide()"
70 <input type="text" id="MSearchField" value="Search" accesskey="S"
71 onfocus="searchBox.OnSearchFieldFocus(true)"
72 onblur="searchBox.OnSearchFieldFocus(false)"
73 onkeyup="searchBox.OnSearchFieldChange(event)"/>
74 </span><span class="right">
75 <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
82 <div id="side-nav" class="ui-resizable side-nav-resizable">
84 <div id="nav-tree-contents">
85 <div id="nav-sync" class="sync"></div>
88 <div id="splitbar" style="-moz-user-select:none;"
89 class="ui-resizable-handle">
92 <script type="text/javascript">
93 $(document).ready(function(){initNavTree('group__usbd__comp__test.html','');});
95 <div id="doc-content">
96 <!-- window showing the filter options -->
97 <div id="MSearchSelectWindow"
98 onmouseover="return searchBox.OnSearchSelectShow()"
99 onmouseout="return searchBox.OnSearchSelectHide()"
100 onkeydown="return searchBox.OnSearchSelectKey(event)">
101 <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div>
103 <!-- iframe showing the search results (closed by default) -->
104 <div id="MSearchResultsWindow">
105 <iframe src="javascript:void(0)" frameborder="0"
106 name="MSearchResults" id="MSearchResults">
111 <div class="headertitle">
112 <div class="title">USB Compliance Tests<div class="ingroups"><a class="el" href="group__usbd__funcs.html">USB Device Validation</a></div></div> </div>
114 <div class="contents">
115 <p>USB drivers need to be tested against the requirements of the USB standard. The following tools are provided by the <a href="http://www.usb.org" target="_blank">USB Implementers Forum</a>:</p>
117 <li><a href="http://www.usb.org/developers/tools/usb20_tools/" target="_blank">USB Command Verifier (USB20CV Tools)</a> for USB 2.0 controllers</li>
118 <li><a href="http://www.usb.org/developers/tools/" target="_blank">USB Command Verifier (USB3CV Tools)</a> for USB 3 controllers</li>
120 <p>Before using the command verifier tools, make sure that you have an application running with the USB device class that you are going to test. For example, if you want to test the behavior of the USB MSC device class, create a µVision project containing this class. For more information, refer to the <a href="http://www.keil.com/pack/doc/mw/USB/html/_u_s_b__device.html#Creation_Steps" target="_blank">MDK Middleware</a> documentation.</p>
121 <p>Then, follow these steps to run the verification tools on a Windows PC:</p>
123 <li>Install the appropriate USB Command Verifier tool and reboot your PC.</li>
124 <li>Connect your device to the PC.</li>
125 <li><p class="startli">Open the Windows Device Manager and select <b>View - Devices by connection</b> to view the USB host controllers available on the PC:</p>
127 <img src="USB_Test_DevManager.png" alt="USB_Test_DevManager.png"/>
128 <div class="caption">
129 Select USB Device</div></div>
131 <li><p class="startli">Expand the entry and verify the controller properties to which your device is connected. Remember the location of the controller that will be tested:</p>
133 <img src="USB_Test_DevLocation.png" alt="USB_Test_DevLocation.png"/>
134 <div class="caption">
135 Device Location</div></div>
137 <li><p class="startli">Run the USB Command Verifier tool and select the controller according to the location found in the previous step:</p>
139 <img src="USB_Test_selectDevice.png" alt="USB_Test_selectDevice.png"/>
140 <div class="caption">
141 Select Controller</div></div>
142 <dl class="section note"><dt>Note</dt><dd>Do not test the controller that is connected to the keyboard or mouse. All devices connected to the tested controller will stop working.</dd></dl>
144 <li>When selecting the <b>Compliance Test</b> mode all test cases will run. In the <b>Debug</b> mode, you can choose individual test cases by selecting the related check boxes. Test reports are saved automatically in the <b>Reports</b> directory.</li>
147 <img src="USB_Test_CommandVerifier.png" alt="USB_Test_CommandVerifier.png"/>
148 <div class="caption">
149 Compliance Tests</div></div>
150 <p>The following tests should be executed for:</p>
152 <li>USB Mass Storage Class: Chapter 9 Tests + MSC Tests</li>
153 <li>USB HID class: Chapter 9 Tests + HID Tests</li>
154 <li>Any other class (CDC, ADC, etc.): only Chapter 9 Tests</li>
156 <p><b>Chapter 9 Tests</b> refers to the USB Device Framework chapter of the USB specification. Every USB peripheral is required conform to this test which must be passed. Passed tests offer a good level of confidence that there are no major flows in the USB device drivers.</p>
157 <p>The USB Command Verifier does not test how well a device behaves under stress. To get a better confidence, conduct stress tests of all available examples:</p>
159 <li>USB MSC: Send a long file to the mass storage device and read it back and compare the output.</li>
160 <li>USB HID: Use the HID Client (available in the MDK installation directory below \ARM\Utilities\HID_Client\Release) to see how the device works under stress.</li>
161 <li>USB CDC (Virtual COM): Send a large file on the Virtual COM port and capture it on the UART and vice versa. Compare sent and received files for both directions.</li>
162 <li>USB ADC: Play a sound file form the board for some time and listen for any sound distortion. Record sounds coming from a microphone and verify the recorded file on the USB Host.</li>
164 <p>After the completion of the tests, click <b>Exit</b> to switch back the USB stack. Otherwise, the USB stack will stay in test mode. </p>
165 </div><!-- contents -->
166 </div><!-- doc-content -->
167 <!-- start footer part -->
168 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
170 <li class="footer">Generated on Thu Feb 21 2019 15:24:48 for CMSIS-Driver Validation by ARM Ltd. All rights reserved.
172 <a href="http://www.doxygen.org/index.html">
173 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6