USB Design by Example: A Practical Guide to Building I/O Devices, Second Edition

In most of the examples covered so far, small amounts of intermittent data have been moved using the built-in HID device driver. This approach has the benefit of being simple to implement, since the operating system contains all of the driver code necessary to enable an application program to monitor and control the device. An overview of the buttons-and-lights solution of Chapter 7 is shown in Figure 11-1. We wrote the PC host application program and all of the I/O device firmware to implement this solution.
Many applications require a large amount of data to be moved and, conceptually, the solution shown in Figure 11-2 is the same as the HID application. Unfortunately, the Windows OS does not have a simple BlockIO transfer driver, so additional steps must be completed in this design example. I don t like changing too many variables at the same time, so I shall use the same hardware as the HID example the key points of a BlockIO transfer example will be covered in depth, so that you can understand how to implement your specific design. Most of the firmware developed in Chapter 7 will be reusable, so in this chapter I will only focus on the differences.
Most BlockIO devices operate on discrete elements of data such as a single page or a single image, and some method of separating multiple blocks is required. Typically, an I/O device...