Building a firmware with MicroEJ deliveries

EDIT 2020-09-28T22:00:00Z: there is a more recent version of this article here Understand How to Build a Firmware and its Dependencies — MicroEJ Documentation

In the following post, we assume:

A MicroEJ firmware is built from several input resources and tools. Each resource and tool has a specific version that must be carefully respected in order to build a firmware.

  1. The MicroEJ SDK IDE [.exe or .zip].

  2. A MEJ32 architecture [.xpf, .xpfp]: the runtime port to a target instruction set (ISA) and a C compiler (CC) and MicroEJ Foundation Libraries.

    • The MEJ32 architectures are distributed into 2 formats:
      • EVAL: evaluation license with runtime limitations (explained in SDK developer guide).
      • DEV: production license (these versions are only distributed by MicroEJ sales & Customer Care team).
    • The list of supported MEJ32 architectures can be found here MicroEJ Developer - Embedded Runtime Architectures & Implementations. - The MEJ32 architecture is either provided from:
      • the /platformArchitecture folder in a MicroEJ platform reference implementation (downloaded from
      • MicroEJ sales or customer care team.
      • For DEV license only: SDK license site (MyProduct->Download additional products will list the downloads available for your account).
    • Must be imported in SDK with:
      • FileImport…
      • MicroEJPlatform, Virtual devices and Architectures
      • Select directoryBrowse…, choose x/platformArchitecture/ > OK
      • Accept the license (Check the I agree... box)
      • Finish.
  3. A MicroEJ platform source (.zip).

    • This package includes:
      • the build of a C board support package (BSP, with or without RTOS),
      • a MEJ32 Architecture,
      • the adaptation layers (ADLAs),
      • the MicroEJ Simulator and its associated MicroEJ Mocks.
    • The zip files contains:
      • <platform>-configuration: The configuration of the MicroEJ Platform
      • <platform>-bsp: The C code for the board-specific files (drivers).
        Must be compiled with a compiler.
      • <platform>-fp: Front panel mockup for the simulator.

    To generate the platform:

    • In the <platform>-configuration:
      open the .platform file and verify the correct MEJ32 architecture is used
      (see Content view).
    • Click on Build Platform.
      This action generates a <platform>-<ISA>-<CC>-<VERSION> folder that contains the platform runtime library (microejruntime.lib).
      This library is usually directly linked from the <platform>-bsp project (no manual action to do after the build).
    • Follow the README instructions inside the platform .zip.
  4. A Java application project (.zip).
    This Java project can be configured (in the Run configurations ... properties):

    • to either run on:
      • a simulator (computer desktop),
      • a device (actual embedded hardware).
    • to setup:
      • memory (example: Java heap, Java stack),
      • foundation libraries,
      • etc…

    This project is compiled against (and optimized for) a specific MicroEJ SDK platform:

    • Generates a microejapp.o (native object code) that is usually directly linked from the <platform>-bsp project (no manual action to do after the build).
    • Go in:
      • RunRun configurations
      • select the provided MicroEJ Application launchers
      • click on Run
    • Must be imported in SDK with: File > Import… > General > Existing Projects into Workspace > Select archive file > Browse…, choose and Finish import.
  5. An Ivy repository.

    • MicroEJ Central Repository: an online repository of software artifacts (libraries, tools, …), see
    • (Optional) Can be extended with an offline repository (.zip) that can be imported in the workspace:
      • Unzip the file.
      • Open MicroEJ SDK.
      • Go to Window > Preferences > Ivy > Settings.
      • Configure the Ivy settings path by clicking the File System... button.
      • Select the ivysettings.xml file available in the directory where you have previously unzipped the file.
  6. A C compiler (GCC, KEIL, IAR, …).

    • Used to compile and link the following files into the final firmware (binary, hex, elf, … that will be programmed on the hardware):
      • the microejapp.o (application),
      • the microejruntime.lib or microejruntime.a (platform),
      • the BSP C files (drivers).


If any questions, feel free to contact our support team with the following information (the table below is filled with examples)

Delivery Name
MicroEJ SDK 4.1.5
Platform 1.0.0
Application 1.0.0
Ivy Repository
C compiler KEIL 5.25
1 Like