ess logo  
  Events & Promos  


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.


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.


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.

  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.


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