Adaptation/GUID-C8217A7B-D741-5452-B95B-57B8978AD152.dita
changeset 15 307f4279f433
equal deleted inserted replaced
14:578be2adaf3e 15:307f4279f433
       
     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:\&gt;trace 80000000</userinput> </p> <p><userinput>C:\&gt;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 &amp; 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:\&gt; 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>