eclipse edje: a java api for microcontrollers

51
© IS2T S.A. 2016. All rights reserved. EDJE PROJECT The Software Foundation for IoT Devices https://projects.eclipse.org/projects/iot.edje

Upload: microej

Post on 15-Jan-2017

316 views

Category:

Software


0 download

TRANSCRIPT

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

[email protected]

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