Chapter 4 Software Development
page 4-20
with the above-mentioned requirement for average suspend current.
4-3-5. Building a Product
Generally speaking, building a product with the help of the JOB60851 board requires the following
modifications and additions to the software.
(1) Adding and modifying descriptors
At the minimum, the source code has to provide vendor and product IDs. (See Section 4.3.6
below.) Descriptors generally also have to be modified to reflect the final product, application,
and device class.
(2) Adding to class specifications
Building a product in a certain class involves adding requests specified by the class
specifications and descriptors required by the class. Some classes even require additions and
modifications to the standard descriptors.
(3) Adding vendor-specific specifications
Vendor-specific requests implement the control commands and control protocols unique to that
vendor. The vendor must also add descriptors that the host can access with
GET_DESCRIPTOR requests.
(4) Developing application layer
Here the developer writes an application layer program combining API functions and callback
functions.
(5) Tuning data flow
The flexibility of modification that the sample firmware provides through highly generalized
programming sometimes comes at the expense of efficiency. Although maximizing system
throughput involves looking at more than just firmware, there are places where the source code
should be rewritten for speed--to use unidirectional endpoints, for example.
4-3-6. Vendor and Product IDs
Each USB product requires two numbers to uniquely identify it to the host operating system for use
in selecting drivers: a VendorID assigned by the USB Implementers Forum and a ProductId chosen
by the vendor. The sample firmware uses those for Oki Semiconductor and the JOB60851 Starter
Kit, respectively. These may be safely used through the prototype stage. Shipping products, however,
must have their own.
The following URL links to the procedure for acquiring a VendorID from the USB Implementers
Forum.
http://www.usb.org/developers/
4-3-7. Other Tools Necessary
(1) Bus monitor
The sample firmware will not necessarily work perfectly when first ported to a new
microcontroller because of the differences in microcontrollers and compilers. An extremely
effective way to thoroughly check the operation of such a port is with a bus monitor tracing
actual traffic on the bus.