The IAR PowerPac USB stack is pre-configured, and when programmed using IAR Systems' build tools, RTOS and file system, includes everything necessary to add a fully working USB interface to an ARM device. With a fast processor such as ARM7 and a USB device controller, the stack supports transfer rates of up to 1Mbyte/s on USB 2.0. The IAR PowerPac USB consists of three layers: a driver for hardware access, the USB core and a USB-class driver or bulk-communication component. The communication classes include bulk, HID (human-interface device), MSD (mass storage device) and CDC (communication device class) types. The bulk driver makes it simple for developers to optimise software rapidly for an embedded device such as a printer that communicates with a PC via USB, allowing usage of the full bandwidth of the USB bus. The MSD driver enables the use of an embedded target device such as a digital camera or USB stick as a USB mass-storage device. The CDC driver offers the capability to convert the target device into a serial-communication device that is recognised by the host as a serial interface or virtual COM port. The HID driver is used for target devices such as keyboards, mice, or gamepads.