• Preemptive scheduling
  • Unlimited priorities.
  • Round-robin scheduling for tasks with identicalpriorities.
  • No configuration needed.
  • Intertask communication.
  • Software timer.
  • No royalties.
  • Zero interrupt latency.
  • Fast & efficient.
  • Small footprint.
  • Easy to use start project.
  • Versatile.
  • Supported directly by developers.
  • System analysis tool included.

Developing applications with embOS

embOS is available in source or object code form. Both come with a ready-to-go start project: The first multi-task program will be running within five minutes. The start application and usable samples are supplied in source code form. Libraries for all memory models and initialization of the controller in C-source are included to tailor the system to any application.

Profiling using embOSView

embOSView communicates with embOS running on the target over a UART and displays all available information of the tasks and major system variables. All communication is done from within the communication interrupt routines. This means that it is non-intrusive if embOSView is not connected and minimally intrusive while embOSView is connected. On most CPUs a profiling build of the libraries is available. In profiling build, embOS collects precise timing information for every task, which enables embOSView to show the CPU load.

Zero Latency Interrupts

embOS is perfectly suited for hard real time conditions as it does not block high priority or zero latency interrupts. High priority interrupts do not add additional latency or jitter from the operating system. When an RTOS modifies its data structures, it has to block access to its data structures. In order to achieve that, low priority interrupts are blocked. High priority interrupts cannot call OS functions.

Simulation environment

A simulation environment running under MS Windows is available. It can be used to write and test the entire application on your PC (all routines are 100% identical to your embedded application). This makes debugging and development easy and convenient and saves development time. The simulation is an open environment, which also allows adding C-code to simulate the target specific hardware. embOS Simulation comes with a ready-to-go start project for MSVC, but may also be used with other tool chains. A trial version is available upon request.

Power-Saving Tickless Mode

embOS tickless low power support reduces the power consumption for e.g. battery powered devices. Instead of having a timer interrupt for each system tick the timer is reprogrammed to be able to spend as much time as possible in low power mode.


embOS-MPU offers memory protection on top of the proven real-time operating system embOS. It significantly enhances both stability and safety of your embedded applications and thereby simplifies any certification process. The operating system and all tasks deemed privileged are memory protected and isolated from any ill effects of unprivileged tasks. Due to a fully compatible API, existing embOS applications may be adapted to embOS-MPU with minimal effort.

embOS-MPU can be used in any application from battery-powered, single chip products to systems demanding ultra-fast response, flexibility and multiple tasks. Typical fields include, but are not limited to medical equipment, automation, avionics, and further safety-critical applications.

Comprehensive memory protection

  • Suitable for any safety-critical application
  • Available for any MCU containing a hardware MPU or MMU
  • Unlimited number of privileged und unprivileged tasks possible
  • Unprivileged tasks 100% Sandboxed
  • Simple and straightforward runtime configuration
  • Easy to integrate in both new and existing products



  • Standard sockets interface.
  • High performance.
  • Small footprint.
  • Runs “out-of-the-box”.
  • No configuration required.
  • Works with any RTOS in a multitasking environment (embOS recommended).
  • Zero-copy for ultra-fast performance.
  • Drivers for most popular microcontrollers and external MACs available.
  • Easy to use!.
  • Raw socket support
  • Non-blocking versions of all functions.
  • Unlimited Connections.
  • Re-assembly of fragmented packets.
  • Fully runtime configurable.
  • Developed from ground up for embedded systems.
  • PPP/PPPoE available.
  • Various upper layer protocols available.
  • Royalty-free.
Easy to use

The stack comes with a variety of confidence tests and example applications. It runs out of the box. For most microcontrollers, sample projects are available. All modules can output debug messages and warnings in debug builds. The modules to output this information can be selected at run-time, allowing the developer to focus on the aspect he is analyzing.

Configuration free

The entire stack can be compiled into a library. Setup is reduced to a minimum, performed at run-time. This, along with a wealth of sample programs, gets you up and running quickly. Since inter-module dependencies are limited to the parts required for the functionality of the stack, unused parts of the code are automatically excluded by the linker.


embOS/IP is written in ANSI C and, apart from the Link-Layer-Driver, hardware-independent.


The stack has been optimized for both, performance and code size. The standard socket interface is complemented by the zero-copy API, which allows reading and writing of data without additional protocol buffers, if the target hardware and driver support DMA.

Multi-task support

embOS/IP allows any number of tasks to call API functions concurrently. The stack itself uses typically two tasks (one for housekeeping and one for packet reception), but can also be used with just a single or even no task (polled mode). The two-task model allows minimum interrupt latency on systems without nested interrupts.

embOS/IP structure

embOS/IP is organized in different layers: Application Layer DHCP, DNS, FTP, HTTP, Telnet Transport Layer TCP, UDP Network Layer IPv6, IPv4, ICMP, ARP, RARP, … Link Layer Ethernet (IEEE 802.3), PPP, …

embOS/IP Software Products

embOS/IP is offered in a BASE package which includes the most important protocols related to Ethernet communication and the stack itself. Depending on the engineer’s needs there are several protocols available as add-ons, as well as the embOS/IP PRO software which includes a device driver, and all addons for extended communication via Internet. The following protocols are part of the basic package:

  • ARP (Address resolution protocol)
  • IP (Internet protocol)
  • ICMP (Internet control message protocol)
  • UDP (User datagram protocol)
  • TCP (Transmission control protocol)
  • Standard Socket API
  • Zero-Copy API
  • DNS client
  • DHCP client
  • Telnet server (sample)

You can find the full list of additional modules here: www.segger.com

Optional Products


The embOS/IP web server allows embedded systems to present web pages with dynamically generated content. It has all features typically required by embedded systems: multiple connections, authentication, forms. The RAM usage of the web server has been kept to a minimum by smart buffer handling. The sockets interface can be used with any TCP/IP stack.


The embOS/IP FTP server can use the same file system as the web server. It can be used in r/o or in r/w mode and allows reading and modifying of configuration data or web content. With the FTP client add-on data can be exchanged with any FTP server .

emSSL Transport Layer

emSSL is a Transport Layer Security solution which allows secure and private connections with single-chip systems using as little as 7 kBytes of RAM. emSSL works perfectly with embOS/IP. For more details about emSSL, please refer to the product description on page 18.

Available Add-ons


As an alternative to Ethernet PPP allows the use of IP via modem or GSM. Further add-ons are available.


Universal Plug&Play module.

embOS/IP SNTP Client

Simple Network Time Protocol.

embOS/IP SMTP Client

The Client allows to send emails from your embedded system via an email server.

Memory requirements

Memory requirements depend on the used CPU, compiler, memory model, as well as on various other factors. A typical ROM size for a system using ARP, IP, ICMP, UDP, TCP and sockets is about 18kB (on typical 32-bit microcontroller with size optimization). Minimum RAM usage is about 6KB for simple applications.



emcompress Shrink data with emCompress Data management

emCompress is a compression system that is able to reduce the storage requirements of data to be embedded into an application. A compressed version of the data is stored in the flash memory of the target system. In the target, a small, fast decompressor can decompress the data on-the-fly, whenever it is required. The decompressor can decompress into RAM or send the output to an application defined function.


  • Highly efficient compression.
  • Small decompressor ROM footprint.
  • Fixed decompressor RAM use, chosen when compressing .
  • Wide range of codecs to choose from.
  • Automatic selection of best codec for each file.
  • Works with any operating system to accomplish a thread-safe environment.
  • Easy-to-understand and simple-to-use.
  • Simple to configure and integrate.
  • Royalty free.
Software only grows in one direction

With increasing complexity of today’s devices, customers expect firmware updates over the lifetime of a device. It’s important to be able to replace both firmware images and FPGA configuration bitstreams in the field. Typically, firmware upgrades and other static content grow in size over the lifetime of a device: features are added to software, not taken away, it’s just what happens. This is where emCompress can help. emCompress will compress your data so that it takes much less space on the target device. The decompressors are tiny in ROM, but the benefits of compression means you reclaim more space in your device for the features you’re trying to add. Because emCompress decompressors can be tailored for RAM use, you can decompress static content early in your application and not devote RAM to decompression buffers.

Typical example – Configuring an FPGA

For instance, configuring an FPGA is one of the first things that an application will do, decompressing a bitstream and sending it to the FPGA. In this case, a small decompression buffer can be held on the stack even though the compressed bitstream is hundreds of kilobytes in size: the temporary buffer is a known size that is configured at compression time, and that RAM is free for reuse the moment any decompression completes. emCompress enables microcontrollers with small internal flash memory to store FPGA image bitstreams which otherwise would require the system designer to use a bigger version of the microcontroller.

Decompressing and Processing Data

emCompress features two decompression functions. The first one is decompression into memory. The complete data is decompressed and stored in a user-provided memory buffer. Although the buffer can be temporary, this requires to have enough free memory for the complete uncompressed data and the workspace. Decompression into memory can for example be useful for dynamic firmware images. The second function is decompression in streamed mode. emCompress will use a small temporary buffer whose size is set by the user when compressing. Once a fragment of data is decompressed and the buffer is filled, the user-provided output function is called and the next buffer filled again with the next fragment. Streamed decompression is particularly effective for programming FPGAs or serving web content.

Performance and Memory Footprint

ROM use

The amount of ROM that emCompress uses for decompression varies with the codec selected between 0.5 kByte and 2.1 kByte. The total ROM requirement includes a single decoder, and all supporting functions, excluding integrity checks.

ROM use

The amount of RAM that emCompress uses is under complete control as it is specified at compression time. Typically, 2KB of temporary RAM for decompression yield good compression ratios, but even without temporary RAM, good compression ratios can be achieved in many cases. No static RAM is required, stack usage is well below 512 bytes.

Typical uses of emCompress

Compression has many fields of application. Static data that is not frequently used and or has exceptionally high compression rates are the prime target applications. Typical examples are the configuration bitstreams to program FPGA and CPLD devices, permanent files for embedded web server static content, firmware updates and the user interface messages for multiple languages.


emCrypt is a secure and efficient implementation of essential cryptographic algorithms specifically designed for embedded systems.

The Crypto-Library emCrypt provides the building blocks for today's secure protocols. Security has never been so important with the explosion of embedded devices that are now connected to the Internet. emCrypt has proven itself within SEGGER and is the foundation that emSSL, emSSH and emSecure-RSA, emSecure-ECDSA are built upon.

emCrypt-Cryptographical Library

  • Supports modern cryptography standards
  • NIST-validated implementations of many algorithms
  • Secure, fast, and cleanly-written code
  • Extensive 2,000 page manual covering all API features and functions
  • Decoupled implementation links only what you need
  • Public key cryptography (RSA, DSA, ECDSA, EdDSA)
  • Fast, tunable ciphers, hash algorithms, and message authentication codes (MACs)
  • Key derivation, key wrapping, key encapsulation
  • Random bit generation, cryptographically secure pseudo-random numbers


emFile is a file system for embedded applications which can be used on any media, for which you can provide basic hardware access functions. emFile is a high performance library that has been optimized for minimum memory consumption in RAM and ROM, high speed and versatility. It is written in ANSI C and can be used on any CPU.


  • MS DOS/MS Windows-compatible FAT12, FAT16 and FAT32 support, proprietary EFS file system.
  • Support for long file names.
  • Multiple device driver support.
  • Multiple media support. A device driver allows you to access different media at the same time.
  • Cache support. Improves the performance of the file system by keeping the last recently used sectors in RAM.
  • Works with any operating system to accomplish a thread-safe environment.
  • ANSI C stdio.h-like API for user applications.
  • Very simple device driver structure. emFile device drivers need only basic functions for reading and writing a block.
  • Optional NOR flash (EEPROM) driver. Any CFI-compliant NOR flash is supported. Wear levelling included.
  • Optional device driver for NAND flash devices. Very high read/write speeds. ECC and wear levelling included.
  • An optional device driver for MultiMedia & SD cards using SPI mode or card mode that can be easily integrated.
  • An optional IDE driver, which is also suitable for CompactFlash using either True IDE or Memory Mapped mode.
  • An optional proprietary file system (EFS) with native long file name support.
  • An optional journaling add-on. It protects the integrity of file system against unexpected resets.
  • NAND flash evaluation board available.
Device Drivers

emFile is designed to cooperate with any kind of embedded system and storage device. To use a specific medium with emFile, a device driver for that medium is required. The device driver consists of basic I/O functions for accessing the hardware and a global table, which holds pointers to these functions. If you need to use a proprietary storage device, you can write your own device driver. Currently the following device drivers are available: MultiMediaCard (MMC), Secure Digital (SD), RAM disk, Compact Flash, IDE, NOR flash, and NAND flash.

NOR/NAND Flashes

The Universal NAND flash driver works with all modern SLC and MLC NAND flashes. It can use the ECC engine built into NAND flashes to correct multi bit errors. The driver also works with SLC flashes which require 1-bit error correction and supports ATMEL’s DataFlashes. To enable the use of large NAND flash memories, the NAND flash driver allows block grouping to save memory required for administration of the memory blocks. The NOR flash driver can be used with any CFI compliant 16-bit chip. The Common Flash Memory Interface (CFI) is an open specification which may be implemented freely by flash memory vendors in their devices.

Wear Levelling

Wear levelling is supported by the NOR/NAND driver. Wear levelling makes sure that the number of erase cycles remains approximately equal for each sector, thus prolonging the life span of the whole flash memory. Maximum erase count difference is set to 5. This value specifies a maximum difference of erase counts for different physical sectors before the wear levelling uses the sector with the lowest erase count. In contrast to other products on the market, SEGGER’s emFile offers both static and dynamic wear levelling. In order to keep erase cycles on the same level for all sectors, static data is regularly moved around to different sectors.

MMC and SD Cards

MMC and SD cards can be accessed through two different modes: either SPI MODE or MMC/SD card mode. For both modes drivers are available. To use one of these drivers, you need to configure the MMC driver and provide basic I/O functions for accessing your card reader hardware.


The emFile Encryption add-on provides a simple way to encrypt individual files or the storage media as a whole. Encryption can be used with both available file systems – EFS and FAT. All storage types such as NAND, NOR, SD/MMC/CompactFlash cards are supported. To use encryption, only minor changes to the application program are required in order to select the encryption method and a password for volume or individual files.


Journaling is an additional component for emFile which sits above the file system and makes the file system layer failsafe. File systems without journaling support (for example, FAT) are not fail-safe. Journaling means that a file system logs all changes to a journal before committing them to the main file system. To prevent corruptions from unexpected interruptions, caused for example by a power failure, the Journaling Layer caches every write access to achieve an always consistent state of the file system.

Memory requirements*

Memory requirements depend on the used CPU, compiler, memory model, as well as on various other factors such as configuration switches and selected drivers.

ROM: app. 9-40 kb
RAM: app. 2 kb
* Precise values depend on the functionality used. Values are measured on a specific target system and will be different on other systems.

emLib – Data Integrity Check and Cryptographic Modules

emLib is a collection of software modules such as, cryptographic modules and data integrity checks for different purposes. It includes AES and DES encryption as well as CRC and ECC.

emLib is designed for portability to any device. The modules can be used in PC applications, as well as on embedded target devices.

emLib is optimized for speed performance and a small memory footprint. The sources are completely written in ANSI-C. Validation code for the APIs using standard test patterns is included.


  • emLib is written in ANSI-C and can be used on virtually any CPU
  • Easy to integrate by using a simple API
  • Same modules and same API can be used in PC programs as well as on embedded targets
  • Sample applications for tests and validation of the modules are included
  • Designed for any target and system


emLoad is a software for program updates for embedded applications via serial interface from a PC. The software consists of a Windows program and a program for the target application (bootloader) in source code form.

  • Portable to any CPU, any FLASH
  • Configurable
  • Optional password
  • 100 % save & fast: CRC-check implemented
  • Easy to use
  • Supports: Intel hex (.hex) and Motorola S (.mot) files

emModbus-Professional Modbus Protocol

emModbus, SEGGER's implementation of the Modbus protocol, supports communication via UART (ASCII, RTU), Ethernet (Modbus/TCP and Modbus/UDP), and is capable to communicate with any Modbus compliant device. emModbus supports building master and slave devices which can even be combined in the same product. Also, multiple interfaces in the same product are supported. Each interface can be configured at runtime, making it possible to build a pretested library to be deployed in multiple projects for embedded solutions.

The communication protocol Modbus for embedded systems.

Modbus is an open, mature, and straight forward communications protocol. It was originally published in 1979 by Modicon (Schneider Electric) and has since evolved into a standard communications protocol for industrial electronic devices. Modbus was specifically designed to be used in supervisory control and data acquisition systems, connecting a supervisory computer with several remote terminal units (RTU). It therefore uses a master-slave-technique in which one device, the master, initiates transactions (called queries).

Other devices, slaves respond by performing the action requested in the query and/or by supplying the requested data to the master.

emModbus-Modbus Stack
  • Easy to integrate
  • Low memory footprint
  • ANSI-C code is completely portable and runs on any target
  • Follows the SEGGER coding standards: Efficient and compact, yet easy to read, understand, and debug
  • Supports ASCII, RTU and Modbus/TCP (and UDP) protocol
  • Sample applications for all protocols included
  • Kernel abstraction layer: can be used with or without any RTOS
  • Works out-of-the-box with embOS
  • Modbus/TCP can be used with standard socket interface and any TCP/IP stack
  • Works out-of-the-box with embOS/IP
  • Project for executable on PC for Microsoft Visual Studio available



  • Alternative key generation schemes: RSA and ECDSA – Dual keys, privateand public make it 100% safe.
  • Hardware-independent, any CPU, no additional hardware needed.
  • High performance, small memory footprint.
  • Simple API, easy to integrate.
  • Applicable for new and existing products.
  • Complete package, key generator and tools included.
  • Drag-and-drop Sign And Verify application included.
  • Full source code.
  • Free ‘Sign & Verify’ Windows Version to Protect Personal Files.

In today’s world, protecting one’s reputation as a device manufacturer is more critical than ever before. No company wants to make headlines for the wrong reason. emSecure can help you in the fight against firmware hacking and device cloning.

Keep Customers Safe

emSecure is a software solution to securely authenticate digital assets, based on the concept of digital signatures. Deploying emSecure can help authenticate any plug-in card or attached device that contains a microprocessor capable of running emSecure. It is much simpler than digital certificates to implement and deploy, but offers the same level of protection and more flexibility. Critically, emSecure is not licensed on a per-device basis, lowering your costs for production runs.

Protect against Cloning

One important feature is that it protects an embedded device against the creation of a clone by simply copying hardware and firmware.

Indispensable for Critical Devices

And it can do much more, such as securing firmware updates for any kind of embedded device, licenses, serial numbers or other sensitive data. emSecure is therefore indispensable for critical devices such as election machines and payment terminals or any other tamper proof application in the industrial, automotive and health care market. Based on asymmetric encryption with two keys, it cannot be broken by reverse engineering.

Created for Embedded Systems

The source code has been created from scratch for embedded systems, to achieve highest portability with a small memory footprint and high performance. However, usage is not restricted to embedded systems, but includes for example PC, and smartphone apps.

Developer Friendly

It is licensed in the same way as other SEGGER middleware products and does not rely on any foreign code or code licensed under an open-source or even “viral” GPL-style license. With its easy usage, it takes less than half a day to add and integrate emSecure into an existing product.

Using emSecure is Easy

emSecure has a simple yet powerful API. It can be easily integrated into an existing application. The code is completely written in ANSI C and can be used platform- and controller-independent. Key pairs can be generated on a computer, as well as on any embedded system itself. The generated keys can be exported into different formats to be stored in the application code or loaded from a key file. This allows portability and exchangeability between different platforms.


Please include emSSH in the list above emSSL and direct the link to the following information on a new page. emSSH is a software library that enables secure login to your embedded system.

emSSH offers the possibility to establish a secured connection to any server application in your product. It can be used both target independent in native computer applications, as well as in embedded targets.

  • emSSH offers a wide range of options for maximum compatibility.
  • emSSH can be configured for minimal memory footprint for small memory systems.
  • emSSH is a high-quality product designed to be used easily but without limitations.
  • emSSH is not covered by an open-source or required-attribution license and can be integrated in any free, commercial, or proprietary product without the obligation to disclose the combined source.
  • emSSH is provided as source code and offers transparency for all included modules, allowing inspection by auditors.
  • emSSH is portable. The complete software is written in ANSI C and is compiler and target independent. It can be implemented in PC applications and in embedded designs.
  • emSSH is configurable. It is created for high performance and a low memory footprint. The library can be configured to fit any speed or size requirements. Unused features can be excluded, additional features can easily be added.



  • ISO/ANSI C source code
  • Supports USB 1.1 / 2.0 devices
  • Full/High Speed support
  • Bulk communication component with Windows kernel mode driver available
  • MSD component available
  • Virtual MSD works without file system
  • Sign & Verify drag-and-drop
  • FIPS specifications issued by NIST (FIPS 186-4)

emSSL is a SEGGER software library that enables secure connections across the Internet. emSSL offers both client and server capability. SSL/TLS is a musthave in nearly every application which is connected to the Internet. Products for IoT, smart grid or home automation markets benefit from securing their communication.

Suitable for Single-Chip Systems

The minimized RAM usage enables operation of emSSL on single-chip systems. a secure connection between browser and the web server requires only 7 KB of RAM. This way, even small embedded devices can establish secure connections.

Secured Connections

emSSL offers the possibility to establish a secured connection to any server application from your product. It can be used both target independent in native computer applications, and in embedded targets.

The emSSL Package

emSSL is a complete package and comes with everything needed to secure communication. It includes all modules to implement the required functionality to use SSL. They are provided in source code to allow complete control of the code used in the product and create transparency to avoid worries about possible back doors or weakness in code, which cannot be checked in precompiled libraries.

emSSL Makes it Easy

emSSL comes with a simple, yet powerful API to make using emSSL in your product as easy as possible. It also includes sample applications in binary and source code, which demonstrate how and when emSSL can be used in real life scenarios. For a list of included applications, see the chapters below.


emSSL is built for high performance with target independent code. It is completely written in ANSI-C and can be used in any embedded application, as well as in PC applications.


emSSL is created for high performance and a low memory footprint. The library can be configured to fit any speed or size requirements. Unused features can be excluded, additional features can easily be added.

Supported Cipher Suites

possible to create a minimal size configuration by not linking in unused algorithms. This is can be done by the compiler/linker automatically. With the included scan suites application it is possible to find out the required cipher suite(s) to connect to a server.

emUSB Device


  • 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.

emUSB Components

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.

MSD Component

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.

MTP Component

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.

CDC Component

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.

HID Component

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.

Printer Component

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.

emUSB Host

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.

emUSB Host

emUSB Host, 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 complies with the USB v1.1 and USB v2.0 specifications. It supports all transfer modes (control, bulk, interrupt) at low, full and high speed. USB pipe management and extended error recovery mechanisms that are required for reliable operation are implemented internally.


ISO/ANSI C source code

  • Low resource usage.
  • Alpha-Blending.
  • Anti-Aliased drawing.
  • Anti-Aliased fonts.
  • Auto double / triple buffering.
  • Multi-Language-Support with ASCII resource files.
  • Multi-Layer-Support.
  • Memory devices for flicker-free animation.
  • Free rotation and scaling.
  • Run-time-configurable drivers.
  • Start/test applications supplied.
  • No royalties.
  • Any 8/16/32-bit CPU; only an ANSI “C” compiler is required!.
  • Any (monochrome, grayscale or color) LCD with any controller supported(if the right driver is available).
  • May work without LCD controller on smaller displays .
  • Any interface supported using configuration macros .
  • Display-size configurable.
  • Characters and bitmaps may be written at any point on the LCD, not just on even-numbered byte addresses.
Attractive and useful display with reduced time and cost

One of the most challenging aspects of many development projects is designing an attractive and useful display. In addition to creating images that look exactly how you want them to appear, the implementation of windows techniques, complex drawing routines, different fonts and flicker-free updates are also expected. As part of a complex process which can take months or even years, the developer only has a short time available for the implementation of the display functionality. emWin, probably the most efficient and comprehensive embedded GUI available, helps developers beat their timelines and development costs. It is written in ANSI C and supports any b/w, gray-scale or color display. Drivers for all popular LCD controllers are available. All types of graphical displays (STN-LCD, TFT, CRT, OLED, Plasma, ...) are supported.

Drivers for Display Controllers

Run-time configurable drivers can be written for all types of displays and display controllers, including monochrome, gray-scale, passive and active color (TFT) displays. Drivers for all popular display controllers already exist.


The GUIBuilder gives developers and designers a comprehensive tool to create the initial framework of the user interface. The code generated by the GUIBuilder can be modified and read back into the GUIBuilder again which allows easier modifications even at a later stage of the user interface development.

Bitmap Converter

The Bitmap Converter can convert any bitmap into standard C code or into a binary format which can be located on any media and loaded at run-time. It supports palette conversion for palette based color modes as well as high color, true color or semi-transparent images as PNGs. For efficiency, bitmaps may also be saved without palette data and in compressed form.


A variety of fonts are shipped with the software. The default set of fonts includes quite small fonts up to fairly large fonts, mono spaced and proportional fonts, special digit fonts and framed fonts. Additional fonts can easily be generated from PC fonts using the Font Converter. Monotype and TrueType fonts support is available.

Font Converter

Font Converter is a Windows program that makes it easy to add new fonts to emWin. It can convert any installed PC font into a C file that can be compiled and linked with the application or the binary formats ".sif" and ".xbf", which can be loaded during runtime. Simply load a font which is installed on your system into the program, edit its appearance if necessary, and save it. The generated file can then be used by emWin and be shown on the display like any other standard emWin font.

Color Management

emWin features an integrated, very efficient color management system. This system allows conversion of logical colors (RGB format) into physical colors, which can be displayed at run time. As a result, your application does not need to be concerned the available colors, and displays can easily be interchanged.

Virtual Screen Support

The virtual screen feature supports display areas larger than the physical size of the display. It allows switching between different screens even on slow CPUs.

Window Manager/Widgets

The window manager allows the creation of windows of arbitrary size at any point of the display. It is an optional component, which is fully integrated into the software. Child windows and the exchange of messages between windows and their children/parents are supported. The window manager allows windows to be transparent and overlapping. Windows can freely move and resize. Additionally the window manager allows fading in and out. The window manager performs any necessary clipping. If callback routines are used, it also manages the redrawal of invalidated areas.

Touch Screen Support

emWin supports touch, gesture and multitouch events. The window manager deals with touch messages and widgets such as button objects. It takes only one line of code to create a button or another widget, which then handles touch messages and reacts accordingly. For resistive touch screens support is available as a driver for analog touch panels, which handles the analog input (from an AD-converter), debouncing and calibration of the touch screen is included.

sales enquiry button