microej, the os for iot
TRANSCRIPT
© IS2T S.A. 2015-2016. All rights reserved.
THE OS FOR IOTLa French Tech, Rennes – April 19, 2016
LEGAL DISCLAIMER
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.
IS2T®, 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 documentation 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.
AGENDA
• MicroEJ Overview
• From Embedded to IoT
• MicroEJ SDK
• MicroEJ Operating System
• MicroEJ OS Core
• Conclusion
MICROEJ OVERVIEW
ABOUT MICROEJ
Independent Software Vendor, global player in the IoT industry
• http://www.microej.com/about
• Software tool & runtime licenses
• Professional services, training & consulting
KEY FINANCIALS
• $5M Series A funding end 2011 – $20M R&D total investment
• Already 1 million devices shipped with MicroEJ
IS2T S.A. founded in 2004 – offices in France, Germany, USA
Expertise in embedded, virtualization, software engineering & process
Partnerships with key IoT, silicon, embedded SW and HW (EMS) vendors
PARTNERS & CONSORTIA
HARDWARE
SERVICES
SOFTWARE
ALLIANCES
RTOS Linux
OPERATING SYSTEMS FOR ENABLING THE IOT
Source: ARM
Average Selling Price of a Semiconductor Chip
>$25$10-15$3-6$1-2
Vo
lum
e
75%IoT = “sub-gig” things:• Processor < GHz• Memory < GB
25%
SW Foundation
MICROEJ IOT END-TO-END VALUE CHAIN
MicroEJ enables secured cloud-based services
IOT DEVICES
SW CONTENT MANAGEMENT
APPLICATION STORE
DEVICE MANAGEMENT
DATA ANALYTICS
GATEWAY
P
P
PP
P MicroEJ Partners
P
APPLICATIONSTORE
FOR
APPLICATION
DEPLOYMENT
SDK:OS & TOOLS
FOR
DEVICE
SOFTWARE
DEVELOPMENT
STUDIOFOR
APPLICATION
DEVELOPMENT
MICROEJ FLAGSHIP PRODUCT LINE
FROM EMBEDDED TO IOT
UDP-TCP/IP, HTTP, REST…SSL/TLS, SAML, DTLS…Ethernet, USB, Serial (UART, I2C, SPI), CAN…2G/3G/4G, Wi-Fi, Bluetooth, Z-Wave, WM-Bus, NFC, ZigBee…
HW
FW
SW
GUI
ServerClientProprietary
Over Standards
RTOSBSP/HAL
FlashRAMDisk
MCUFPUDSP
Actuators
Analog/Digital I/Os
LibsStacks
ProprietaryOver Standards
Device Management
• Content: FW• Operations
Sensors
Smart devices need to be able to acquire,compute and store data, and performseveral tasks.Connected devices need to supportmany connectivity, communications andsecurity standards.Interactive devices provide graphical andtouch interface.Managed devices allow software contentupdate and operations managementfrom the Cloud.
XMPP, AMQP, MQTT, CoAP, DDS, 6LoWPAN, AllJoyn…UDP-TCP/IP, HTTP, REST…SSL/TLS, SAML, DTLS…Ethernet, USB, Serial (UART, I2C, SPI), CAN…2G/3G/4G, Wi-Fi, Bluetooth, Z-Wave, WM-Bus, NFC, ZigBee…XML, JSON…
StandardsOver Standards
Services
HW
FW
SW
GUI
RTOSBSP/HAL
FlashRAMDisk
MCUFPUDSP
Actuators
Analog/Digital I/Os
LibsStacks
StandardsOver Standards
Device Management
• Content: FW• Operations
• Store: Apps• Data
Sensors
StandardsOver Standards
ServicesAgentsApps GWY
IoT devices use standard frameworks andagents for connecting to services in theCloud that provide software content andoperations management.
They leverage data streams and formatsfor cloud-based analytics.
They may run multiple applications thatcan be downloaded from an online store.
VERTICALINTEGRATION
Lib
App AppApp App
RTOS RTOS
Lib
?
Lib
Lib
Lib
?
?
API
API
Integrate
DevelopIntegrate
API API API
DevelopPort
Fragmented HW
API API API
Embedded RTOS solutions haveefficiently addressed SW bring-up onfragmented hardware by providingvertical integration layers for eachcombination (ISA/compiler/libs).
But they may require integrationwork for the BSP and native libraries.
They may not provide ready-to-usesolutions for enabling IoT and cloud-ready SW capabilities.
Applications still need to be portedfrom one vertical silo to another,further fragmenting developerscommunities.
RTOS RTOS RTOS
App AppApp App
API
RTOS
API API APIAPI
Develop.
HORIZONTALINTEGRATION
Virtualization
Fragmented HW
The MicroEJ® Operating Systemleverages the best of both worlds:- The scalability of embedded RTOS
solutions for SW bring-up- The large community of mobile &
PC developers for efficient SWapplications development
It provides APIs both for BSP/RTOS/libsintegration and SW app development.
It enables horizontal integration of OSservices thanks to a virtualization layerthat isolates application layers fromlib/RTOS/BSP/compiler/ISA layers.
MICROEJ SDK
With MicroEJ SDK, embedded software reaches the industrialization era
Like IT for PC’s and servers in the 90’s
Like smartphones and tablets in the 2000’s
Agility & SecurityIP Protection
MainstreamProgramming Techniques
ScalableOperating System
Hardware Virtualization
Fast development, massive deployment.
MICROEJ SDK COMPONENTS
SDK
TARGET
HOST
WORKBENCH
OPERATING SYSTEM
RESIDENT APPLICATIONS
Core
Libraries
Application Designer
Simulator
OSBuilder
IDE
Virtual DeviceBuilder
GUIDesignerAPP 1 APP 2
BSP
Legacy
APP 3
Firmware
MICROEJ ECLIPSE-BASED IDE
IDE based on Eclipse
• Java and C++/C code editing
• Project management
• Launcher
• Target C/C++ toolchain integration
Test & Optimization Tools
• Code Coverage Analyzer
• Test Suite Engine
• Stack Trace Inspector
• Memory Map Inspector
• Heap Inspector
WORKBENCH
Application Designer
Simulator
OSBuilder
IDE
Virtual DeviceBuilder
GUIDesigner
MICROEJ SPECIFIC TOOLS
MicroEJ Application Designer
• MicroEJ Application development
• Java compiler and tools
• MicroEJ C Header Generator
• Classpath Dependencies Analyzer*
• Java debugger
• Shielded Plug compiler and server
• MicroEJ GUI Designer
• Image Generator
• Font Designer
• Font Generator
MicroEJ Simulator
• Simulator with Hardware-In-the-Loop (HIL) testing infrastructure
MicroEJ OS Builder
• Platform Builder : Core and Libraries configuration & build
• Java language + ELF Smart Linker (SOAR®)
MicroEJ Virtual Device Builder
• Front Panel Simulator Designer
*WIP
SIMULATION ENVIRONMENT
Rapid Prototyping
• Prototype before having hardware available
Build your virtual device
• Front Panel for UI (buttons, LCD display, LEDs, etc.)
• Sensors & actuators for embedded systems
• Network, USB, file system, serial…
Build your peripheral extensions (mocks)
• Software mocks connected to the simulation engine
• Hardware mocks connected to the PC workstation
Virtual Device Firmware
BSP Mock
MicroEJ Simulator
HW MOCKS
MicroEJLibraries
BSPMicroEJ
Core
HARDWARE
BINARY APP
Run the same binaryapp code on both HWand simulator
MicroEJ SDK
• Platform development
• App development
SINGLE-APP DEVELOPMENT WORKFLOW
Application
MicroEJ OS+ Libraries
+ BSPPla
tfo
rm
ExecutableBinary
MicroEJ Studio
• App development
MicroEJ SDK
• Firmware development
MicroEJ OS+ Libraries
+ BSPPla
tfo
rm
App App App
MicroEJFirmware
MicroEJFirmware
App App
App App App
App binaries(built for a specific firmware)
Deployment to
Infrastructure
Program
Program
DynamicLoad & Install
Ap
p
Resident App
MonolithicMicroEJ
Firmware
MonolithicMicroEJ
Firmware
MicroEJFirmware
Link
ExecutableBinary
Link
MULTI-APP DEVELOPMENT WORKFLOWstore
MICROEJ OPERATING SYSTEM
MICROEJ OPERATING SYSTEM
Platform
OPERATING SYSTEM
BSP/DRIVERS
TARGET HARDWARE
APPLICATIONS
APP 1 APP 2 APP 3 APP 4 …
CORESecure Multi-Application Engine
COREMemory Management
CORELanguages/Utilities/Test
CORECPU & Power Management
COREComponents Management
IOSensors/Actuators/GPIO
COMMConnectivity Wired/Wireless
STOREApplication Management
NUMNumerical Methods
FILE & DATAPersistence/File System
GUIGraphics/Touch
NET & SECNetwork Protocols & Security
IOTIoT/Cloud Middleware
SECURE MICROEJ OPERATING SYSTEM
ADVANTAGES HOW:
Hardware independence• True Portability of BINARY SW across HW (no
recompilation needed)
Micro-Virtualization layer (30KB)• Formal Separation between HW-dependent-
SW and HW-independent-SW
Safe SW programming & execution Build & runtime checks, Sandboxing
Full set of SW foundation blocks High-level API & stacks
Secured investments• Legacy code integration
Multi-language support: Java, C/C++ / ASM
Future-proof• SW updates• New SW downloads
Multi-application framework• Build-time configuration• Run-time add-ons
HW1 HW2 HW3
SW
MicroEJ Operating System
HW dependent SW
HW independent SW
MICROEJ ENABLES APPLICATION-DRIVEN SERVICES
Offering user experience similar to smartphones & tablets:
• User goes to application store, browses and selects application
• Application is downloaded and installed on selected device owned by user
• User uses installed application on device
Enabling new business models for IoT devices:
• Delivering new services to end-users
• Exploiting data generated by devices (data analytics in cloud)
Application Store
MICROEJ OS GUI APP EXAMPLE
• Cortex-M4 @ 180MHz
• 2D DMA, HW acceleration
• 32-bit col. WQVGA, touch, transparency
• Display refresh: 50 frames/s
• Processing: 18% CPU load
• Design from scratch, 1 engineer, 1 day!
Memory Requirements
Flash 161KB RAM 11KB
Engine (runtime & GC) 28KB Engine 1KB
Libraries (graphics, com, float…) 114KB Native Stack 5KB
Graphical resources (images) 7KBApplication 12KB Application 5KB
MicroEJ needs
GUI EXAMPLES FOR MCUS
MICROEJ OS FOUNDATIONS
HW FOUNDATIONS
MCU/MPU/SoC architectures and starter kits
• ARM Cortex M/A
• MIPS, RX, PowerPC, TriCore
SW FOUNDATIONS
Hardware-dependent Software
• Bare metal/any RTOS
• BSP, drivers, libraries
Native SW SDKs
Your configuration already supported off-the-shelf or ported in few days
EXAMPLE 1: MICROEJ FOR RENESAS SYNERGY
Synergy Microcontrollers
Tools
& Kits
Synergy Software Package (SSP)
BSP
ThreadX®
RTOSHAL Drivers
Stacks
Middleware
Libraries
Native
Application
Framework
SolutionsSynergy
Gallery
Th
ird
-Pa
rty
Na
tive
Lib
rary
BSP
OPERATING SYSTEM
Native SW
MicroEJ Application SW + GUI
EXAMPLE 2: MICROEJ FOR AVNET VISIBLE THINGS*
Visible Things BSP/RTOS/Libs
MicroEJ OS
*WIP
MICROEJ OS CORE
MICROEJ OS CORE
Secure multi-application engine
• Optimized Java virtual machine
• Running its own compact HW-independent code
• Performing runtime checks
• “Green thread” integration to RTOS
Languages, utilities & test
• Efficient Java-to-C native interface
• Utilities, logger, localization
• Test suite harness (for HIL testing)
• Performance traces: frame-per-second (FPS), CPU load (%), memory, threads
KEY FIGURES:
Soft Core (virtualization) + Smart RAM Optimizer
< 30 KB of Flash
Multi-app add-on < 10 KB of Flash
RAM footprint < 1.5 KB
Boot time < 2mson Cortex-M3 at 120 MHz
RTOS stack size < 1KB
Garbage Collected
HeapJava
Stacks
OptionalLoader
MicroEJ VM Native Interface
Acceleration Unit
Exceptions Security
Native Stacks
Runtime Data
MicroEJ Core Engine Components
MICROEJ CORE
ENGINE
High speed execution engine
• Canonical processor
• 32-bit instructions set
• ~200 instructions,high density (compact)
• Multitasking operation
• Automatic memory management(garbage collector)
• Exception handling
• Integration with native C/asm
Off-board ELF Linker
EASY RTOS INTEGRATION (GREEN THREAD)
Multi-threaded Java execution environment within a single RTOS task
• True portability: same thread scheduling policy across all RTOS ports
• Full control of CPU resource usage
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
RTOS Examples:
● Simple scheduler
● µC/OS, ThreadX, RTX
● FreeRTOS
● Linux, Integrity, VxWorks
● Custom RTOS
MICROEJ OS CORE
Memory management
• Smart RAM optimizer (garbage collector)
• Management of MicroEJ objects lifecycle
• No memory leaks or rogue pointers, no fragmentation
• One shared C-Java heap (immortal objects)
• Static objects in flash (immutable objects)
CPU & Power management
• Control of CPU allocation per app
• Management of app permissions to access system resources
Components management
• Static and dynamic code loader
• Incremental (no need to re-flash/re-build all), binary re-mappable in RAM/Flash
• Management of binary app lifecycle
• Sandboxing
• Isolating binary app execution contexts
• Allowing inter-app communications
• Controlling OS API available to apps
EASY JAVA-TO-C INTERFACESNI (ESR 012): SIMPLE NATIVE INTERFACE
• Call C/ASM function from Java program
• Arguments: base types
• int, float, double, char
• Share arrays of base types
• Zero copy buffers and compatible with DMA systems
T
I
M
E
Immortals
Javaheap
Cheap
Java methods
C functions
Call C
Return to Java
www.e-s-r.net
T
I
M
E
Immortals
Java methods
C functions
Javaheap
Cheap
Immortal objects:• Live in a separate heap (immortal heap)• Are not touched by garbage collector• Have fixed addresses that can be shared with C world
MULTI-APP SANDBOXING
Built OS defines set of API & resources available to apps
• Can’t access directly to code, objects, threads
• No (bypassing) native code call allowed
• No inter-dependencies between apps
• Fully managed in binary
• Install, uninstall, start, stop
HARDWARE
BSP (= DRIVERS + RTOS)
RTOSTask 1
MicroEJ TaskRTOSTask 2
RTOSTask n
MicroEJ CoreMemory Mgmt
Components Management
Resource Mgmt
Predictable Thread Scheduler
MicroEJ Libraries
App1
App2
App3
App4
App5
Appn
Downloaded
AppIsolation
Layer
Resident
CONCLUSION
THE FUSION BETWEEN EMBEDDED AND INTERNET
Fragmented HWComplex SW
Internet pace
Mobile experience
Cloud servicesBig Data
Low-cost MCUResource constrained
Sensors & actuatorsData streams
PortabilityScalabilityIoT-ready
Community, methods &
tools for velocity
FootprintPerformance
Unified IoT platform
IoT secured connectivity
& frameworks
Multi-app OSGUI & Store
for IoT
EM
BE
DD
ED
IN
TE
R
NE
T
MICROEJOS, TOOLS & STORE
RESOURCES
• MicroEJ SDK free trialhttp://www.microej.com/get-started/
• Includes examples, platforms, libraries, BSP, user manuals, reference manuals, getting started
• MicroEJ Studio free downloadhttp://store.microej.com/
• Application notes, binary demos http://www.microej.com/downloads/
• More: libraries (source/bin), platforms (source/bin), examples http://developer.microej.com/https://github.com/MicroEJ
THANK YOU!