Segger develops and distributes software development tools and ANSI C software components for embedded systems. Main products are : emWin, an universal graphics software (GUI) for embedded applications; embOS, a small real-time kernel; emFile, an embedded file system; USB stacks; and J-Link, the JTAG emulator for ARM cores. Segger cuts software development time for embedded applications by offering compact, flexible and easy-to-use middleware.
- ISO/ANSI-C source code.
- Supports USB 1.1 / 2.0.
- Low/Full/High-Speed support.
- Bulk communication component with Windows kernel mode driver available.
- MSD component available.
- Smart MSD works without file system.
- CDC component available.
- RNDIS component available.
- HID component available.
- Printer component available.
- Start/test applications supplied.
- No royalties.
- MTP component available.
SEGGER offers a flexible USB device stack structure. The typical emUSB stack package consists of a target driver designed for your target hardware, the emUSB core and the Bulk, MSD, CDC or HID component,l or any combination thereof. The different available hardware drivers, the USB class drivers and the Bulk communication component are additional packages, which can be combined and ordered depending on project requirements.
Bulk Communication Component
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 reliable high-speed channel (very similar to a TCP connection). It allows the PC to send and receive data with the embedded target. This permits usage of the full bandwidth of the USB bus.
emUSB-MSD converts your embedded target device into a USB mass storage device. Your target device can then be plugged into a USB host like a PC and accessed as an ordinary disk drive, without the need to develop a kernel mode driver for the host operating system. This is possible because the mass storage class is one of the standard device classes, defined by the USB Implementers Forum. Every major operating system on the market supports these device classes out of the box. Since every major OS already provides host drivers for USB mass storage devices, there is no need to implement your own. The target device will be recognized as a mass storage device and can be accessed directly.
The MTP class supports file-based communication with the host system for all types of files. MTP is an alternative to MSD, without some of the latter’s weaknesses. File based communication gives access to the file system from the host system (PC) and the device at the same time. Using the MTP class also allows selectively exposing content of the file system to the host system, typically a PC. Sudden removal of the USB cable does not endanger the data integrity of the device’s file system.
emUSB-CDC converts the target device into a serial communication device. The host will recognize it as a virtual COM port (USB2COM). It allows the use of software which is not designed to be used with USB, such as a device datalogger or terminal program.
RNDIS Component (Internet via USB)
RNDIS enables developers to transform low end standalone products into connected devices with the same functionality as other devices on a local network. The most noteworthy application is a USB based web server. The USB web server allows users to configure their device and to view data using a web browser. This saves development costs as there is no need to develop an application for every major operating system.
The Human Interface Device class (HID) is an abstract USB class protocol defined by the USB Implementers Forum. This protocol was defined for handling devices which are used by humans to control the operation of computer systems. An installation of a custom-host USB driver is not necessary, because the USB human interface device class is standardized and every major OS already provides host drivers for it. emUSB device also allows “Vendor specific HIDs.” These are HID devices communicating with an application program. The host OS loads the same driver as for any “true HID” and automatically enumerates the device. The application communicates with the particular device using API functions offered by the host. This allows an application program to communicate with the device without the need for loading a custom driver. The HID class is a good choice if ease of use is important and high communication speed is not a requirement.
The USB class protocol for printers was defined for handling output devices like printers and plotters. emUSB printer receives data from the host and forwards the data to a parser. The printer component provides automatic error handling routines, in case of events like the device running out of paper. The USB protocol is completely hidden from the developer and he can concentrate on developing the parser.
SEGGER’s USB host software stack implements full USB host functionality, including external hub support, and optionally provides device class drivers. It enables developers to easily add USB host functionality to embedded systems. The software stack supports all transfer modes (control, bulk, interrupt, isochronous) at low, full and high speed.