PowerPoint Presentation
Edje ProjectThe Software Foundation for IoT Devices
https://projects.eclipse.org/projects/iot.edje
IS2T S.A. 2016. All rights reserved.
Edje focuses on the following aspects
Sept 28th, 20162Edje API FocusEclipse IoT Virtual Meetup
Controller CommunicationInterfacesSerial PortCANDigital and Analog I/OGPIOPeripheral ManagementLCDUSB DevicesAnalog Input
October 20152
Laurent LagosantoSenior Architect at MicroEJ18 years of Java in the Small activities
Sept 28th, 20163About the PresenterEclipse IoT Virtual Meetup
The information contained herein is not warranted to be error-free.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 fordeveloping application software and deploying it in cross-platform,networked environments. When it is used in this site without addingthe symbol, it includes implementations of the technology bycompanies other than Sun. Java, all Java-based marks and allrelated logos are trademarks or registered trademarks of SunMicrosystems Inc, in the United States and other Countries.Other trademarks are proprietary of their respective owners.
Independent Software Vendor, global player in the embedded IoT industryhttp://www.microej.com/about Software tool & runtime licensesProfessional services, training & consultingKEY FINANCIALS$5M Series B funding end 2011 $20M R&D total investmentOffices in France, Germany, USAExpertise in embedded, virtualization, software engineering & processPartnerships with key IoT, silicon, embedded SW and HW (EMS) vendors
Sept 28th, 20164About MicroEJEclipse IoT Virtual Meetup
Partners & Consortia Strong Business Partners5
SERVICES
HARDWARE
SOFTWARE
CLOUD
ALLIANCES
Sept 28th, 20166Operating Systems for Enabling the IoTEclipse IoT Virtual MeetupRTOSLinux
Volume
75%IoT = sub-gig things:Processor < GHzMemory < GB25%
SW Foundation
MPU (>$10 ASP)MCU ($1-6 ASP)
October 20156
APPLICATIONSTOREforApplicationDeployment
SDK:OS & TOOLSforDeviceSoftwareDevelopment
STUDIOforApplicationDevelopment
MICROEJ flagship product LINE
Edje and IoT Introduction
Sept 28th, 20169IOT Topology & InteractionsEclipse IoT Virtual Meetup
IoT devices
Gateway
Server
Sept 28th, 201610IOT Topology : devices & gatewaysEclipse IoT Virtual Meetup8/16/32-bit MCU Mono-CoreFrequency: < 200 MHzFlash: < 1 MBRAM: < 512 KB32/64-bit MPU Multi-CoreFrequency: in GHzFlash: in GBRAM: in GB
MCUMPU
IoT devices
Gateway
IOT Hardware ExamplesSTM32F4 DiscoveryProcessor: 32-bits Cortex-M4 (STM32F407VGT6)Frequency: 168 MHzRAM: 192 KBFlash: 1 MBRaspberry PI 2Processor: 32-bits quad-core Cortex-A7 (BCM2836)Frequency: 900 MHzRAM: 1 GBFlash: SD Card (GBs)Sept 28th, 201611Eclipse IoT Virtual Meetup
To illustrate these differences, here is an example of a MCU based device and an example of a MPU based device.
The STM32F4 Discovery board embeds an ARM Cortex-M4 microcontroller. It runs at 168 MHz with some kilobytes of RAM and one mega byte of flash.
The Raspberry Pi 2 is more powerful, it is equipped with a quad-core ARM Cortex-A7. It has 1 gigabytes of RAM and the code is stored on an SD card with a capacity of several gigabytes.October 201511
The EDJE project
Sensors/ActuatorsLocal NetworkInternet
A library at the edge of the IoT for sensor hubs and devices
This figure illustrates where Edje is used. It is embedded in the devices that collect data from sensors and drive actuators. These devices can communicate with the cloud directly or through a gateway. Edje is really at the edge of the IoT.October 201512
Performance mattersAlmost no boot time, instantly-onPower efficiency, last for months, years
Size mattersCost-effectiveness is key : footprintSize of the package
Versatility mattersPlethora of protocols (to hardware, and to cloud services)Shorten time to market by reducing development time
Sept 28th, 201613IOT : What matters for edge devices ?Eclipse IoT Virtual Meetup
An Exemple of Footprint Reduction14
James Bauer
James Bauer
ReplyCall me later
AlexJackson
Hi there! Ill be late, sorry.
RTOS (Linux) + Java platformRTOS (Any/None) + Java platformPower410 mAh batteries recharge every dayBatteries recharge every two or three weeksProcessorQualcomm Snapdragon 400 MSM8226, ARM based Quadcore 1.2 GHz ARM Cortex-M4 based MCU, 100 MHzRAM (data)256 MBLess than 0.5 MBFLASH (Code + Resources)2,000 MB2 MBBoot Time35,000 ms50 ms
63% Bill of Materials savings87% power consumption savings
Sept 28th, 2016Eclipse IoT Virtual Meetup
October 201514
ROM (KB)Standard modeROM (KB)Tiny mode**RAM (KB)ApplicationTotal: 36.136.1Total: 27.227.2See below (52.0)Resources Images uncompressed Fonts StringsTotal: 836.9803.016.717.2Total: 836.9803.016.717.2MicroEJ Platform EDC MicroUI, MWT, MotionTotal: 198.024.1172.9Total: 143.019.2123.852.0 (application heap, stacks)MicroEJ Sandbox MicroEJ software core (VM) MicroEJ RAM optimizer (GC)Total: 29.115.213.9Total: 29.115.213.9BSP RTOS Driver & Low Level API UI driversTotal: 108.413.454.540.5Total: 108.413.454.540.51.5522 (2x frame buffers WQVGA) + 1Total without ResourcesTotal with Resources371 KB1.2 MB307 KB1.1 MB606.5 KB606.5 KB
Sept 28th, 201615Typical Real Application Footprint (KB)Washing Machine on ARM Cortex-M4 / GCCEclipse IoT Virtual Meetup**Tiny mode available when MicroEJ application code is below 256KB of flash
A Hardware Abstraction Java API for the embedded systemsPeripheral managementController Communication Interfaces (Serial connection, CAN, SPI, IC)Digital and Analog I/O (GPIO, ADC, DAC)
ScopeTarget resource-constrained devices (MCU & low-cost MPUs)Provide ready-to-use software packages for target hardwareDefine a modular and easy to port framework
Project StatusEclipse IoT projectProposal approved, entered Incubation phaseInitial code drop end of July
Sept 28th, 201616Edje ProjectEclipse IoT Virtual Meetup
Edje DEVICE CONFIGURATION
October 201517
JavaSEList of minimum Java APIThe minimum execution environment provided by an Edje-compatible deviceIntersection between Java SE, Java SE Embedded, MicroEJ and Android
Sept 28th, 201618Edje Device Configuration (EDC)Eclipse IoT Virtual Meetup
JavaSE Embedded
Android
MicroEJ OS
EDC
First of all, before defining the Edje API we need to specify a Java execution environment that is available on all the Edje compatible devices.Edje must rely only on this execution environment. This means the Edje API must compile on a platform that provides only the classes defined in this configuration.
This execution environment is called Edje Device Configuration. It is the intersection between Java SE Embedded, MicroEJ and Android.October 201518
List of minimum Java APIThe minimum execution environment provided by an Edje-compatible deviceIntersection between Java SE, Java SE Embedded, MicroEJ and Android
Sept 28th, 201619Edje Device Configuration (EDC)Eclipse IoT Virtual Meetup
Edje Device ConfigurationEdje APIEdje Application
LibraryExecution EnvironmentApplicationFrameworkOther APIsOther APIsOther APIs
First of all, before defining the Edje API we need to specify a Java execution environment that is available on all the Edje compatible devices.Edje must rely only on this execution environment. This means the Edje API must compile on a platform that provides only the classes defined in this configuration.
This execution environment is called Edje Device Configuration. It is the intersection between Java SE Embedded, MicroEJ and Android.October 201519
Only core packages are included:
java.lang(string, numbers, threads)java.lang.annotation(may not be runtime)java.lang.ref(weak refs)java.lang.reflect(only the annotation part)java.io(no files)java.security(permissions)java.util(subset of collections)Sept 28th, 201620Edje Device Configuration (EDC)Eclipse IoT Virtual Meetup
First of all, before defining the Edje API we need to specify a Java execution environment that is available on all the Edje compatible devices.Edje must rely only on this execution environment. This means the Edje API must compile on a platform that provides only the classes defined in this configuration.
This execution environment is called Edje Device Configuration. It is the intersection between Java SE Embedded, MicroEJ and Android.October 201520
These features are NOT included:
Network APIsStorage APIsCommunication APIsGraphics & User Interface
Some may be added as Edje libraries, some dont.Some may require native implementations, some dont and can be downloaded.Sept 28th, 201621Edje Device Configuration (EDC)Eclipse IoT Virtual Meetup
First of all, before defining the Edje API we need to specify a Java execution environment that is available on all the Edje compatible devices.Edje must rely only on this execution environment. This means the Edje API must compile on a platform that provides only the classes defined in this configuration.
This execution environment is called Edje Device Configuration. It is the intersection between Java SE Embedded, MicroEJ and Android.October 201521
Edje API
October 201522
Edje focuses on the following aspects
Sept 28th, 201623Edje API FocusEclipse IoT Virtual Meetup
Controller CommunicationInterfacesSerial PortCANDigital and Analog I/OGPIOPeripheral ManagementLCDUSB DevicesAnalog Input
October 201523
Lists the peripherals of a platformMCU peripherals (UART, timer, USB controller, )Board peripherals (screen, GPIO ports, button, LED, sensors, )External peripherals (USB devices, bluetooth devices, )
Peripheral plug/unplug notification system (event listeners)
Two use cases:Static peripherals:Attached to the board or the MCU, they never appear nor disappearapplications can adapt to the target configurationDynamic peripheralsthey can be unplugged from the deviceapplications can react to these events (e.g. an application can register a Z-wave plug peripheral driver because a USB serial port just appeared)
Sept 28th, 201624Edje API: Peripheral ManagementEclipse IoT Virtual Meetup
The peripheral management service is in charge of listing the peripherals available on a device.There are several kinds of peripherals depending on their location on the device:MCU peripherals are internal peripherals located inside the micro controller chip (for example an UART used to established a serial connection).The board peripherals are soldered on the device and are known by the platformThe external peripherals are dynamically created and destroyed when a peripheral is plugged or unplugged from the device.
The peripheral manager includes a plug/unplug notification system. You can define a listener that will be notified when a specific type of peripheral is connected or disconnected.
The topology of the peripherals on the device is accessible. You can get the children and parent of a peripheral. October 201524
package org.eclipse.edje;
interface Peripheral { HardwareDescriptor