|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE concept |
|
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
|
12 <concept id="GUID-C8217A7B-D741-5452-B95B-57B8978AD152" xml:lang="en"><title>Validation</title><shortdesc>Symbian platform provides test code that you can run to |
|
13 validate a USB client port. This topic describes the USB client test |
|
14 code.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
15 <section id="GUID-9769035E-68E8-59E2-85EA-3F6129AD27D3"><title>Requirements</title> <p>For testing the port, you will need: </p> <ul> |
|
16 <li id="GUID-0FFD84ED-C745-551E-BDB7-DD145609928E"><p>A Symbian platform |
|
17 text shell ROM image for the device that also contains the USB drivers |
|
18 (the LDD and the PDD), and the unit test applications <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-62006D61-5222-5C83-86EC-54CECD4FED18">T_USB</xref> and <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-78E25906-2FF3-572E-B24D-2F064B9DBD89">T_USBAPI</xref>. On a slow CPU you may need to use release (UREL) |
|
19 versions of the driver binaries to avoid exceeding the time-out limits |
|
20 of the USB protocol. </p> </li> |
|
21 <li id="GUID-8E195CED-52E6-53A2-9313-4CF4C0951AB5"><p>A computer running |
|
22 either MS Windows 98 or above to run the Symbian host-side |
|
23 test program USBRFLCT, or MS Windows 2000 to run, in addition, the <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-E8A9B4BD-E60F-5A08-A588-527347239118">USB Command Verifier (USBCV)</xref> R1.2.1 compliance test program. |
|
24 On MS Windows XP you will also be able to run the USBCV R1.3 compliance |
|
25 test program. </p> </li> |
|
26 <li id="GUID-798B9CED-B0AB-505A-9098-40441F8B79C2"><p>A USB driver |
|
27 disk (or some other location accessible to the PC) containing the <filepath>.inf</filepath> file that matches the device to be tested, and the |
|
28 driver binary file that will be installed for the device. Note that |
|
29 for <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-AC6E3928-C027-56E5-985E-6B7699216FDE">USBRFLCT</xref>, both items are included in the binary program distribution. </p> </li> |
|
30 </ul> <p>In addition, a USB analyser, like the ones made by <i>LeCroy</i> formerly CATC, is invaluable for this kind of work. Without this |
|
31 equipment it may be impossible to be sure that the port has been fully |
|
32 successful. </p> </section> |
|
33 <section id="GUID-D77DF810-212A-5C12-B039-4FC785BA01B9"><title>Test |
|
34 steps</title> <p>These are the recommended steps for testing the port: </p> <ul> |
|
35 <li id="GUID-53C8E7F5-F98F-571B-98D2-FCF2F8E75039"><p>Run <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-78E25906-2FF3-572E-B24D-2F064B9DBD89">T_USBAPI</xref> on the unconnected USB device and get it to pass. </p> </li> |
|
36 <li id="GUID-F2B15A4A-AB54-50E8-A5A0-5F4D5B67258D"><p>Use a USB cable |
|
37 to connect the device under test to a PC and start <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-62006D61-5222-5C83-86EC-54CECD4FED18">T_USB</xref> on the device (use T_USB menu options '0','1','1' and |
|
38 '1'). See if the device successfully delivers all the information |
|
39 (descriptors) that the host asks for. If so, a dialogue box pops up |
|
40 on the PC, saying “New hardware found” and offering certain options. |
|
41 Point the OS to the location of the <filepath>.inf</filepath> files |
|
42 and the driver files (the USB driver disk) and have it pick and install |
|
43 the correct driver. Afterwards you should see the new USB device in |
|
44 the Windows Device Manager under the category <i>Symbian platform |
|
45 controlled USB devices</i> as <i>USBRFLCT - Device</i>. If things |
|
46 don’t work as expected at this early stage, the USB analyser will |
|
47 prove invaluable. </p> </li> |
|
48 <li id="GUID-A4E3EB99-B189-54C3-A4FD-BF7F8F65E2DA"><p>Try and run <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-AC6E3928-C027-56E5-985E-6B7699216FDE">USBRFLCT</xref> and <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-AC6E3928-C027-56E5-985E-6B7699216FDE">T_USB</xref> together. First start T_USB on the device, choose the |
|
49 four numbered program options (but this time the first menu option |
|
50 must not be '0'), and then start USBRFLCT on the PC. The program pair |
|
51 should run indefinitely, in any mode. If the program halts after a |
|
52 while then this almost certainly indicates either a hardware problem |
|
53 associated with the USB device controller or an incorrect handling |
|
54 of the controller in the PSL. If the halt occurs after a long time, |
|
55 then this could point to a resource problem, such as a memory leak. |
|
56 This test will verify that at least one bulk IN endpoint and one bulk |
|
57 OUT endpoint are working correctly, and that data can be transferred |
|
58 over the USB link. </p> </li> |
|
59 <li id="GUID-B88EBB38-3ACE-5F51-802D-360EA919DE5A"><p>Run the USB |
|
60 Implementers Forum's <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-E8A9B4BD-E60F-5A08-A588-527347239118">USBCV</xref> compliance test suite and go through the “Chapter 9 |
|
61 Tests”. You will first need to start <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-62006D61-5222-5C83-86EC-54CECD4FED18">T_USB</xref> on the device end, as <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-E8A9B4BD-E60F-5A08-A588-527347239118">USBCV</xref> needs a successfully enumerated device as a target (choose |
|
62 '0' as the first T_USB option). These tests should all pass. It is |
|
63 important to run <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-E8A9B4BD-E60F-5A08-A588-527347239118">USBCV</xref> to verify that endpoint-0 is behaving correctly, and |
|
64 that the device is compliant with the USB Specification 2.0. </p> </li> |
|
65 </ul> </section> |
|
66 <section id="GUID-A5CA6D74-1204-5C9C-9396-D51A8E58A952"><title>The |
|
67 USBIO driver</title> <p>The host (PC) side test program: <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-3F7462D9-EF86-5CC9-AEC5-EB755049B7CF">USBRFLCT</xref> uses the services of a USB client driver, <filepath>USBIO.SYS</filepath>. This driver is loaded by the OS as part of |
|
68 the enumeration once the USB device on test is connected to the PC. </p> <p>The generic USB device driver USBIO is a product developed and |
|
69 marketed by the German company <i>Thesycon</i> [USBIO Software Development |
|
70 Kit for Windows; see <xref href="http://www.thesycon.de/usbio/eng/usbio.htm" scope="external">http://www.thesycon.de/usbio/eng/usbio.htm</xref>]. </p> <p>The driver |
|
71 provides Win32 applications with direct access to USB devices which |
|
72 are otherwise only accessible from kernel-mode. It can be used with |
|
73 any kind of USB device, enabling application developers to control |
|
74 devices without having to develop a kernel-mode WDM driver. Symbian |
|
75 owns a licence to the driver and its development package, and is entitled |
|
76 to ship renamed copies of the driver binary to licensees and partners |
|
77 as part of its own development kits, usually adopting the name of |
|
78 the application that uses it. </p> </section> |
|
79 <section id="GUID-78E25906-2FF3-572E-B24D-2F064B9DBD89"><title>T_USBAPI</title> <p>This is a device-side only, stand-alone test program. It is used |
|
80 to verify the proper working of some basic USB API functionality. |
|
81 For T_USBAPI to run, the device doesn’t need to be USB-connected to |
|
82 a PC although if it is then some additional tests are performed. Tests |
|
83 run by T_USBAPI include: </p> <ul> |
|
84 <li id="GUID-ED9F5656-C992-54D4-B625-66B427966AF1"><p>loading the |
|
85 USB LDD and opening a channel </p> </li> |
|
86 <li id="GUID-314942D9-4A66-52D1-AD07-DE193D639647"><p>searching for |
|
87 suitable endpoints and setting up an interface </p> </li> |
|
88 <li id="GUID-33DF3016-49D1-5591-A103-5931237FF760"><p>searching for |
|
89 suitable endpoints and creating an 'alternate setting' for that interface |
|
90 (if supported). </p> </li> |
|
91 <li id="GUID-A76EDCE6-3629-5516-8920-B62962EC6FD4"><p>querying and |
|
92 allocating endpoint resources (DMA and double buffering) </p> </li> |
|
93 <li id="GUID-30E05336-A92E-5614-B365-90D4BCF3AF64"><p>powering up |
|
94 the UDC and connecting it to the bus. </p> </li> |
|
95 <li id="GUID-A75AEAEA-7328-517C-807B-59ECD051FB1B"><p>manipulating |
|
96 (modifying) USB descriptors (Device, Device_Qualifier, Configuration, |
|
97 Other_Speed_Configuration, Interface, Endpoint, String) </p> </li> |
|
98 <li id="GUID-9D7AAEA0-5E85-56D0-8A11-52C2089A2C60"><p>testing the |
|
99 USB OTG API extensions </p> </li> |
|
100 <li id="GUID-3601CC5C-752E-5E29-ADA5-3590976F5B43"><p>requesting and |
|
101 releasing <i>Device Control</i> </p> </li> |
|
102 <li id="GUID-D6BB7C90-9B9F-5111-83F6-5FC3E15FDBF3"><p>some static |
|
103 state notification tests (alternate device status, endpoint status). </p> </li> |
|
104 <li id="GUID-46858A91-D4DB-5A62-B791-66615745BDC9"><p>setting and |
|
105 clearing endpoint Halt condition (where supported in unconfigured |
|
106 state) </p> </li> |
|
107 <li id="GUID-F8A0D0C3-CEF9-5226-9F04-2DB232F66CD7"><p>closing the |
|
108 channel and freeing the LDD </p> </li> |
|
109 </ul> <p>Most of these tests verify the functioning of the platform-independent |
|
110 code (i.e. platform-independent layer + LDD). However, some of this |
|
111 code relies on platform-specific layer functionality, such as the |
|
112 stall state and the maximum packet size of endpoints. Therefore, a |
|
113 working, or a partially working platform-specific layer is required |
|
114 for T_USBAPI to pass. </p> <p>When called normally, T_USBAPI runs |
|
115 once and then exits. It can also run endlessly in a loop, provided |
|
116 it is not failing, by adding the parameter <i>soak</i> to the command |
|
117 line. Once the program is running in endless mode, it can be stopped |
|
118 at any time by pressing the <userinput>Esc</userinput> key, in which |
|
119 case the program finishes the current set of tests and then exits. |
|
120 This loop mode can be useful for the detection of memory leaks in |
|
121 the USB stack, although the main functionality exercised lies in the |
|
122 platform-independent layer and the LDD, not in the platform-specific |
|
123 layer. </p> <p>T_USBAPI is a standalone program which can be safely |
|
124 run on a UDEB image. Choose to display error messages and warnings |
|
125 specific to the USB components using the appropriate kernel debug |
|
126 flags (<codeph>KPANIC</codeph>, <codeph>KUSBPSL</codeph> and <codeph>KUSB</codeph>). The following example shows the E32 shell commands |
|
127 to set <codeph>KPANIC</codeph>, <codeph>KUSBPSL</codeph> and <codeph>KUSB</codeph> in that order: </p> <p><userinput>C:\>trace 80000000</userinput> </p> <p><userinput>C:\>trace 3 1</userinput> </p> <p>"trace 3 1" |
|
128 means "set (bit 1|bit 0) at index 1" (<codeph>KUSBPSL=33</codeph>, <codeph>KUSB=32</codeph>) </p> </section> |
|
129 <section id="GUID-AC6E3928-C027-56E5-985E-6B7699216FDE"><title>USBRFLCT |
|
130 and T_USB</title> <p>These are the host and device side parts, respectively, |
|
131 of a reflector-like USB test program. They are normally used together, |
|
132 but T_USB can also be used to create a simple USB device to allow |
|
133 USBCV to execute. </p> <p> <note>Since this program suite is subject to continual development |
|
134 and improvement, in order for them to work properly together, |
|
135 both parts must always come from the same Symbian platform |
|
136 delivery. </note> </p> <p>To ensure proper internetworking, <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-3F7462D9-EF86-5CC9-AEC5-EB755049B7CF">USBRFLCT</xref> and <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-62006D61-5222-5C83-86EC-54CECD4FED18">T_USB</xref> exchange their version numbers after startup, and either |
|
137 program will quit if the other does not provide a suitable minimum |
|
138 version number. </p> <p id="GUID-3F7462D9-EF86-5CC9-AEC5-EB755049B7CF"><b>USBRFLCT</b> </p> <p>This is the host-side part of a reflector-like USB test program. |
|
139 This is normally used together with <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-62006D61-5222-5C83-86EC-54CECD4FED18">T_USB</xref>, the device-side part. </p> <p>The directory <filepath>...\e32test\win32\usbrflct\</filepath> contains its source code. </p> <p>The directory <filepath>...\e32test\win32\usbrflct_distribution\</filepath> contains a binary distribution of the program, including the <filepath>USBRFLCT.SYS</filepath> driver and a <filepath>USBRFLCT.INF</filepath> file for the installation of the driver. </p> <p>The syntax for |
|
140 invoking this is: </p> <codeblock id="GUID-823D06EF-4C96-53E3-8740-F8D996AA2372" xml:space="preserve">usbrflct [options]</codeblock> <p>where <codeph>options</codeph> can be <i>one</i> of the following: </p> <table id="GUID-D5A56CC6-6B60-52C6-8387-85935E1B5747"> |
|
141 <tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/> |
|
142 <tbody> |
|
143 <row> |
|
144 <entry><p>/[r|t] </p> </entry> |
|
145 <entry><p>receive|transmit only; default is to loop with statistics |
|
146 printed every 1024th iteration </p> </entry> |
|
147 </row> |
|
148 <row> |
|
149 <entry><p>/l </p> </entry> |
|
150 <entry><p>loop mode with statistics printed for every iteration </p> </entry> |
|
151 </row> |
|
152 <row> |
|
153 <entry><p>/v </p> </entry> |
|
154 <entry><p>verbose driver & program output </p> </entry> |
|
155 </row> |
|
156 <row> |
|
157 <entry><p>/[h|?] </p> </entry> |
|
158 <entry><p>displays this help text </p> </entry> |
|
159 </row> |
|
160 </tbody> |
|
161 </tgroup> |
|
162 </table> <p>Three modes of operation are available: </p> <ul> |
|
163 <li id="GUID-3AA40354-D26E-5DA0-A69F-B3766D84AEC1"><p>Loop mode. </p> <p>Data chunks are read from the USB device and then immediately |
|
164 written back to it. Successive data chunks are read, each being one |
|
165 byte larger than the one before, starting with size 0 until a specified |
|
166 maximum size has been reached. This maximum size value is specified |
|
167 on the device using <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-62006D61-5222-5C83-86EC-54CECD4FED18">T_USB</xref>. After the maximum size has been reached, the size of |
|
168 the data chunk is reset back to its starting value. </p> <p>A preamble |
|
169 packet is sent by the device before each data chunk, containing the |
|
170 size of the chunk that is to follow. This kind of protocol is necessary, |
|
171 because the host side driver has to specify the exact number of bytes |
|
172 that it needs to read from the device. </p> <p>Every 1024th loop, |
|
173 the program displays statistics about the test run. For example, the |
|
174 total number of bytes transferred, and the current average data throughput |
|
175 in bytes/sec. </p> </li> |
|
176 <li id="GUID-4F50A5A8-E52C-54ED-BE12-4F751A4B5223"><p>Receive-only |
|
177 mode. </p> <p>In this mode, a single preamble packet containing the |
|
178 size of the data chunks that are to follow is sent from the device. |
|
179 The host-side program subsequently, and continuously, reads data chunks |
|
180 of that size from the device. This mode can be used to determine the |
|
181 raw transfer performance of the USB connection in the device upstream |
|
182 direction. </p> </li> |
|
183 <li id="GUID-757B0CD8-CB5E-5BF1-86B1-8626F73604E3"><p>Transmit-only |
|
184 mode. </p> <p>In this mode, no preamble packet is sent. Instead, maximum |
|
185 (constant) sized data chunks are sent. This mode can be used to determine |
|
186 the raw transfer performance of the USB connection in the device downstream |
|
187 direction. </p> </li> |
|
188 <li id="GUID-13B049DB-1955-5D3E-8404-C375ABEE2F06"><p>Verbose mode. </p> <p>In this mode, the driver and program output are both displayed. |
|
189 Use this to track down problems that occur when trying to get <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-3F7462D9-EF86-5CC9-AEC5-EB755049B7CF">USBRFLCT</xref> and <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-62006D61-5222-5C83-86EC-54CECD4FED18">T_USB</xref> to work together. This may help in the following circumstances: </p> <ul> |
|
190 <li id="GUID-11167D82-09B9-5D60-B1F6-AB14B633D56D"><p>the first time |
|
191 you test a port of the platform specific layer </p> </li> |
|
192 <li id="GUID-67F387AE-42B2-5EA6-8A76-B212D82EE2B9"><p>after installation |
|
193 changes on the PC </p> </li> |
|
194 </ul> <p>The error messages are particularly helpful, a list of error |
|
195 codes together with explanations for the USBRFLCT.SYS driver can be |
|
196 found in the USBIO Reference Manual. These codes are also available |
|
197 on <i>Thesycon</i>'s website at <xref href="http://www.thesycon.de/usbio/usbioman.pdf" scope="external">http://www.thesycon.de/usbio/usbioman.pdf</xref>. Do not use this |
|
198 mode during loop or throughput testing to avoid program slowdown which |
|
199 could affect these tests. </p> </li> |
|
200 </ul> <p id="GUID-62006D61-5222-5C83-86EC-54CECD4FED18"><b>T_USB</b> </p> <p>This is the device-side part of a reflector-like USB test program. |
|
201 This is normally used together with <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-3F7462D9-EF86-5CC9-AEC5-EB755049B7CF">USBRFLCT</xref>, the host-side part. </p> <p>The source for this |
|
202 program can be found in: </p> <ul> |
|
203 <li id="GUID-468F6A61-75FE-509A-BCEE-B979F8D5E5C8"><p> <filepath>...\e32test\device\t_usb.h</filepath> </p> </li> |
|
204 <li id="GUID-84E8F05C-51C9-5CB1-94AB-0FB63AA9C15B"><p> <filepath>...\e32test\device\t_usb.cpp</filepath> </p> </li> |
|
205 <li id="GUID-8A286F35-65EE-5FAC-B4B4-A014E0698308"><p> <filepath>...\e32test\device\t_usbco2.cpp</filepath> </p> </li> |
|
206 </ul> <p>After starting the program, you are prompted to choose a |
|
207 maximum size for a single transfer. </p> <p> <b>Note: </b> The maximum |
|
208 transfer size is not the same as the maximum packet size. </p> <p>The prompt appears as follows: </p> <p><userinput>++++Choose max |
|
209 transfer size++++</userinput> </p> <p><userinput>'0' - Set up USB |
|
210 device for USBCV</userinput> </p> <p><userinput>'1' - 32 bytes</userinput> </p> <p><userinput>'2' - 1024 bytes</userinput> </p> <p><userinput>'3' - 64 kbytes</userinput> </p> <p><userinput>'4' - 1 Mbyte</userinput> </p> <p>Once you have chosen the maximum transfer size you are prompted |
|
211 to choose a bandwidth priority for the interface that will be created |
|
212 and used for the tests. All options except '0' are used when <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-62006D61-5222-5C83-86EC-54CECD4FED18">T_USB</xref> is run together with <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-3F7462D9-EF86-5CC9-AEC5-EB755049B7CF">USBRFLCT</xref>. The program carries out dynamic version number checking |
|
213 of the two programs to ensure compatibility . Option '0' sets up a |
|
214 static USB device that can be used to perform other tests, including |
|
215 compliance testing with <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-E8A9B4BD-E60F-5A08-A588-527347239118">USBCV</xref>. This option also circumvents dynamic version checking. |
|
216 Most of the other menu options have no meaning in this mode. </p> <p>Choose a bandwidth priority from the following menu for the interface |
|
217 specifically created for the tests. All tests will be carried out |
|
218 over this interface. </p> <p><userinput>++++ Choose Bandwidth Priority |
|
219 ++++</userinput> </p> <p><userinput>'1' - Economical buffering - default</userinput> </p> <p><userinput>'2' - More memory than default buffering - Plus1</userinput> </p> <p><userinput>'3' - More memory than Plus1 buffering - Plus2</userinput> </p> <p><userinput>'4' - Maximum memory for buffering</userinput> </p> <p>Choose endpoint options from the following two configuration |
|
220 menus: </p> <p><userinput>++++ Choose Endpoint I/O Transfer Mode ++++</userinput> </p> <p><userinput>'1' - Interrupt Mode</userinput> </p> <p><userinput>'2' - DMA Mode (recommended)</userinput> </p> <p> </p> <p><userinput>++++ Choose Endpoint FIFO Mode ++++</userinput> </p> <p><userinput>'1' - Normal Buffering Mode</userinput> </p> <p><userinput>'2' - |
|
221 Double Buffering Mode (recommended)</userinput> </p> <p>A message |
|
222 prompts the user to start the host side test program USBRFLCT. </p> <p>Once host enumeration |
|
223 and <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-3F7462D9-EF86-5CC9-AEC5-EB755049B7CF">USBRFLCT</xref> configuration completes, the program's main menu |
|
224 is displayed as follows: </p> <p><userinput>++++ Select Program Option |
|
225 ++++</userinput> </p> <p><userinput>'L'oop test</userinput> </p> <p><userinput> Loop test with data 'C'ompare</userinput> </p> <p><userinput>'R'eceive-only test (we receive, host transmits)</userinput> </p> <p><userinput>'T'ransmit-only test</userinput> </p> <p><userinput> Receive and 'P'ut (write) to File</userinput> </p> <p><userinput> Transmit and 'G'et (read) from File</userinput> </p> <p><userinput> Signal Remote - 'W'akeup to the host</userinput> </p> <p><userinput>'S'top current transfer</userinput> </p> <p><userinput> Re'E'numerate |
|
226 device</userinput> </p> <p><userinput>'Q'uit</userinput> </p> <p>Choose |
|
227 one of the six main test modes. The selected mode should correspond |
|
228 with the mode in which the host-side program is running. For example, |
|
229 device-side <codeph>Receive</codeph> matches host-side <codeph>Transmit</codeph>. </p> <p>The Loop test with <codeph>Compare</codeph> is just like |
|
230 the normal <codeph>Loop</codeph>, except that the received data is |
|
231 compared with the data that was previously sent, allowing any transmission |
|
232 errors to be detected. The purpose of the non-comparing mode is performance |
|
233 (throughput) assessment of the USB link, in this mode the slow down |
|
234 of the application introduced by the byte-by-byte checking of the |
|
235 compare operation is not desirable. Note: The non-comparing mode does |
|
236 do some checking, specifically it compares the received transfer number |
|
237 (4 bytes at the start of each buffer) against the expected value. </p> <p>The standard 'Receive-only' test mode <userinput>R</userinput> immediately discards the data received, similarly the standard 'Transmit-only' |
|
238 mode <userinput>T</userinput> creates random data on the fly to send |
|
239 to the device. These tests are useful for checking the maximum throughput |
|
240 of the link, however they do not reflect normal usage. In a real world |
|
241 scenario, transmitted data would be read from a file and received |
|
242 data would be written to a file. </p> <p>There are two further tests |
|
243 which include file I/O. These are: </p> <ul> |
|
244 <li id="GUID-079843BA-A985-5E00-AD1C-44E965EADF17"><p>'Receive' mode <userinput>P</userinput>, where data received from the link is written to a |
|
245 newly created file. </p> </li> |
|
246 </ul> <ul> |
|
247 <li id="GUID-895EBD5E-1008-56C7-8AC2-68F534338893"><p>'Transmit' mode <userinput>G</userinput>, where data is read from a newly created file and sent |
|
248 across the link. </p> </li> |
|
249 </ul> <p>In both cases you must first enter a source or destination |
|
250 from the list of available drives. </p> <p> <userinput>S</userinput> stops an ongoing transfer at any time </p> <p> <userinput>W</userinput> issues a Remote Wake-up signal to the host; this is needed, for |
|
251 example, when running <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-E8A9B4BD-E60F-5A08-A588-527347239118">USBCV</xref>. </p> <p> <userinput>E</userinput> re-enumerates the |
|
252 USB device by first disconnecting it from, and then reconnecting it |
|
253 to the bus. </p> <p> <userinput>ESC</userinput> or <userinput>Q</userinput> quits the program after tearing down the device configuration and |
|
254 freeing all used resources. </p> </section> |
|
255 <section id="GUID-8F2961A1-03B6-5642-82A7-3D2504436D0E"><title>USBIOAPP</title> <p> <i>Thesycon</i> provide this Win32 GUI application. Like <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-3F7462D9-EF86-5CC9-AEC5-EB755049B7CF">USBRFLCT</xref> it works on top of the <filepath>USBRFLCT.SYS</filepath> driver (otherwise known as <filepath>USBIOAPP.EXE</filepath>). The |
|
256 source code for this program is part of the USBIO development kit. |
|
257 You can find the compiled executable <filepath>USBIOAPP.EXE</filepath> in the same directory as <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-3F7462D9-EF86-5CC9-AEC5-EB755049B7CF">USBRFLCT</xref> and the host side drivers: <filepath>...\e32test\win32\usbflct_distribution\</filepath>. </p> <p>Use <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-8F2961A1-03B6-5642-82A7-3D2504436D0E">USBIOAPP</xref> to exercise and test the low-level functionality |
|
258 of an attached USB device. In this case, the Symbian platform device |
|
259 running the USB device stack which includes the port of the platform-specific |
|
260 layer. </p> <p>The following steps describe an example test: </p> <ul> |
|
261 <li id="GUID-AAC49CFA-A077-52B6-8811-F18145B78787"><p>Connect the |
|
262 Symbian platform USB device to a PC on which the <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-3F7462D9-EF86-5CC9-AEC5-EB755049B7CF">USBRFLCT</xref> driver has been installed. </p> </li> |
|
263 <li id="GUID-FEEDB45F-36D9-5AB6-9F3D-C36DB85AAC5A"><p>Start <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-62006D61-5222-5C83-86EC-54CECD4FED18">T_USB</xref> on the device to create a USB device (use option '0' |
|
264 for the transfer size). </p> </li> |
|
265 <li id="GUID-CD6A4F22-1B47-5E50-A684-124616A6B0C7"><p>Launch <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-8F2961A1-03B6-5642-82A7-3D2504436D0E">USBIOAPP</xref> on the PC. </p> </li> |
|
266 <li id="GUID-3DC6299D-FBE4-542B-A9CE-2C6D05BCD9B5"><p>Press the <userinput>Scan for USBIO devices</userinput> button. The device should be detected |
|
267 by <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-8F2961A1-03B6-5642-82A7-3D2504436D0E">USBIOAPP</xref>. </p> </li> |
|
268 <li id="GUID-CAC741CF-76EF-5418-94F6-923BF1F1E2A0"><p>Test and exercise |
|
269 the USB device using the different options provided by the <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-8F2961A1-03B6-5642-82A7-3D2504436D0E">USBIOAPP</xref> program. </p> </li> |
|
270 </ul> <p>Further details can be found in the USBIO manual, which contains |
|
271 a chapter on the <xref href="GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita#GUID-C8217A7B-D741-5452-B95B-57B8978AD152/GUID-8F2961A1-03B6-5642-82A7-3D2504436D0E">USBIOAPP</xref>. See <xref href="http://www.thesycon.de/usbio/usbioman.pdf" scope="external">http://www.thesycon.de/usbio/usbioman.pdf</xref> </p> </section> |
|
272 <section id="GUID-E8A9B4BD-E60F-5A08-A588-527347239118"><title>USB |
|
273 Command Verifier (USBCV)</title> <p>This test program is written and |
|
274 maintained by the USB Implementers Forum, Inc, (also referred to as |
|
275 the “USB Forum” or “USB IF”). It can be used to check compatibility |
|
276 of the USB device with the USB specification (currently version 2.0). |
|
277 It contains a collection of different test suites, but the only tests |
|
278 that are of interest regarding the platform-specific layer port are |
|
279 the “Chapter 9 Tests”. Even though most of the "Chapter 9" request |
|
280 processing is done by the platform-independent layer, the tests can |
|
281 help to uncover potential problems with endpoint-0 controlling platform-specific |
|
282 layer code. The tests will also show whether or not the platform-specific |
|
283 layer and the platform-independent layer work together without problems. </p> <p>This program runs on Windows 2000 and Windows XP (English Version) |
|
284 only. At the time of writing, the version of the package is R1.2.1, |
|
285 and can be obtained from <xref href="http://www.usb.org/developers/tools/USBCV121.msi" scope="external">http://www.usb.org/developers/tools/USBCV121.msi</xref>. </p> </section> |
|
286 <section id="GUID-DA56677C-28D2-5CC2-BBA6-9CCF02C64FBF"><title>USBMSAPP |
|
287 (USB Mass Storage Application)</title> <p>This is not a dedicated |
|
288 test program, but it can be used to check that the USB driver stack |
|
289 is operating correctly. Since it is not a test program USBMSAPP is |
|
290 not normally included in ROMs with any of the <filepath>...\e32tests\f32tests\alltests |
|
291 rom.bat</filepath> options. The source can be found <filepath>...\e32ustils\usbmsapp\</filepath>. If you want to include it, use the command line macro below. </p> <p> <b>Note: </b> Add this macro to <filepath>\e32\rombuild</filepath>: </p> <p><userinput>rom --variant=h4hrp --inst=armv5 --build=urel |
|
292 --type=alltests --symbol --define=ROMOPT_USBMSAPP --name=H4HRPARMV5.IMG</userinput> </p> <p>Start the program from the command prompt with a drive letter |
|
293 as a parameter: </p> <p><userinput>C:\> usbmsapp d:</userinput> </p> <p>This mounts the specified drive with the Mass Storage file system |
|
294 ('MSFS'). Check that you can see it as a Read/Write disk drive on |
|
295 the USB host computer. The drive name on the host computer will be |
|
296 the first free drive letter available. </p> <p> <b>Note: </b> You |
|
297 can only mount drives marked as 'removable' as USB Mass Storage devices. |
|
298 The C: drive cannot be marked as 'removable'. Internal drives made |
|
299 available for USB Mass Storage must be marked as 'removable' for reasons |
|
300 of platform security. </p> </section> |
|
301 </conbody></concept> |