Skip to main content
  • Products
  • Software evaluation
  • Downloads
  • Free utilities
  • Purchase
  • Silicon Vendors
  • Support
  • About us
  • Blog
  • Forum
  • Search
  • Jobs
  • Newsletter
  • Blog
  • Contact
  • Shop
  • emApps

    emApps

    Apps for embedded systems

    Contact us
    Downloads
    Documentation
    1. 1.Overview
    2. 2.Key features
      1. 2.1.Small app size
      2. 2.2.High performance
      3. 2.3.Sandboxing
      4. 2.4.Easy integration
    3. 3.Use cases
      1. 3.1.Flasher and production systems
      2. 3.2.Third-party app development
      3. 3.3.Safety-critical environments
      4. 3.4.Dynamic product customization
    4. 4.How to evaluate emApps
    5. 5.How emApps works
    6. 6.Additional features
      1. 6.1.Execution model
      2. 6.2.Target adaptation
      1. 6.3.API propagation
    7. 7.Resource usage
      1. 7.1.emApps executor size
      2. 7.2.App size examples
    8. 8.Performance and code density
    9. 9.Licensing
    10. 10.FAQ

    Overview

    The image contrasts two technologies: on the left, a modern chip with emApps transferring data, and on the right, an outdated phone without apps. The text emphasizes the advancements in functionality and application support in the new technology compared to the old.

    emApps is a revolutionary software package that brings the familiar flexibility of the smartphone to the world of embedded systems. As an alternative to fixed firmware, emApps introduces an application layer that allows new functionality to be added at any time without touching the validated core system.

    To accomplish this, emApps can create apps, which are small programs that can be dynamically loaded and executed in a protected environment known as a sandbox. Each app operates in its own memory space, the sandbox, isolated from the firmware and other apps.

    These apps enable the user to add new capabilities, features, or enhancements to embedded devices while keeping firmware small and maintaining system stability and security. They also make it possible for the manufacturer to run tests on such embedded systems using apps.

    Since the apps can be dynamically loaded, they do not increase the size of the firmware. Thus, any number of tests can be written and performed, including functionality and performance tests on the embedded system.

    App capabilities are defined by an API table in the firmware, giving a firmware developer full control over the exact functionalities available to them. It is even possible to grant different rights (API tables) to different apps running in a system.


    Key features

    A dark background filled with cascading vertical lines of binary code (0s and 1s) creates a digital, futuristic atmosphere. The pattern gives a sense of depth, resembling a virtual tunnel or data stream, enhancing themes of technology and information.

    Small app size

    Apps created with emApps are very small and start less than 100 bytes. The number of runtime functions is minimized, and only required functions are added to the build, meaning app size is optimized for use on low-memory systems.

    A dark background filled with cascading vertical lines of binary code (0s and 1s) creates a digital, futuristic atmosphere. The pattern gives a sense of depth, resembling a virtual tunnel or data stream, enhancing themes of technology and information.

    High performance

    Apps are executed on a virtual CPU specifically designed by SEGGER for this purpose. They are executed by a call to the emApps executor, which implements the instruction set. High code density (often more compact than ARM Thumb-2 or RISC-V code) and efficient instruction scheduling deliver high performance.

    A dark background filled with cascading vertical lines of binary code (0s and 1s) creates a digital, futuristic atmosphere. The pattern gives a sense of depth, resembling a virtual tunnel or data stream, enhancing themes of technology and information.

    Sandboxing

    Apps operate in their own memory space, fully sandboxed and isolated from the host program and other apps. Any illegal operations (such as access outside of app memory space) are detected, returning control to the caller. The only connection to the host is via the host provided API.

    A dark background filled with cascading vertical lines of binary code (0s and 1s) creates a digital, futuristic atmosphere. The pattern gives a sense of depth, resembling a virtual tunnel or data stream, enhancing themes of technology and information.

    Easy integration

    Integrating emApps into existing firmware is simple and easy. The entire host code (which is integrated in the firmware), consisting of the executor, loader and API service functions, is written in C.  The framework integrates smoothly into any existing firmware and supports any RTOS.

    Use cases

    Apps can be used to dynamically extend a host’s capabilities or to enable customization by manufacturers, OEMs, and end customers. Use cases include test apps, communication (web server, customization), automation, and many more.

    Flasher and production systems

    Apps can implement flash programming routines, custom test logic, or communication protocols without modifying the device firmware.

    An illustrated conveyor belt features two containers with digital screens above displaying various icons. On the right, a machine with a monitor connects to the conveyor, suggesting a technological process or automation system. The image conveys themes of industry and innovation.
    An illustration depicting two simplified figures representing people, alongside a geometric shape symbolizing data or information. Small squares surrounding the central shape suggest digital interaction or processing, conveying themes of collaboration and technology.

    Third-party app development

    A development kit can be provided to external partners. Apps can be created independently and deployed securely thanks to sandboxing.

    Safety-critical environments

    Non-essential features — such as GUI control or display logic — can be isolated as apps and excluded from certification scope.

    An abstract graphic depicting a central white cube surrounded by a glowing circular outline. Four smaller blue squares are positioned around it, connected by dotted lines. The background is a gradient of dark gray, enhancing the focus on the central cube and its surrounding elements.
    A blue, square device sits at the center, displaying a light blue square on top. Above it are three illuminated icons representing communication, settings, and Wi-Fi connectivity, all connected by dotted lines, illustrating interaction and functionality. The background is dark.

    Dynamic product customization

    Apps allow feature expansions in the field, supporting new languages, new algorithms, or additional connectivity standards.


    How to evaluate emApps

    A PC trial version is available for download. It includes various pre-built apps along with their source code. All included apps can be run on a PC as well as on a Flasher, allowing testing in a real embedded system. To create apps for the trial version, an online version of the S32 compiler is available.

    Online S32 compiler


    How emApps works

    emApps consists of a PC development environment with a compiler for creating apps, as well as source code for host integration. Also included is a PC-based executor for running, testing, tracing, and even profiling apps on a desktop.

    emApps adds a minimal runtime engine — the executor — into the firmware. This tiny component (~1 KB) acts as a virtual CPU that executes applications and manages their interaction with the embedded system. Apps are statically or dynamically linked and can be downloaded at any point in the device lifecycle.

    Each application runs inside a dedicated memory space. The firmware assigns memory to the app only for the duration of execution. Any attempt to access memory outside this space is intercepted by the executor, which immediately returns control to the firmware. System stability and safety remain intact at all times.

    The executor and its API together form a complete architecture for application management. Instead of assembling low-level components or configuring memory protection manually, the framework delivers a finished and scalable structure — a ready-to-use engine, instead of a box of parts. While similar goals can be attempted using standard RTOS mechanisms or an MPU, such solutions remain complex to configure and maintain. They provide isolation but not modularity, and they do not enable dynamic loading or field-based updates. emApps solves all of that in one integrated model.


    Additional features

    A dark background filled with cascading vertical lines of binary code (0s and 1s) creates a digital, futuristic atmosphere. The pattern gives a sense of depth, resembling a virtual tunnel or data stream, enhancing themes of technology and information.

    Execution model

    Multiple apps can run under RTOS control, even in parallel. Apps can be statically or dynamically linked and downloaded at any time.

    A dark background filled with cascading vertical lines of binary code (0s and 1s) creates a digital, futuristic atmosphere. The pattern gives a sense of depth, resembling a virtual tunnel or data stream, enhancing themes of technology and information.

    Target adaptation

    With target adaptation, apps gain visibility if native functions are available in firmware or if they need to use S32-coded functions. With this feature, when running an app on different targets, the targets will use the best-performing functions, depending on the platform they are executed on.

    API propagation

    When an app is loaded with emApps, it receives a list of API functions, that are available on the executor the app is running with. If the app requires API functions, that are not available, it will not start. 

    The API table needs to be coded into the executor to define the handling of specific function calls.

    emApps Manual on running applications.

    Below is a code excerpt of an API table:

    static const S32_SERVICE_BINDING _aServices[] = {
      { "printf",         S32_API_C_printf       },
      { "__S32_idiv",     S32_API_S32_idiv       },
      { "__S32_udiv",     S32_API_S32_udiv       },
      { "UTIL_MulDiv",    S32_API_General_MulDiv },
      { "SYS_GetTime_ms", _SYS_GetTime_ms        },
    };

    Resource usage

    Memory usage of emApps adds the emApps executor requirements and the size of the app itself including stack size. The stack usage is typically less than 256 bytes.

    The apps, which are held and executed in RAM, are very small, starting at less than 100 bytes. There is no upper limit on the complexity these apps can have, hence the maximum program size.

    emApps executor size

    The emApps executor does not require static RAM.

    • Static code (ROM) requirement: ~2.5k bytes;
      does not include provided services (API calls)
    • Dynamic RAM requirement: 102 bytes per S32 context

    The software also comes with an assembly optimized executor for Arm cores, which is even smaller.

    App size examples

    Some example app code sizes: 

    • Hello World:  44 bytes total runtime image size (including 8 bytes stack)
    • Dhrystone: 12548 bytes total runtime image size (including 512 bytes stack)

    This means emApps is suitable even for compact MCUs with just 64 KB of flash memory.


    Performance and code density

    The virtual instruction set is highly efficient. Fewer instructions are required, and execution remains close to native speed — even for compute-intensive tasks. Overall app performance depends on the speed of the CPU the executor is running on and on the instructions used.

    The emApps executor’s performance translates into 18 host-system instructions (or clocks) per virtual S32 instruction (CPI). Depending on the instructions calling internal operations, firmware operations, or hardware (which is often the case for CPU or compute-intense code), the CPI ratio can further improve. Finally, the S32 instruction-code density is usually better than the host system's code density, which further improves performance.


    A dark background filled with cascading vertical lines of binary code (0s and 1s) creates a digital, futuristic atmosphere. The pattern gives a sense of depth, resembling a virtual tunnel or data stream, enhancing themes of technology and information.

    Licensing

    The software is available under various embedded software license models and can be delivered as source code. All commercial licenses are based on a one-time payment, are royalty-free, and include six months of updates and support from SEGGER’s Embedded Experts.

    There are no subscription fees, ensuring predictable and fixed costs over the entire product lifetime.

    For non-commercial use, evaluation, and educational purposes, the software is provided under SEGGER’s Friendly License.

    More information

    FAQ

    What is the main benefit of emApps?

    emApps transforms static firmware into a dynamic, extensible application platform.

    Does it require specific hardware?

    No. emApps runs on small and resource-limited microcontrollers — starting at 64 KB of flash memory.

    How are apps added?

    Apps can be downloaded and executed without modifying the existing firmware.

    Can multiple apps run simultaneously?

    Yes. Multiple apps can be executed simultaneously in a system that has multiple CPU cores or is RTOS based, and they can have multiple entry points and serve as libraries, similar to DLLs.  Multiple apps operate in parallel and remain isolated.

    How is the emApps architecture fundamentally different from a container, and what makes it viable on a microcontroller where a technology like Docker could never run?

    It’s fundamentally about efficiency. A container like Docker requires a full operating system and massive resources. emApps is built for resource-constrained microcontrollers. Our executor engine is incredibly small—around 1 KB. It provides the modularity and virtualization of a container, but in a footprint that can actually run on the smallest of devices.

    For a hard real-time system controlling a motor, how can you guarantee deterministic performance?

    We would recommend keeping your hard real-time loops, like a motor controller, in your core, native firmware. emApps is ideal for separating your non-critical tasks or an analytics app — from that core logic.

    Does emApps have a proven track record?

    Absolutely! SEGGER has been using them in our J-Link and Flasher product lines for years.

    Can emApps be used for applications other than embedded systems?

    Sure. Host systems can range from small, microcontroller-based embedded systems to full desktop applications. 

    Can my customers write their own apps for my product?

    Yes, if you want to open up the system for your customers.

    Can I make sure only authentic apps can execute in my product?

    Yes, if that is what you want, you can do it. All it takes is a signature check.

    Get in touch with us

    Have questions or need assistance? Our Embedded Experts are here to help!

    Reach out to us for:

    • Licensing quotes
    • Technical inquiries
    • Project support

     

    Contact us

    • User manual
    • Online documentation
    • Download for evaluation
    • Update notification
    • Pricing
    • Support
    • Silicon vendor resources

    Headquarters

    SEGGER Microcontroller GmbH

    Ecolab-Allee 5
    40789 Monheim am Rhein, Germany
    info@segger.com
    Tel.: +49-2173-99312-0
    Fax: +49-2173-99312-28

    Locations

    USA: SEGGER Microcontroller Systems LLC

    Boston area
    101 Suffolk Lane
    Gardner, MA 01440, USA
    us-east@segger.com
    Tel.: +1-978-874-0299
    Fax: +1-978-874-0599

    Silicon Valley
    Milpitas, CA 95035, USA
    us-west@segger.com
    Tel.: +1-408-767-4068

    China: SEGGER Microcontroller China Co., Ltd.

    Room 218, Block A, Dahongqiaoguoji
    No. 133 Xiulian Road
    Minhang District, Shanghai 201199, China
    china@segger.com
    Tel.: +86-133-619-907-60

    ISO 9001 certified

    ISO 9001

    30+ years of experience

    First-class embedded software tools since 1992
    • Imprint
    • Disclaimer
    • Code of Conduct
    • Privacy Policy
    © 2026 SEGGER - All rights reserved.