Embedded systems and desktop PC's have had a love hate relationship over the years. The PC has been the source of significant technological advances that have enabled embedded systems to evolve to their current levels of sophistication, using the faster processors and highly-integrated functionality of the CPU cores available today. Additionally, the PC world has also spun off I/O buses, both serial and parallel, that have enabled embedded systems designers to expand and configure their system I/O. On the other hand, the embedded industry has often been wary to adopt PC technology due to the short life cycle some PC technologies experience.

ImageThe many changing phases that the PC world passes through have been too cyclic for the stodgier, slower- to-evolve, embedded market. But once in a while, just as it appears the PC market is moving on to the next technological whiz-bang idea, embedded developers realize what a gem the PC market has in one of its technologies and move to adopt it. Such is the case with USB.

USB, thought by some to have already been supplanted by the much faster and sexier PCIe bus, has been gaining considerable momentum, evidenced by how CPU manufacturers continue to in - crease the number of USB ports contained in the chipsets. Furthermore, I/O vendors have become seduced by the beauty in its simplicity as embedded users begin to expand their understanding of how to design a system with USB. The staying power of this technology in embedded systems becomes obvious as one drills deeper and deeper into its capabilities.

Rethinking System Partitioning.

As USB makes its way into the embedded world, it has begun to shape how we think of a system design. If you were familiar with the PC/104 world, you'll recall that the CPU was assigned the task to use an IRQ interrupt over the PC/104 bus to manage I/O devices. The CPU received a signal from an I/O device that a control function needed to be serviced based on a given priority. In such a system, there would typically be several tasks which the CPU was charged with managing such as: network communication, data processing of a log file, writing to a disk drive, or even maintaining a display screen.