Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
MicroEJ®
Product Line Overview
Copyright IS2T S.A. 2016
Reference: TLT-0752-MICROEJ-PRODUCT-OVERVIEW
Product Version: 4.0
Document Revision: Jun-16
Classification: PUBLIC
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 2/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
Confidentiality & Intellectual Property
All rights reserved. Information, technical data and tutorials contained in this document are
proprietary under copyright Law of Industrial Smart Software Technology (IS2T S.A.) operating
under the brand name MicroEJ®. Without written permission from IS2T S.A., copying or
sending parts of the document or the entire document by any means to third parties is not
permitted. Granted authorizations for using parts of the document or the entire document do
not mean IS2T S.A. gives public full access rights.
The information contained herein is not warranted to be error-free.
IS2T® and MicroEJ® and all relative logos are trademarks or registered trademarks of IS2T
S.A. in France and other Countries.
Java™ is Sun Microsystems’ trademark for a technology for developing application software
and deploying it in cross-platform, networked environments. When it is used in this site without
adding the “™” symbol, it includes implementations of the technology by companies other than
Sun. Java™, all Java-based marks and all related logos are trademarks or registered
trademarks of Sun Microsystems Inc., in the United States and other Countries.
Other trademarks are proprietary of their respective owners.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 3/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
Contents
1 MicroEJ® Product Line ....................................................................................... 6
2 Development Workflows .................................................................................... 7
3 MicroEJ SDK ....................................................................................................... 8
3.1 MicroEJ SDK components ....................................................................................... 8
3.2 MicroEJ OS ............................................................................................................. 8
3.3 MicroEJ OS Core ................................................................................................... 10
3.3.1 Secure Multi-Application Engine ..................................................................... 10
3.3.2 RTOS Integration ............................................................................................ 10
3.3.3 Memory Management ..................................................................................... 11
3.3.4 CPU & Power Management ............................................................................ 11
3.3.5 External Resources Loading ........................................................................... 11
3.3.6 Java-to-C Language Interface ........................................................................ 11
3.3.7 Utilities & Test ................................................................................................. 12
3.3.8 Components Management .............................................................................. 13
3.4 MicroEJ OS Libraries ............................................................................................. 14
3.4.1 IO ................................................................................................................... 14
3.4.2 NUM* .............................................................................................................. 14
3.4.3 FILE & DATA .................................................................................................. 15
3.4.4 COMM ............................................................................................................ 15
3.4.5 NET & SEC .................................................................................................... 15
3.4.6 IoT .................................................................................................................. 16
3.4.7 GUI ................................................................................................................. 16
3.4.8 STORE ........................................................................................................... 17
3.5 MicroEJ Workbench ............................................................................................... 18
3.5.1 MicroEJ SDK Toolset ...................................................................................... 18
3.5.2 MicroEJ Workbench IDE ................................................................................. 18
3.5.3 MicroEJ Application Designer ......................................................................... 18
3.5.4 MicroEJ Simulator .......................................................................................... 19
3.5.5 MicroEJ OS Builder ........................................................................................ 20
3.5.6 MicroEJ Virtual Device Builder ........................................................................ 20
4 MicroEJ Firmware ............................................................................................. 21
4.1 Firmware architecture ............................................................................................ 21
4.2 Firmware build flow ................................................................................................ 22
5 MicroEJ Studio .................................................................................................. 23
6 MicroEJ Store .................................................................................................... 24
6.1 Store cloud-based services .................................................................................... 24
6.2 Store deployment .................................................................................................. 25
6.3 User accounts ........................................................................................................ 25
6.4 App publishing ....................................................................................................... 26
6.5 App downloading ................................................................................................... 26
6.6 Server architecture ................................................................................................ 27
6.6.1 Server backend and frontend .......................................................................... 27
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 4/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
6.6.2 Server components......................................................................................... 27
6.7 Security ................................................................................................................. 28
7 MicroEJ Virtual Device ..................................................................................... 29
8 OS API Specifications ...................................................................................... 30
8.1 Foundation libraries ............................................................................................... 31
8.2 Add-on libraries ..................................................................................................... 33
9 Resources ......................................................................................................... 34
10 System Requirements ...................................................................................... 36
10.1 Target hardware .................................................................................................... 36
10.1.1 Supported architectures .................................................................................. 36
10.1.2 Supported platforms ....................................................................................... 36
10.1.3 Supported BSP, RTOS, toolchains and libraries ............................................. 36
10.2 Development host .................................................................................................. 37
10.3 Cloud server .......................................................................................................... 37
11 Products Packaging ......................................................................................... 38
12 Products Licensing .......................................................................................... 39
12.1 MicroEJ Studio ...................................................................................................... 39
12.2 MicroEJ SDK ......................................................................................................... 39
12.3 MicroEJ Store ........................................................................................................ 40
Figures
Figure 1: Single-app development flow .................................................................................. 7
Figure 2: Multi-app development flow .................................................................................... 7
Figure 3: MicroEJ SDK components ...................................................................................... 8
Figure 4: MicroEJ OS components in multi-app mode ........................................................... 9
Figure 5: MicroEJ OS components in single-app mode .......................................................... 9
Figure 6: "Green thread" implementation of MicroEJ ............................................................ 10
Figure 7: MicroEJ Java-to-C interfaces ................................................................................ 11
Figure 8: "Shielded Plug" mechanism .................................................................................. 12
Figure 9: MicroEJ OS sandboxing environment ................................................................... 13
Figure 10: MicroEJ app execution on simulator .................................................................... 19
Figure 11: MicroEJ firmware architecture ............................................................................. 21
Figure 12: MicroEJ firmware build flow ................................................................................ 22
Figure 13: MicroEJ Studio and Virtual Device components .................................................. 23
Figure 14: MicroEJ app publication and download from MicroEJ Store ................................ 24
Figure 15: Public and private cloud deployment of MicroEJ Store ........................................ 25
Figure 16: MicroEJ Store server components ...................................................................... 27
Figure 17: MicroEJ Virtual Device architecture ..................................................................... 29
Figure 18: MicroEJ SDK Resources Map ............................................................................. 34
Figure 19: MicroEJ Studio Resources Map .......................................................................... 35
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 5/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
Tables
Table 1: Standalone and Sandboxed apps on MicroEJ OS configurations ............................. 7
Table 2: MicroEJ OS API specifications ............................................................................... 30
Table 3: MicroEJ foundation libraries ................................................................................... 31
Table 4: MicroEJ add-on libraries......................................................................................... 33
Table 5: Platform configurations supported off-the-shelf ...................................................... 36
Table 6: MicroEJ SDK and MicroEJ Studio constituents ...................................................... 38
Table 7: MicroEJ SDK licensing ........................................................................................... 39
Table 8: MicroEJ Store licensing .......................................................................................... 40
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 6/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
1 MICROEJ® PRODUCT LINE The MicroEJ product line offers profitable IoT solutions to OEMs, application developers and service
providers for:
- Device software development at lower cost and effort
- Application development and deployment for generating extra revenue streams with services
and data
MicroEJ solutions enable delivery of user experience and business models similar to mobile Internet
(smartphones and tablets) for embedded devices with strong cost constraints and strict resource
limitations (processor performance, RAM and flash memory footprint, low-power).
MicroEJ solutions also combine the techniques, methods and tools that drove the PC and mobile Internet
software industry, with the complex technical foundations of embedded systems (fragmented processor
architectures and diverse hardware-dependent software).
MicroEJ OS is a scalable operating system for resource-constrained embedded, IoT and wearable
devices. It is optimized for the wide range of IoT hardware architectures and enables device
manufacturers to deliver differentiating firmware using MicroEJ Workbench tools. MicroEJ
Workbench and MicroEJ OS are delivered as part of the MicroEJ SDK.
MicroEJ Studio allows application developers to write applications and publish them to a MicroEJ
Store from which they can be downloaded by owners/users of MicroEJ-ready devices (i.e., devices
running MicroEJ OS).
With MicroEJ solutions, OEMs use proven methods that cut software development time and cost. They
create software that delivers incredible user experience and adjusts to the needs of Internet business.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 7/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
2 DEVELOPMENT WORKFLOWS Developers can adopt a simple development flow to build a single standalone C/C++/Java application
linked to the MicroEJ OS using the MicroEJ SDK as shown in Figure 1.
Figure 1: Single-app development flow
However, developers who want to offer the ability to download apps from an online MicroEJ Store need
to adopt a multi-app development workflow, outlined in Figure 2. In this flow, the MicroEJ OS needs
to be configured to enable the multi-app mode (called “Wadapps”, also referred to as sandboxing) and
MicroEJ applications need to be written against specific rules and APIs. A Java program written for a
single-app MicroEJ OS may not run in multi-app mode.
The single-app/multi-app choice has to be made by device developers at the beginning of the project.
MicroEJ apps published to a MicroEJ Store can be developed using the free MicroEJ Studio.
Figure 2: Multi-app development flow
An application statically linked to MicroEJ OS is called a resident application. An application
dynamically linked to MicroEJ OS is called a downloaded application. An application running on multi-
app MicroEJ OS configuration is called a sandboxed app.
Standalone MicroEJ App Sandboxed MicroEJ App
Single-app MicroEJ OS Resident N/A
Multi-app MicroEJ OS N/A Resident and/or downloaded
Table 1: Standalone and Sandboxed apps on MicroEJ OS configurations
In all cases, developers have to build a platform for their target hardware (they can also build it for their
simulated hardware) upon which applications can be developed and integrated. A platform includes the
board support package (BSP), MicroEJ OS Core and Libraries.
MicroEJ SDK
• Platform development
• App development
Standalone Application
MicroEJ OS+ Libraries
+ BSPPla
tfo
rm
ExecutableBinary
ProgramAp
p
MonolithicMicroEJ
Firmware
MonolithicMicroEJ
Firmware
Link
MicroEJ Studio
• App development
MicroEJ SDK
• Firmware development
MicroEJ OS+ Libraries
+ BSPPla
tfo
rm
App App App
MicroEJFirmware
MicroEJFirmware
App App
App App App
Sandboxed App binaries(built for a specific firmware)
Deployment to
Infrastructure
Program
DynamicLoad & Install
Resident App
MicroEJFirmware
Link
MicroEJ Store
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 8/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
3 MICROEJ SDK
3.1 MicroEJ SDK components
MicroEJ SDK provides a scalable OS and tools built on Eclipse to develop software for embedded,
IoT, and wearable devices. MicroEJ Workbench allows firmware developers to integrate, configure,
and build an embedded MicroEJ OS to run mixed Java and C/C++ software applications on their device.
Figure 3: MicroEJ SDK components
MicroEJ Workbench runs on the device software developer’s host and includes various tools.
MicroEJ OS runs on the embedded target, i.e., the IoT “thing” or embedded device. The OS provides
a hardware-independent Core layer built upon a hardware-dependent board support package (BSP). The
OS also provides a rich set of Libraries with a high-level Java API upon which applications can be
built. Resident applications are built in the firmware that is flashed to devices, as opposed to applications
that can be downloaded from a MicroEJ Store and dynamically run. Any legacy C or C++ code also can
be linked to the MicroEJ OS if needed.
3.2 MicroEJ OS MicroEJ Operating System (OS) is a scalable OS for resource-constrained devices running on 32-bit
embedded microcontrollers (MCU) or microprocessors (MPU). MicroEJ OS allows devices to run
multiple and mixed Java and C/C++ software applications.
MicroEJ OS is delivered as part of the MicroEJ SDK.
MicroEJ OS is optimized for low power, footprint and performance. The OS engine is very compact
(from 30 KB ROM footprint, 1.5 KB RAM) and OS services can be built to match hardware capabilities
and software needs.
MicroEJ OS provides a fully configurable set of services through scalable components as shown in
Figure 4.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 9/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
Figure 4: MicroEJ OS components in multi-app mode
MicroEJ OS can also be configured for simpler single-app execution mode as described in Figure 5.
Figure 5: MicroEJ OS components in single-app mode
For full details of the MicroEJ API specifications and packages included in each library category, please
refer to the section: OS API Specifications.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 10/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
3.3 MicroEJ OS Core
3.3.1 Secure Multi-Application Engine
MicroEJ OS Core provides a secure engine that can run multiple applications but can also be
configured for running a single standalone application.
It is based on an optimized and compact Java virtual machine running its own compact hardware-
independent code, so applications can be binary portable across the variety of embedded processor
architectures and do not depend on a particular C/C++ compiler. The MicroEJ virtual machine is
optimized for performance and for footprint: from 30 KB of ROM/flash. The MicroEJ virtual machine
performs runtime checks and exception handling well-known by Java developers for easy application
robustness and debug.
3.3.2 RTOS Integration
The MicroEJ OS Core can run on “bare metal” hardware or on top of any underlying real-time operating
system (RTOS) such as FreeRTOS, Micrium µC/OS, Express Logic ThreadX, SEGGER embOS, and
others.
Java threads are managed by the MicroEJ virtual machine predictive scheduler – which itself is a thread
of the underlying RTOS in cases where MicroEJ OS runs on an RTOS, as illustrated in Figure 6. This
implementation of Java threads running in one native RTOS thread is referred to as “green thread.”
Figure 6: "Green thread" implementation of MicroEJ
RTOS
Native tasks (C/ASM)
1x native task(Java language)
GUI hardwareLCD, buttons, …
Applicative hardwareSensors, actuators, …
Java
th
read
s Shielded Plug (SP)
Simple Native Interface (SNI)
SPSNI
SPSNI
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 11/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
3.3.3 Memory Management
MicroEJ Core OS provides a smart RAM optimizer (known as “garbage collector” or gc) for the
management of Java objects so there are no memory leaks or rogue pointers, and no memory
fragmentation.
MicroEJ OS also uses a shared C-Java heap for immortal objects (fixed address, untouched by gc) that
allow zero copy buffers and are compatible with DMA systems.
MicroEJ OS manages static persistent objects in flash called immutable objects.
3.3.4 CPU & Power Management
MicroEJ OS controls the CPU allocation per application to ensure quality of service. It manages app
permissions to access system resources in order to enforce security policies.
MicroEJ OS can run on top of a small kernel (RTOS) in a native kernel task. When MicroEJ OS has
nothing to do, the kernel just goes into its idle mode and the device can use the deepest low-power mode.
Basic events can wake up the system (e.g., touch, RTC timer, timer, RTOS tick) and the kernel can
decide to give the CPU back to MicroEJ OS task. MicroEJ OS reference implementations are mostly
based on DMA operations rather than CPU operations (so CPU can enter sleep modes or do something
else).
3.3.5 External Resources Loading
MicroEJ OS provides Java applications access to read-only data resources. These resources are
identified by a path as in a filesystem. The external resource loader can access the resources stored
outside the CPU address space range (storage media such as SD card, serial NOR flash, EEPROM).
3.3.6 Java-to-C Language Interface
SNI™
MicroEJ OS core provides an efficient Java-to-C native interface called “Simple Native Interface”
(SNI™) so integration of legacy C/C++ code to MicroEJ OS or applications is optimal as shown in
Figure 7.
Figure 7: MicroEJ Java-to-C interfaces
SNI enables calling a C function from a Java program. SNI calling is straightforward: it is based on a
defined naming convention. Allowed arguments are base types (int, float, double, char). Java and C
T
I
M
E
Immortals
Javaheap
Cheap
Java methods
C functions
Call C
Return to JavaT
I
M
E
Immortals
Java methods
C functions
Javaheap
Cheap
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 12/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
programs also can share arrays of base types as immortals (living in a separate heap at a fixed address,
untouched by the gc). The size of the immortal space is specified by designers. SNI allows the use of
immortal arrays of a base type as parameters. This permits the sharing of buffers between Java and C
code, allowing a zero copy strategy between the two worlds. The immortals heap also allows DMA to
share Java data with hardware peripherals.
Shielded Plug®
The “Shielded Plug®” is another way for Java and C programs to communicate using a publish/subscribe
protocol, as shown in Figure 8. Shielded Plug allows spatial and temporal decoupling of programs and
is ideal to add Java tasks on top of a legacy C program. Shielded Plug provides a full segregation of the
processes (producers versus consumers), which can be written in either C or Java language. A small
database shared between the two worlds (i.e., the Shielded Plug data buffers) allows developers to be
notified when the content of a buffer changes or is re-initialized. Testing the presence of data in data
buffers and mechanisms for serialization and de-serialization of objects/structs is also supported. A
typical use of Shielded Plug is related to graphical user interface (GUI) integration within legacy
application logic. Both application logic and the whole GUI communicate only by exchanging data
through Shielded Plug.
Figure 8: "Shielded Plug" mechanism
3.3.7 Utilities & Test
Additional utilities, logger, and localization features are available to ease application development.
National Language Support (NLS) provides a small but efficient API to handle multi-language
applications that rely on unicode strings and fonts. Checkhelper provides means to write unit tests.
Combined with the test suite engine, it allows validation of any developments. The test-suite engine
produces JUnit compatible reports and can be integrated into a continuous integration (CI) system.
A harness allows hardware-in-the-loop (HIL) testing. When the code is run on the simulator instead of
the real hardware, the microcontroller is replaced by the developer's workstation. All native calls are
executed thanks to the HIL protocol. “Mocks” implement native methods in Java™ Standard Edition
(Java™ SE) and HIL protocol is able to execute them.
Performance traces can be obtained for graphics (frame-per-second or FPS), CPU load (%), memory
consumption (total memory, free memory) and threads (name, stack trace, state). These libraries are
available in Java and C language to self-monitor the application and the system.
Field_1
Field_2
Field_n
User A
User B
Producer A
Producer B
events
Sub
scribe
rsPu
blis
her
s
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 13/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
3.3.8 Components Management
The MicroEJ OS Core can be configured in single-app or multi-app mode called “Wadapps.” In multi-
app mode, the MicroEJ OS Core provides a “sandboxing” environment that isolates apps from each
other, as shown in Figure 9. The sandboxing technique isolates the execution contexts of binary apps
so apps can be killed without hampering the entire system.
Figure 9: MicroEJ OS sandboxing environment
When building the MicroEJ OS in multi-app mode, the OS designer defines the set of OS APIs and
resources made available to apps, so apps cannot access critical system functions – whether for footprint,
security, business, or intellectual property protection reasons. Apps can’t access directly to code, objects,
or threads of another app, and can’t call native code. Apps use a specific “shared interface” mechanism
to exchange information between themselves. When apps are built, MicroEJ SDK tools ensure that apps
don’t have other dependencies than the APIs exposed by the OS instance for which they are built. Apps
are fully managed in binary format and can be dynamically installed, started, stopped, uninstalled.
The shared interface mechanism allows multiple apps to communicate directly through standard Java
interface APIs. Shared interfaces allow apps to be safely “hot-stopped” (stopped while the system is
running) even if other apps are currently using services that the stopped apps expose.
Each time an app’s object is being accessed by another app, the MicroEJ OS Core engine automatically
manages proxy references to the original object, so that there is never a direct reference between objects
owned by multiple apps.
HARDWARE
BSP/DRIVERS + RTOS
NativeThread 1
MicroEJ ThreadNative
Thread 2Native
Thread n
MicroEJ CoreMemory Mgmt
Components Management
Resource Mgmt
Java Thread Scheduler
MicroEJ Libraries
App1
App2
App3
App4
App5
Appn
Downloaded
AppIsolation
Layer
Resident
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 14/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
Shared interfaces provide the following advantages:
- Solving the well-known “stale references” issue on component-based systems
- By using pure Java interface and OO design (API vs. implementation, loose coupling), the same
application code can be integrated as a monolithic standalone application or split into multiple
sandboxed applications. (This becomes an integration choice.)
Apps can communicate through shared interfaces using built-in APIs:
- General purpose services available through the Wadapps framework shared registry
- Dynamically extending the device capabilities by adding new peripherals to the ECOM
Peripheral Manager
Developers also can offer APIs for their own apps to share with other apps.
3.4 MicroEJ OS Libraries *Note: items available upon request
3.4.1 IO
The IO library allows access to hardware I/Os and controls (like GPIO, DAC, ADC, PWM*…) through
the native hardware abstraction layer (HAL) with a high-level generic Java API.
It also allows acquisition of raw sensor data and control actuators through a Sensor* API for:
- Acceleration
- Temperature
- Magnetic field
- Humidity
- Proximity
- Step
- Rotation
- Pressure
- Light
- Gyro
- Gravity
- Heartbeat
It allows monitoring of device movement such as tilt, shake, rotation, or swing from direct user input or
from the physical environment*.
3.4.2 NUM*
The NUM library allows processing of digital data/signal, prototype and test mathematical algorithms.
It is based on a unified API, small and self-contained.
It is ideal for numerical computing and provides operations such as:
- Numerical functions (linear algebra)
o Matrix and vector computation (e.g., Eigen decomposition)
Float Matrix, Double Matrix: 32-bit and 64-bit real matrices
Complex Float Matrix, Complex Double Matrix: 32-bit and 64-bit real complex
matrices
- Scientific functions (e.g., exponential and trigonometry computation)
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 15/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
- Polynomial computation (e.g., factorization: LU, LUP)
- Signal processing (e.g., FFT)
- Ranges
3.4.3 FILE & DATA
The FILE & DATA library allows management of persistent data and of hardware storage, and supports
standard data formats.
It provides persistent data formats such as:
- XML
- JSON
It supports file system on:
- Flash
- RAM
- SD Card
- USB Host Mass Storage
3.4.4 COMM
The COMM library allows connection to any type of network, and the writing of portable code across
stacks.
It provides wired connectivity for:
- Ethernet
- USB Host
- Serial (UART, USB Serial, Bluetooth Serial, I2C*, SPI*)
- CAN*
- Modbus*
- Fieldbus*
It also provides wireless connectivity for:
- 2G/3G/4G
- Wi-Fi
- Bluetooth*, BLE*
- Z-Wave*
- WM-Bus*
- NFC*
- ZigBee*
3.4.5 NET & SEC
The NET & SEC library allows support of network protocols and the writing of portable code across
stacks. It allows connection to Cloud infrastructure and performs secure communications.
It provides support for Internet protocols:
- UDP-TCP/IP
- IPv6*, Multicast*
- 6LoWPAN*
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 16/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
- HTTP and HTTPS client
- HTTP and REST server
- REST client
- SNTP client
- Websocket*
- protobuf*
It provides support for security protocols:
- SSL/TLS client and server
- SAML*
- DTLS*
- Cryptographic keys and certificates storage (KeyStore)
- Cryptographic operations*
3.4.6 IoT
The IoT library allows support of standard IoT middleware and frameworks:
It provides support for middleware and frameworks such as:
- MQTT
- CoAP*
- DDS (Data Distribution Services: publish/subscribe middleware)*
- XMPP*
- AMQP*
- LWM2M*
- AllJoyn*
- Thread*
3.4.7 GUI
The GUI library provides scalable 2D graphics and touch for various displays and configurations. It
allows portable apps for consistent user experience across all devices.
It includes:
- Micro Widget Toolkit (MWT): universal widget-based framework
- Embedded Java User Interface (MicroUI™): graphics base library
It provides support for:
- MicroUI
o Drawings
Rich 2D graphics
Raster decoding & processing
Anti-aliasing, transparency, clipping
8-bit alpha channel layer management for graphical interfaces with
transparency
Support of full range of available displays (64×32, 128×128, QVGA, WVGA,
WQVGA, SVGA, WSVGA, HD, XGA, WXGA)
Color depth: from 1-bit to 24-bit (+ 8-bit alpha)*
All pixel aspect ratios
Internationalization: NLS (native language support)
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 17/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
o Images
Any image format taken as input at application deployment stage
PNG, JPG* decoding at runtime, or other suitable formats
Dynamic deformation
Flying images for pointers
o Fonts
Any image format as input + TTF and OTF
1, 2,4, 8-bit anti-aliasing
Latin / Arabic / Asian, scalable
o Event management
Event source abstraction: touch, pointer, keyboard, keypad, command
(buttons), state (switches)
o LEDs
- MWT & Widgets
o Dynamic layouts
Grid, list, border, flow, scroll, split, custom
o Button, image, label, progress, radio, slider, text, toggle, spinner…
o Styling
Dynamic look and feel change (similar to CSS)
Fonts, images, colors, drawings
o Flows
Page navigation management, transition effects
- Media compatibility
o Video stream
- Motions
o Provides a timestamp to create a specific motion (linear, bounce, elastic, easings)
- Gestures
o Touch and multi-touch
3.4.8 STORE
The STORE library allows creation of an ecosystem through the application store server infrastructure.
It allows management of apps and resources for enhanced security.
It provides a complete app lifecycle management framework leveraging the MicroEJ Core OS
Components Management.
It allows creation of future-proof products by expanding them with new apps/services in the field. The
application store server infrastructure allows industrialization of app creation and management of open
or closed ecosystems.
It provides a robust and safe execution environment with:
- Secure data transmission
- Reuse of already-existing infrastructure
- Support of multiple protocols
- Dynamic download of apps
- Heterogeneous infrastructure: one app is compatible with multiple versions of firmware and
hardware
- Cloud framework connectors
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 18/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
3.5 MicroEJ Workbench
*Note: items available upon request
3.5.1 MicroEJ SDK Toolset
MicroEJ Workbench is the full set of tools built on Eclipse for device software development.
MicroEJ Workbench provides tools to build the custom MicroEJ OS and firmware that can be flashed
to devices.
MicroEJ Workbench is delivered as part of the MicroEJ SDK as shown in Figure 3.
MicroEJ OS runs on the embedded target, i.e., the IoT “thing” or embedded device.
MicroEJ Workbench runs on the device software developer’s host PC. It provides an integrated
development environment (IDE) built on Eclipse for Java, C and C++ programming. The OS Builder
allows creation of a custom OS that fits the hardware capabilities and delivers the required software
services. The Application Designer allows creation of resident applications in Java language, with the
potential for a touch and graphical user interface (GUI) with the GUI Designer tool. The MicroEJ OS
and resident applications can run on the host Simulator that simulates the target hardware and its
inputs/outputs. To allow third-party developers to write applications for their devices, device
manufacturers can use the Virtual Device Builder to create a specification of their real device (called
a “virtual device”) and publish it to a MicroEJ Store.
3.5.2 MicroEJ Workbench IDE
The MicroEJ Workbench IDE allows editing of Java and C/C++ code, project management, and the
launch of executables and tools. It provides integration to any target C/C++ toolchain such as ARM Keil
MDK, IAR Embedded Workbench, or Eclipse CDT/GNU GCC. It also provides specific test and
optimization tools:
- Code Coverage Analyzer: creates a report from code coverage files generated by the simulator
- Test Suite Engine: executes automatically a set of unit tests on hardware or on the simulator
and creates a JUnit report and an HTML report
- Stack Trace Inspector: replaces symbols from embedded stack trace by method names and
line numbers
- Memory Map Inspector: displays the actual amount of memory required by an application,
both flash and RAM usage, along with resources such as images, fonts, etc.
- Heap Inspector: displays information of heap dumps, which can be generated at simulation
stage. This tool allows analysis of each live instance contained in the Java heap at any specific
time.
3.5.3 MicroEJ Application Designer
The MicroEJ Application Designer allows development of MicroEJ applications and includes specific
tools:
- Java compiler and tools
o Classpath Dependencies Analyzer*: lists the dependencies (classes and methods) for
a given Java library or application (jar)
o MicroEJ C Header Generator: generates C headers file (.h) and implementation
skeletons of Java native methods (useful when using SNI)
- Java debugger
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 19/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
- MicroEJ GUI Designer
o Image Generator: converts image files (png, jpg, bmp, gif) into platform-specific
format. The number of bits per pixels (bpp) can be customized.
o Font Designer: used to build and edit MicroUI fonts. It stores fonts in a platform-
independent format. Characters can be imported from desktop system fonts or from
images. Both monospaced and proportional fonts are supported, as well as anti-aliased
fonts.
o Font Generator: converts MicroEJ fonts into a platform-specific format, customizes
anti-aliasing level and selects the available characters.
3.5.4 MicroEJ Simulator
The MicroEJ Simulator allows rapid prototyping before hardware is available. The same binary
application code can run on both the simulator and the real hardware as shown in Figure 10.
A simulated platform (packaged as a virtual device for publishing to the MicroEJ Store) can be built
with the Front Panel Simulator Designer tool for mimicking the hardware’s user interface (buttons,
LCD display, LEDs, etc.). It can use resources from the host PC for network, USB, file system, serial…
Peripheral extensions (called “mocks”) can be created: software mocks connected to the simulation
engine; hardware mocks connected to the PC workstation (for HIL testing).
Figure 10: MicroEJ app execution on simulator
Available mocks include:
- Hardware:
o CAN*
o HAL (ADC, DAC, GPIO), through the use of the HAL server app companion
o Multi-touch*
o Network
o FS
o SSL
o Serial
- Software:
o PWM*
o Front Panel (Display, Touch, Button, LED)
Virtual Device Firmware
BSP Mock
Simulator
HW MOCKS
MicroEJLibraries
BSPMicroEJ Core
HARDWARE
BINARY APP
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 20/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
3.5.5 MicroEJ OS Builder
The MicroEJ OS Builder allows configuration of MicroEJ OS Core and Libraries and includes specific
tools:
- Platform Builder: tool to build and configure a MicroEJ platform. It allows developers to select
services offered by MicroEJ OS.
- Java Linker (SOAR®): MicroEJ SDK assumes that the final linker from the toolchain uses the
ELF format for input files. Because the Java compiler generates unlinked binary code, MicroEJ
SDK includes a generic smart linker, brand named SOAR, which links the binary Java code and
produces an ELF file that can be linked with any other ELF file produced by any other tool.
3.5.6 MicroEJ Virtual Device Builder
The MicroEJ Virtual Device Builder allows packaging of a virtual device including the resident
applications, MicroEJ OS and “mocks” with specific tools:
- Front Panel Simulator Designer: allows the creation of a simulated view of the control panel
(“front panel”) of a target device. A set of standard widgets is supplied, which the user can lay
out on the panel, using images that exactly replicate the final hardware. The completed panel is
exported to a virtual device and replaces the real front panel when the application is executed
on the simulator.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 21/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
4 MICROEJ FIRMWARE
4.1 Firmware architecture
MicroEJ firmware is a binary software program that can be programmed into the flash memory of a
device. A MicroEJ firmware includes an instance of a MicroEJ OS linked to underlying native libraries
and BSP + RTOS, with Java libraries and application code (C and Java).
Figure 11 gives a detailed view of the architecture of a MicroEJ firmware.
Figure 11: MicroEJ firmware architecture
Java layers, including MicroEJ OS Core and Libraries, whether foundation libraries (relying on C
native libraries) or add-on libraries (100% pure Java code), sit on top of native layers consisting of
native libraries, the BSP + RTOS + C runtime.
For each hardware board, MicroEJ OS has to be ported to the provided native layers by writing specific
code (an adaptation layer) that implements MicroEJ OS low-level (LL) APIs – usually in C or C++ –
on the chosen native stacks.
LL APIs define the small set of C functions required to port MicroEJ OS to any hardware. Basically, a
timer is required to implement the MicroEJ Core engine thread policy, which also handles an idle mode
to minimize CPU activity when the OS is sleeping.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 22/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
4.2 Firmware build flow
The firmware build flow is depicted in Figure 12.
Figure 12: MicroEJ firmware build flow
MicroEJ SDK provides specific “architectures” for a combination of instruction set architectures (ISA)
and C compiler (e.g., ARM Cortex-M4 with ARM Keil “ARMCC”).
The OS Builder tool includes two main tools and involves two separate stages:
- Building a “platform” with the Platform Builder: the OS designer writes the MicroEJ OS LL
adaptation layer for the chosen BSP, RTOS, native libraries and C compiler. OS designers can
start with provided platform reference implementations available for supported evaluation
boards and customize the source code. Then the Platform Builder tool links the selected
architecture to the provided native code based on specific OS configuration options and
positioning instructions.
- Building a “firmware” with the SOAR: the firmware developer writes Java application code
and provides add-on Java libraries that are linked to the provided platform with specific
dimensioning instructions to produce a firmware.
MicroEJ Platform
MicroEJ OS Architecture (OS Core + Foundation libraries)
C Compiler ABITarget ISA
C/C++ CodeBSP drivers
Legacy C code
BSP
Platform Configuration
Java Application + Libs
(.o)
MicroEJ Platform Builder
(.class)
MicroEJ SOAR + LINKER
MicroEJ Platform
Application + Libs
BSP
Dimensioning(Java heap, stacks,
thread)
Mic
roEJ
Firm
war
e
C Compiler
(.c,.cpp)
Java Compiler
(.java, .list, resources)
(.a)
(.a)(.platform)
(.xml, .launch)
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 23/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
5 MICROEJ STUDIO MicroEJ Studio provides tools built on Eclipse to develop software applications for MicroEJ-multi-
app-ready devices. MicroEJ Studio allows application developers to write Java applications, run them
on a virtual (simulated) or real device, and publish them to a MicroEJ Store.
Figure 13: MicroEJ Studio and Virtual Device components
MicroEJ Studio runs on the application developer’s host. It provides an integrated development
environment (IDE) built on Eclipse for Java programming. The Virtual Device Loader allows loading
of a virtual device specification downloaded from an instance of MicroEJ Store. The Application
Designer allows creation of applications in Java language – with the potential for a touch and graphical
user interface (GUI) with the GUI Designer tool – that will be built for the loaded virtual device.
The virtual device includes similar custom MicroEJ OS Core, Libraries and resident applications to the
real device. Developers can run their applications on the Virtual Device Simulator or directly on the
real device (through a MicroEJ Store, or using a local deployment option). The Simulator runs a mockup
board support package (BSP Mock) that mimics the hardware functionality. When building an
application, MicroEJ Studio ensures that it does not depend on an API that is either not available on the
device or provided by a third-party application. This enables simple application lifecycle management:
install, start, stop, and uninstall.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 24/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
6 MICROEJ STORE
6.1 Store cloud-based services
MicroEJ Store provides cloud-based services to deploy software applications to MicroEJ-ready
devices. MicroEJ Store allows OEMs to manage users, publish devices, distribute and monetize
applications.
Applications are developed with MicroEJ Studio and run on the MicroEJ OS.
Figure 14: MicroEJ app publication and download from MicroEJ Store
MicroEJ Store allows device manufacturers and OEMs to create an ecosystem around their products to
serve their customers (device users), application developers, and service providers. As part of this
ecosystem, users of MicroEJ-ready devices can extend the functionality of their devices and potentially
subscribe to cloud-based services through applications, just as with smartphones and tablets. OEMs can
choose to run a closed ecosystem and make sure apps are published only by their own developers or
they can choose to run an open ecosystem and moderate the publication of apps developed by third-
parties outside of their organization.
Manufacturers are able to publish specifications of their MicroEJ-enabled devices called Virtual
Devices (VD) on their MicroEJ Store. Virtual devices specify precisely the capabilities and set of API
offered by the built-in MicroEJ OS in order to guide developers of applications for those devices. VDs
also provide simulation capabilities to ease application development, debug and test.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 25/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
End-users will be able to download applications for their MicroEJ-ready devices from the Store. They
will be able to install apps, either through the MicroEJ store app (also called “browser”) embedded in
their devices or through a mobile application on their smartphone (in the future, if the device does not
have a proper GUI).
Specific MicroEJ applications, called agents, can be delivered to enable access to cloud platforms and
services for device management, data collection and analytics or other purposes.
Application developers will be able to develop and test applications for the published virtual devices on
the Store with MicroEJ Studio, a free Java integrated development environment (IDE) built on Eclipse.
6.2 Store deployment MicroEJ Store is a turnkey solution, customizable, secure and robust, that can be deployed on the public
cloud (e.g., store.microej.com) or on a private cloud (e.g., store.MyBrand.com). A store can be operated
either under the MicroEJ brand or under an OEM brand in white label (e.g., MyBrand.microej.com) so
OEMs can offer the service without having to invest in creating the technology and infrastructure
themselves.
The MicroEJ Store server exposes REST APIs so that additional services and customized clients can be
created. A deployed instance of a MicroEJ Store can be accessed from a PC by the provided web client
example implementation (referred to as WebUI), or by any other client from a smartphone/tablet
(*mobile client: not available yet) or from an embedded board (MicroEJ OS client: example app
available) using similar REST API calls as shown in Figure 15.
Figure 15: Public and private cloud deployment of MicroEJ Store
6.3 User accounts User need to create accounts to access services offered by an application store.
There are four types of user accounts:
- Administrator: has administration and moderation privileges on the store
- End-user: can browse and download public virtual devices and apps, and can register its own
devices
- App developer: end-user rights and can publish apps
- Manufacturer: app developer rights and can publish virtual devices
End-users can register their devices on their application store account. When a device is registered, it’s
“paired” to a user account. Each MicroEJ-ready device (real “physical” device) is identified by a unique
Mobile client*
Web client
MicroEJ OS
client
MicroEJ Server
REST API
HOSTED
store.microej.com
Mobile client*
Web client
MicroEJ OS
client
MicroEJ Server
REST API
WHITE LABEL
MyBrand.microej.com
Customized with MyBrand names, logo, etc.
My Server
REST API
CUSTOM
store.MyBrand.com
Your customization
My Client
Your own development
MicroEJ Server
REST API
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 26/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
ID to identify it. End-users can view the list of devices they registered, browse apps compatible with
their devices, rename their devices, and unregister (“unpair”) their devices.
User login and device pairing use OAuth 2.0 authentication technology.
End-users can:
- Browse a manufacturer's portfolio of products
- Browse a portfolio of applications
- Do account management
- Manage their own devices
- Install applications on devices
- Uninstall applications
Application developers can also:
- Browse virtual devices
- Download virtual devices
- Request private app publication for test-only
- Publish apps
Manufacturers can also:
- Publish virtual devices
- Publish firmware
- If in Moderator role, moderate applications
Administrators can:
- Host application server distribution into their own infrastructure
- Deploy new services to adapt the server to load peaks
- Track in real-time service quality and performance
- Analyze traffic, logs, failures, usage, etc.
- Do backup / restore
- Manage users / apps
6.4 App publishing
In development phase, app developers can use an offline app publishing mode or direct push mode
called “local deploy” to bypass the store and push their app directly to a locally-connected device. In
testing phase, app developers can use an online private app publishing mode or private push mode to
publish their app in their private area on an application store (other users of the store can’t see it).
When developers are ready to publish their app, they use the online public app publishing mode or
public push mode to put their app in moderation stage. Apps go through a validation of their technical
compatibility with targeted devices, to make sure apps use APIs available on devices they want to run
on. Then it’s up to an application store owner to define its own acceptance criteria and make the app
available for download.
6.5 App downloading
MicroEJ-ready devices need to establish direct and secure communication with an online MicroEJ Store.
This requires enabling SSL/TLS-based security and secure storage of certificates and keys on board.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 27/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
MicroEJ provides an example embedded app to access a store, browse available apps, and manage apps.
Developers can write their own store browser and app manager app (an app that manages other apps,
for installing, uninstalling, starting and stopping those apps).
6.6 Server architecture
6.6.1 Server backend and frontend
The MicroEJ Store provides a server backend delivering the services and offering standard REST APIs
to access those services. It also include an example frontend implementation available as a web user
interface (UI) that uses the REST APIs and offer an easy way for user to interact with the server through
a standard web browser. This web UI can be customized by MicroEJ, or any other specific frontend
using those APIs can be developed upon needs.
6.6.2 Server components
The MicroEJ Store is built on cloud technologies that allow modular and secure deployment as well as
scalability of up to million connections. Each orange box in Figure 16 represents a Docker container.
Figure 16: MicroEJ Store server components
A MicroEJ Store server includes:
- A firewall to protect services from attackers
- A load balancer to balance the load over multiple instances of the same service
- Authentication authority to guarantee user’s and board’s identities
- Business APIs offering a set of standard web service interfaces
- A web client example implementation (WebUI) to manage user account, browse apps, devices,
etc.
- A mail transfer agent (MTA) that routes and delivers electronic mail
- A data base for storing information
- A build server to build applications and check firmware compliance
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 28/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
6.7 Security
Security is at the heart of all MicroEJ solutions at all levels: device software, communications, store
server, and third-party cloud services.
- At the device level:
o Secure app execution through sandboxing and download from trusted server only
o Apps identification with signed certificates
o Hardware and firmware identification with unique IDs
o Secure data collection and storage through encryption
- At the communications level:
o Secure communications with SSL/TLS and HTTPS
- At store server level:
o Secure hardware, firmware and user authentication and pairing with unique IDs and
through the OAuth protocol
o App binary verification for a target firmware
- At third-party cloud platform levels:
o Secure data transmission and exploitation through encryption and anonymization
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 29/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
7 MICROEJ VIRTUAL DEVICE A MicroEJ Virtual Device (VD) is a software artifact that allows developers to write and test apps for
a specific device on their host workstation, without the real hardware.
A MicroEJ VD includes:
- A set of APIs to define a set of interfaces for app developers, extracted from device
specifications
- A set of resident apps to provide apps with default system services
- A simulated app engine specific to a given device with extended “mocks” to simulate physical
hardware peripherals on a PC
- A secure connection to a MicroEJ Store for app publishing
Figure 17 outlines the technical architecture of a virtual device (in comparison to the MicroEJ firmware
architecture).
Figure 17: MicroEJ Virtual Device architecture
A VD involves a simulator which is the port of MicroEJ OS Core and Libraries to a PC workstation, on
Windows or Linux.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 30/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
8 OS API SPECIFICATIONS Block Features API
CORE Secure Multi-Application Engine: Virtual Processor/Java Virtual Machine Memory Management: Smart RAM Optimizer CPU & Power Management Components Management: Static/Dynamic Loader, Sandboxing, OSGi Languages: Multi-Languages Interface (SNI, Shielded Plug) Utilities, Logger, Localization - Test: Test Suite Harness
java.io, java.lang, java.lang.annotation, java.lang.ref, java.lang.reflect, java.util, java.security, java.util.concurrent ej.bon ej.power ej.kf, ej.components, org.osgi ej.sni, ej.sp java.util.logging, org.apache.logging.log4j, org.slf4j, android.util, ej.nls, com.is2t.testsuite.support, org.junit
IO Sensors, Actuators GPIO, DAC/ADC, PWM
android.hardware, ej.com.io ej.hal.gpio
NUM Numerical Computing, Linear Algebra, Signal Processing, Ranges
ej.numeric, ej.numeric.linear, ej.numeric.signal, ej.numeric.range
FILE & DATA
Persistent Data, XML, JSON File System (USB MS, SD Card, external flash)
ej.bon, org.kxml2, org.xmlpull.mxp, org.json.me java.io, ej.wadapps.storage
COMM Wired: Ethernet, USB, Serial (UART, USB Serial, Bluetooth Serial, I2C, SPI), CAN, USB Host Wireless: 2G/3G/4G, Wi-Fi, Bluetooth, BLE, Z-Wave, WM-Bus, NFC, ZigBee
java.net, ej.ecom, ej.com.comm, ej.ecom.io, ej.ecom.can, javax.usb java.net, ej.ecom.bluetooth, android.bluetooth, android.bluetooth.le, ej.driver.zwave, ej.ecom.wmbus
NET & SEC
Internet Protocols/Cloud: UDP-TCP/IP, IPv6, 6LoWPAN, HTTP/HTTPS Client, HTTP & REST Server, REST Client, SNTP Client, Netlink Sockets, Websocket, protobuf Security: SSL/TLS client & server, Certificates/KeyStore, Crypto, DTLS, SAML
java.net, javax.net.ssl, com.is2t.server, ej.rest, android.net, com.is2t.netlink, ej.websocket, com.google.protobuf javax.net.ssl, java.security, java.security.cert, javax.crypto, org.eclipse.californium.scandium, org.opensaml
IOT Middleware: MQTT, CoAP, DDS, AllJoyn, XMPP, AMQP, Thread
org.eclipse.paho.client.mqttv3, org.eclipse.californium.core, ej.dds, org.alljoyn
GUI MicroUI: Drawings, Images, Fonts, Event Manager MWT: Dynamic Layouts Widgets, Transitions (Flows), Composite Layouts, Styling Motions, Gestures
ej.microui ej.mwt ej.widget, ej.color, ej.transition, ej.composite, ej.style ej.motion, ej.gesture
STORE App Launcher, Lifecycle Manager, App Browser Client
ej.wadapps, ej.wadapps.admin, ej.wadapps.client
Table 2: MicroEJ OS API specifications
Note: packages in orange are available upon request.
MicroEJ OS specifications are detailed at:
http://www.microej.com/resources/microej-os-api-specifications/
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 31/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
8.1 Foundation libraries *Note: items available upon request
EDC
java.io
java.lang
java.lang.annotation
java.lang.ref
java.lang.reflect
java.util
java.security
BON ej.bon
ECOM ej.ecom
ECOM-COMM ej.ecom.comm
SNI ej.sni
SP ej.sp
NLS ej.nls
FS java.io
NET java.net
SSL/TLS client javax.net.ssl
MicroUI ej.microui
MWT ej.mwt
KF ej.kf
Store/Wadapps ej.wadapps
Resource Manager ej.lang
Num* ej.numeric
HAL GPIO/ADC/DAC ej.hal.gpio
Table 3: MicroEJ foundation libraries
- EDC (Embedded Device Configuration) and BON (“Beyond EDC”) libraries form the base for
embedded Java applications. They provide a deterministic initialization phase of the application.
- ECOM (Embedded COMmunications) provides an abstract communication stream support and a
peripheral manager.
- ECOM-COMM provides support for serial (e.g., UART, USB CDC) communication.
- SNI (Simple Native Interface) implementation allows the seamless connection of the Java and C
worlds.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 32/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
- SP (Shielded Plug) provides a robust publish-subscribe protocol to exchange data between
loosely-coupled components, which may be from the Java or C world.
- NLS (National Language Support) allows handling of multi-language applications that rely on
unicode strings and fonts.
- FS (File System) provides standard file system API.
- NET provides standard UDP/IP and TCP/IP networking API.
- SSL provides an SSL/TLS client.
- MicroUI provides 2D graphics library.
- MWT (Micro Widget Toolkit) provides a GUI widget framework.
- KF (Kernel & Features) provides the runtime support for managing multiple sandboxed
applications.
- Store/Wadapps is the multi-application sandboxing framework and the client library used to connect
a device to an online MicroEJ Store.
- HAL (Hardware Abstraction Layer) provides the API for accessing microcontroller-specific
peripherals (GPIO/ADC/DAC).
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 33/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
8.2 Add-on libraries *Note: items available upon request
Widgets
ej.widget
ej.style
ej.transition
ej.color
Eclasspath java.util
java.util.concurrent
Storage ej.wadapps.storage
REST client ej.rest
Check Helper ej.checkhelper
MQTT org.eclipse.paho.client.mqttv3
Components ej.components
Logging java.util.logging
CoAP* org.eclipse.californium.core
XML org.kxml2
org.xmlpull.mxp
JSON org.json.me
HTTP and REST server com.is2t.server
DTLS* org.eclipse.californium.scandium
Websocket* ej.websocket
protobuf* com.google.protobuf
HTTPS client javax.net.ssl
HTTP client java.net
SNTP client android.net
Connectivity Manager android.net
Table 4: MicroEJ add-on libraries
- Eclasspath is a group of add-on libraries that allows Java source code written for MicroEJ OS to be
compatible with OpenJDK API.
- Storage allows persistent data storage that does not necessitate, but can be implemented on, a file
system.
- Components is a simple component framework for Service-Oriented Architecture (SOA)
developments with loose coupling of API and implementation in order to design modular
applications.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 34/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
9 RESOURCES In order to get started with MicroEJ Studio or MicroEJ SDK, please go to: http://www.microej.com/get-
started/.
Additional developer resources are available on the MicroEJ Developer Resources site at
http://developer.microej.com/:
- MicroEJ Studio download
- MicroEJ SDK evaluation download
- Example MicroEJ firmware images
- MicroEJ architectures for evaluation (limited)
- Product documentation: overviews, user guides
- MicroEJ OS API reference guide: foundation and add-on libraries
- Examples and demonstrations
- Application notes
Figure 18: MicroEJ SDK Resources Map
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 35/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
Figure 19: MicroEJ Studio Resources Map
Downloadable artifacts related to some resources are available from the online MicroEJ Central
Repository at http://repository.microej.com/:
- Platforms for evaluation
- Platform reference implementations for evaluation
- Add-on libraries
Source code for some resources is available from the MicroEJ Git Repository at
https://github.com/MicroEJ/.
The public MicroEJ Store (where any developer can browse and push apps) is available at
http://community.microej.com/ and also provides:
- MicroEJ virtual devices
- MicroEJ apps
The private MicroEJ Store (with selected apps only) is available at http://store.microej.com/.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 36/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
10 SYSTEM REQUIREMENTS
10.1 Target hardware
MicroEJ OS requires 32-bit processor architectures with no Memory Management Unit (MMU) –
typically a microcontroller unit (MCU) – and a minimum of 16 KB of RAM and 64 KB of flash for the
simplest configurations.
10.1.1 Supported architectures
For a list of architectures supported by MicroEJ OS, please go to:
http://www.microej.com/resources/supported-architectures/
Engineering services are available for supporting any other architecture.
10.1.2 Supported platforms
For a list of platforms supported by MicroEJ OS, please go to:
http://www.microej.com/resources/supported-platforms/
Engineering services are available for supporting any other platform.
10.1.3 Supported BSP, RTOS, toolchains and libraries
MicroEJ OS relies on native software and tools for providing the foundations for the OS Core and
Foundation Libraries as shown in Figure 11.
MicroEJ can potentially run on any combinations of any BSP, RTOS (or bare metal), toolchain and
libraries. However, the provided platform reference implementations come with a predefined set of pre-
integrated and validated foundation elements as listed in the previous section:
Architecture Platform Toolchain BSP RTOS Libraries
ARM Cortex-M7 STMicroelectronics STM32F746G-DISCO
ARM Keil MDK STM32Cube FreeRTOS
lwIP
FatFS
wolfSSL
ARM Cortex-M4 STMicroelectronics STM32F429I-EVAL
ARM Keil MDK STM32Cube FreeRTOS
lwIP
FatFS
wolfSSL
ARM Cortex-M4 NXP Kinetis TWR-K65F180M
GCC Kinetis SDK FreeRTOS
lwIP
FatFS
wolfSSL
ARM Cortex-M4 Renesas Synergy DK-S7G2
GCC SSP Express Logic ThreadX
NetX
FileX
wolfSSL
Table 5: Platform configurations supported off-the-shelf
Engineering services are available for supporting new of different combinations of BSP, RTOS,
toolchain and libraries.
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 37/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
Here’s below a sample list of RTOS and libraries that can be considered:
- RTOS: Micrium µC/OS-II and µC/OS-III, SEGGER embOS, Green Hills Software, Wind
River, SYSGO, Linux…
- Libraries: Micrium µC/TCP-IP, µC/FS…
10.2 Development host
MicroEJ SDK and MicroEJ Studio:
Intel x64 PC with minimum:
o Dual-core Core i5 processor
o 4GB RAM
o 4GB Disk for MicroEJ SDK
o 1GB Disk for MicroEJ Studio
Operating Systems:
o Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Vista or Windows XP
SP3
o Linux distributions (tested on Ubuntu 12.04 and Ubuntu 14.04)
o Mac OS X (tested on version 10.10 Yosemite and 10.11 El Capitan)
10.3 Cloud server
MicroEJ Store – when deployed on your server:
Intel x64 server running Linux Debian OS Jessie version with virtualization software:
o qemu-kvm
o Xen
o VirtualBox
Virtual machine requirements for running MicroEJ Store:
o 4GB RAM
o 80GB Disk
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 38/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
11 PRODUCTS PACKAGING
MicroEJ SDK
MicroEJ Studio MicroEJ Virtual
Device MicroEJ OS MicroEJ Workbench
Core
Libraries
IO
NUM
FILE & DATA
COMM
NET& SEC
IoT
GUI
STORE
Development Tools
IDE
Application Designer
GUI Designer
Simulator
OS Builder
Virtual Device Builder
Virtual Device Loader
Table 6: MicroEJ SDK and MicroEJ Studio constituents
For more details on product packaging, go to:
http://www.microej.com/resources/packaging/
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 39/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
12 PRODUCTS LICENSING For more details on product licensing, go to:
http://www.microej.com/resources/microej-licensing/
12.1 MicroEJ Studio MicroEJ Studio is free and can be used under the terms of its end-user license agreement.
12.2 MicroEJ SDK
MicroEJ SDK evaluation is free. Commercial use involves a fee for tools and production runtime
defined in dedicated end-user and production license agreements.
Note: special rates apply for universities/research and startups.
TRIAL LICENSE SUBSCRIPTION LICENSE PERPETUAL LICENSE
Validity 1 month Annual Perpetual
MicroEJ OS (Core & Libraries)
MicroEJ Workbench (IDE & Tools)
Maintenance - Included First year included
Helpdesk Included Included Included
Enterprise technical support - Optional First year included
Premium technical support - Optional Optional
Access to runtime license -
PRICING TOOLS LICENSE
FREE Per seat, per year Per seat, upfront + 20% yearly maintenance
PRICING RUNTIME LICENSE
- On volume shipments First 1,000 units free
On volume shipments
Table 7: MicroEJ SDK licensing
MICROEJ PRODUCT LINE OVERVIEW
4.0 JUN-16 PUBLIC 40/40 IS2T S.A. - 11, RUE DU CHEMIN ROUGE - 44373 NANTES CEDEX 3 - FRANCE
12.3 MicroEJ Store MicroEJ Store can be hosted either on MicroEJ servers and domains, or on specific servers and domains.
Note: special rates apply for universities/research and startups.
PUBLIC CLOUD
store.microej.com
WHITE LABEL
X.microej.com
PRIVATE CLOUD
store.X.com
TECHNOLOGY TRANSFER
store.X.com
Subscription validity Annual Annual Annual Perpetual
Hosting MicroEJ domain MicroEJ domain Specific server & domain
Specific server & domain
Branding MicroEJ Custom MicroEJ customizes existing frontend (web client) for your brand
Custom Develop your own frontend using REST APIs
Custom Full source code (except proprietary tools in backend build server)
Publication of virtual devices
Limited Under same brand
Limited Under same brand
Unlimited Under your brand
Unlimited Under your brand
Fleet size Number of devices registered with the Store
Limited Limited Limited Unlimited
Publication of apps Monetization Moderation
Under MicroEJ T&C Under MicroEJ T&C Under your own T&C Under your own T&C
Maintenance Included Included Included First year included
User support Administration
Included Included - -
Developer technical support Customization/Dev
- - Included First year included
PRICING FREE for MicroEJ SDK licensees
Per brand, per year Per domain, per year Per company, upfront + yearly maintenance
Table 8: MicroEJ Store licensing