Embedded applications often need smartphone-like flexibility, making app integration a natural next step. But what can embedded apps achieve, what requirements must they meet, and how do they work technically?
Smartphone apps unlock a whole new range of possibilities, but embedded systems need tailored functionality. Apps adapt embedded devices for various deployment cases and enable custom branding without compromising core system integrity.
Apps for embedded systems?
Embedded systems operate under strict resource constraints, unlike smartphones with abundant memory and processing power. While downloadable apps bring proven flexibility to smartphones, bringing them to embedded systems requires balancing security risks, performance and system isolation.
A paradigm shift
Traditional embedded firmware requires rebuilding and requalifying the entire image for any change. Apps modularise functionality, enabling manufacturers to add or update features independently – improving maintainability, simplifying extensibility, and shortening development cycles.
What overhead do apps introduce?
Apps require execution memory, making efficient languages essential to minimise resource use via code density. Tailoring APIs to specific applications further reduces performance overhead, allowing app execution even on resource-constrained devices.
How secure are apps?
Beyond enabling flexible expansion, security is critical. Apps must be isolated from the system to prevent malicious entry and ensure interactions stay within safe, predefined boundaries.
Two key mechanisms are required: execution within a virtual environment and strict monitoring of a predefined API. This introduces additional resources and performance overhead, but the impact remains relatively small. With SEGGER’s emApps, for example, the virtual CPU requires only about 2.5KB of memory. Its instruction set has been designed to provide compact applications while maximising execution performance.
What about performance?
Virtual execution environments introduce overhead compared to native code, but an optimised instruction set minimises the impact. For time-critical operations, API offload heavy computations – like cryptography or graphics – to native hardware, accelerating while maintaining system integrity. The most recent version of emApps even adds a native code generator for Arm’s Thumb-2 instruction set, further reducing the performance overhead.
What is emApps?
The emApps platform enables developers to create downloadable applications securely isolated from the main system through sandboxing and integrating into embedded products.
emApps is a framework for creating and executing small, portable applications for embedded systems with strong isolation. Developers, and even end users, can write applications in C that access a controlled API defined by the firmware. The device manufacturer decides how applications are deployed and which permissions they receive. For example, access to the file system can be restricted to read-only operations.
At the core is emApps Executor, requiring only about 2.5KB of memory. Applications execute inside a virtual processor separated from the host system, while the available API is defined by the host firmware.
Current applications
In addition to customer projects, SEGGER uses apps internally in a variety of tasks.
One example is the Flasher family of stand-alone programming devices. As support for target devices grew, storing every flash loader directly inside the programmer was impractical. This challenge led to the development of emApps. Today, parts of the flash loader with the corresponding configuration are loaded as apps, supporting more than 26,000 target devices.
SEGGER uses apps in its automated regression test farm, performing tasks such as benchmark measurements using memory copy loops.
In production environments, apps are downloaded as dedicated test applications to target hardware, allowing self-tests to be executed directly on the device and improving production quality.
Another application area is OEM branding. Manufacturers can customize devices by integrating branding modules as apps while predefined interfaces ensure the integrity of the underlying firmware.
Outlook
As embedded systems evolve, flexible software architectures are essential. Embedded apps provide an ‘app-store moment’ – enabling modular feature extensions without compromising stability. Flexibility can extend product lifecycles, simplify maintenance, and reduce long-term development costs.
Anyone interested in experimenting with emApps can find an Executor for running apps on a PC, together with sample applications and example source code, at: https://www.segger.com/products/virtualization/emapps/compiler/?mtm_campaign=elecronicspecifier&mtm_kwd=emapps