Bulk component

The emUSB-Bulk stack consists of an embedded side, which is shipped in source code form, and a driver for the PC, which is typically shipped as executable (.sys). (The source of the PC driver can also be ordered.)

emUSB-Bulk allows developers to quickly and painlessly develop software for an embedded device that communicates with a PC via USB. The communication is like a single, high speed, reliable channel (very similar to a TCP connection). It basically allows the PC to send data to the embedded target, the embedded target to receive these bytes and reply with any number of bytes. The PC is the USB host, the target is the USB client. The USB standard defines 4 types of communication: Control, isochronous, interrupt and bulk. Experience shows, that for most embedded devices bulk mode is the communication mode of choice. It allows usage of the full bandwidth of the USB bus.

The Kernel mode driver (PC)

In order to communicate with a target (client) running emUSB, an emUSB bulk kernel mode driver has to be installed on Windows PC' s. Typically, this is done as soon as emUSB runs on target hardware.

Why is a driver necessary ?

In Microsoft 's Windows operating systems, all communication with real hardware is implemented with kernel-mode drivers. Normal applications run in user-mode. In user-mode, hardware access is not permitted. All access to hardware is done through the operating system. The operating system uses a kernel mode driver to access the actual hardware. In other words: every piece of hardware requires one or more kernel mode drivers to function. Windows supplies drivers for most common types of hardware, but it does not come with a generic bulk communication driver. It comes with drivers for certain classes of devices, such as keyboard, mouse and mass storage device (for example, a USB stick). This makes it possible to connect a USB mouse and not having to install a driver for it: Windows already has a driver for it.
Unfortunately, there is no generic kernel mode driver which allows communication to any type of device in bulk mode. This is why a kernel mode driver needs to be supplied in order to work with emUSB-Bulk.

Supported platforms

The kernel mode driver works on all NT-type platforms. This includes Windows 2000 and Windows XP (home and professional), Windows 2003 Server and Windows Vista. Windows NT itself does not support USB; Win98 is not supported by the driver.

Example application

Example applications for both the target (client) and the PC (host) are supplied. These can be used for testing the correct installation and proper function of the device running emUSB. The application is a modified echo server (BULK_Echo1.c); the application receives data byte by byte, increments every single byte and sends it back to the host.