SlideShare a Scribd company logo
1 of 51
© IS2T S.A. 2016. All rights reserved.
EDJE PROJECT
The Software Foundation for IoT Devices
https://projects.eclipse.org/projects/iot.edje
Edje focuses on the following aspects
EDJE API FOCUS
Controller
Communication
Interfaces
Serial Port
CAN
Digital and
Analog I/O
GPIO
Peripheral
Management
LCD
USB Devices
Analog Input
Laurent Lagosanto
Senior Architect at MicroEJ®
18 years of “Java in the Small” activities
laurent.lagosanto@microej.com
ABOUT THE PRESENTER
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 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.
Independent Software Vendor, global player in the embedded IoT industry
• http://www.microej.com/about
• Software tool & runtime licenses
• Professional services, training & consulting
KEY FINANCIALS
• $5M Series B funding end 2011 – $20M R&D total investment
Offices in France, Germany, USA
Expertise in embedded, virtualization, software engineering & process
Partnerships with key IoT, silicon, embedded SW and HW (EMS) vendors
ABOUT MICROEJ
PARTNERS & CONSORTIA – STRONG BUSINESS PARTNERS
SERVICES
HARDWARE SOFTWARE CLOUD
ALLIANCES
OPERATING SYSTEMS FOR ENABLING THE IOT
RTOS Linux
Volume
75%
IoT = “sub-gig” things:
• Processor < GHz
• Memory < GB
25%
SW Foundation
MPU (>$10 ASP)MCU ($1-6 ASP)
APPLICATION
STORE
FOR
APPLICATION
DEPLOYMENT
SDK:
OS & TOOLS
FOR
DEVICE
SOFTWARE
DEVELOPMENT
STUDIO
FOR
APPLICATION
DEVELOPMENT
MICROEJ FLAGSHIP PRODUCT LINE
EDJE AND IOT INTRODUCTION
IOT TOPOLOGY & INTERACTIONS
IOT DEVICES GATEWAY SERVER
IOT TOPOLOGY : DEVICES & GATEWAYS
8/16/32-bit MCU Mono-Core
Frequency: < 200 MHz
Flash: < 1 MB
RAM: < 512 KB
32/64-bit MPU Multi-Core
Frequency: in GHz
Flash: in GB
RAM: in GB
MCU MPU
IOT DEVICES GATEWAY
IOT HARDWARE EXAMPLES
STM32F4 DISCOVERY
Processor: 32-bits Cortex-M4
(STM32F407VGT6)
Frequency: 168 MHz
RAM: 192 KB
Flash: 1 MB
RASPBERRY PI 2
Processor: 32-bits quad-core Cortex-A7
(BCM2836)
Frequency: 900 MHz
RAM: 1 GB
Flash: SD Card (GBs)
THE EDJE PROJECT
Sensors/Actuators
Local Network
Internet
A library at the edge of the IoT for
sensor hubs and devices
Performance matters
Almost no boot time, instantly-on
Power efficiency, last for months, years
Size matters
Cost-effectiveness is key : footprint
Size of the package
Versatility matters
Plethora of protocols (to hardware, and to cloud services)
Shorten time to market by reducing development time
IOT : WHAT MATTERS FOR EDGE DEVICES ?
AN EXEMPLE OF FOOTPRINT REDUCTION
James Bauer James Bauer
Reply
Call me later
Alex
Jackson
Hi there! I’ll
be late, sorry.
RTOS (Linux) + Java platform RTOS (Any/None) + Java platform
Power 410 mAh – batteries recharge every day Batteries recharge every two or three weeks
Processor
Qualcomm Snapdragon 400 MSM8226,
ARM based Quadcore 1.2 GHz
ARM Cortex-M4 based MCU, 100 MHz
RAM (data) 256 MB Less than 0.5 MB
FLASH
(Code + Resources)
2,000 MB 2 MB
Boot Time 35,000 ms 50 ms
63% Bill of Materials savings
87% power consumption savings
ROM (KB)
Standard mode
ROM (KB)
Tiny mode**
RAM (KB)
Application Total: 36.1
36.1
Total: 27.2
27.2
See below (52.0)
Resources
Images uncompressed
Fonts
Strings
Total: 836.9
803.0
16.7
17.2
Total: 836.9
803.0
16.7
17.2
MicroEJ Platform
EDC
MicroUI, MWT, Motion
Total: 198.0
24.1
172.9
Total: 143.0
19.2
123.8
52.0 (application heap, stacks)
MicroEJ Sandbox
MicroEJ software core (VM)
MicroEJ RAM optimizer (GC)
Total: 29.1
15.2
13.9
Total: 29.1
15.2
13.9
BSP
RTOS
Driver & Low Level API
UI drivers
Total: 108.4
13.4
54.5
40.5
Total: 108.4
13.4
54.5
40.5
1.5
522 (2x frame buffers WQVGA) + 1
Total without Resources
Total with Resources
371 KB
1.2 MB
307 KB
1.1 MB
606.5 KB
606.5 KB
TYPICAL REAL APPLICATION FOOTPRINT (KB)
WASHING MACHINE ON ARM CORTEX-M4 / GCC
**Tiny mode available when MicroEJ application code is below 256KB of flash
A Hardware Abstraction Java API for the embedded systems
• Peripheral management
• Controller Communication Interfaces (Serial connection, CAN, SPI, I²C)
• Digital and Analog I/O (GPIO, ADC, DAC)
Scope
• Target resource-constrained devices (MCU & low-cost MPUs)
• Provide ready-to-use software packages for target hardware
• Define a modular and easy to port framework
Project Status
• Eclipse IoT project
• Proposal approved, entered Incubation phase
• Initial code drop end of July
EDJE PROJECT
EDJE DEVICE CONFIGURATION
JavaSE
List of minimum Java API
The minimum execution environment provided by an Edje-compatible device
Intersection between Java SE, Java SE Embedded, MicroEJ and Android
EDJE DEVICE CONFIGURATION (EDC)
JavaSE
Embedded
Android
MicroEJ OS
EDC
List of minimum Java API
The minimum execution environment provided by an Edje-compatible device
Intersection between Java SE, Java SE Embedded, MicroEJ and Android
EDJE DEVICE CONFIGURATION (EDC)
Edje Device Configuration
Edje API
Edje Application
Library
Execution
Environment
Application
Framework
Other
APIs
Other
APIs
Other
APIs
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)
EDJE DEVICE CONFIGURATION (EDC)
These features are NOT included:
• Network APIs
• Storage APIs
• Communication APIs
• Graphics & User Interface
Some may be added as Edje libraries, some don’t.
Some may require native implementations, some don’t and can be downloaded.
EDJE DEVICE CONFIGURATION (EDC)
EDJE API
Edje focuses on the following aspects
EDJE API FOCUS
Controller
Communication
Interfaces
Serial Port
CAN
Digital and
Analog I/O
GPIO
Peripheral
Management
LCD
USB Devices
Analog Input
Lists the peripherals of a platform
• MCU 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 disappear
• applications can adapt to the target configuration
• Dynamic peripherals
• they can be unplugged from the device
• applications can react to these events (e.g. an application can register a Z-wave plug
“peripheral driver” because a USB serial port just appeared)
EDJE API: PERIPHERAL MANAGEMENT
package org.eclipse.edje;
interface Peripheral {
HardwareDescriptor<? extends Peripheral> getDescriptor();
String getName();
Peripheral getParent();
Peripheral[] getChildren();
}
interface HardwareDescriptor<P extends Peripheral> {
String getName();
String getProperty(String propertyName);
String[] getPropertyNames();
String[] getPropertyValues();
}
EDJE API: PERIPHERAL MANAGEMENT
package org.eclipse.edje;
class PeripheralManager {
Iterator<Peripheral> list()
Iterator<P> list(Class<P> peripheralType)
P find(Class<P> peripheralType, String peripheralName)
void addRegistrationListener(RegistrationListener<P> li,
Class<P> type)
void removeRegistrationListener(RegistrationListener<P> li)
void register(Class<C> peripheralType, P peripheral)
void unregister(P peripheral)
}
EDJE API: PERIPHERAL MANAGEMENT
EDJE API: PERIPHERAL MANAGEMENT SAMPLES
// static use case:
Iterator<Peripheral> peripherals = PeripheralManager.list();
while(peripherals.hasNext()) {
Peripheral p = peripherals.next();
System.out.println("Edje periph : " + p.getName());
}
// dynamic use case:
PeripheralManager.addRegistrationListener(new RegistrationListener<MyDevice>()
{
public void peripheralRegistered(RegistrationEvent<MyDevice> event) {
event.getPeripheral().myDeviceMethod(…);
}
public void peripheralUnregistered(RegistrationEvent<MyDevice> event){
}
}, MyDevice.class);
Some peripherals can establish a connection to external devices
• Serial Connection (UART)
• Serial Peripheral Interface (SPI)
• Inter-Integrated Circuit (I²C)
• Controller Area Network (CAN)
Such peripherals implement the Connectable interface:
interface Connectable {
Connection openConnection(String args) throws IOException;
}
EDJE API: COMMUNICATION INTERFACES
List<CommPort> serialPorts = PeripheralManager.list(CommPort.class);
for(CommPort serialPort : serialPorts){
// a connection is auto-closeable:
try {Connection cnx = serialPort.openConnection("baudrate=115200;bitsperchar=8") {
…
}
}
interface CommPort extends Peripheral, Connectable {
}
interface CommConnection extends StreamConnection {
int getBaudrate();
int setBaudrate(int baudrate);
}
interface BitsInput {
int getLength();
int readBits(boolean signExtends)
int readBits(int[] data, boolean signExtends)
…
}
interface BitsOutput {
…
}
EDJE API : COMM PORTS
Manage I/O pins connected to the MCU, configuring them with different
mode/options:
Digital In/Out: General Purpose Input/Output (GPIO)
• (input configurable in floating, pull-up or pull-down modes)
LED, Buzzer, Button
Analog In: Analog to Digital Converter (ADC)
• Potentiometer, Temperature Sensor, Light Sensor
Analog Out: Digital to Analog Converter (DAC)
• Speaker, Light Dimmer
Pulse Width Modulation: (PWM)
• Motor
EDJE API : DIGITAL AND ANALOG I/O
• A pin is identified by the port name and an ID
• Port name can be
• MCU specific
EDJE API : DIGITAL AND ANALOG I/O
PortAPortB
• A pin is identified by the port name and an ID
• Port name can be
• Board specific
EDJE API : DIGITAL AND ANALOG I/O
J1
J2
J3
J4
• A pin is identified by the port name and an ID
• Port name can be
• Standard / application dependent
EDJE API : DIGITAL AND ANALOG I/O
Digital Arduino
Analog Arduino
interface GPIOPort extends Peripheral {
enum Mode {
DIGITAL_INPUT, DIGITAL_INPUT_PULLUP,
DIGITAL_INPUT_PULLDOWN, DIGITAL_OUTPUT,
ANALOG_INPUT, ANALOG_OUTPUT
}
void setMode(int pin, Mode mode);
boolean getDigitalValue(int pin);
void setDigitalValue(int pin, boolean value);
int getAnalogValue(int pin);
void setAnalogValue(int pin, int value);
int getAnalogMinValue(int pin);
int getAnalogMaxValue(int pin);
}
EDJE API : DIGITAL AND ANALOG I/O
STM32F746G-DISCO
Cortex-M7 200 MHz
RAM: 8 MB
Flash: 16 MB
EDJE API : DIGITAL AND ANALOG I/O SAMPLES
Eth
Audio
USB-micro
USB-micro
USB-mini
(STLink)
SD
Digital
Arduino
Analog
Arduino
STM32F746G-DISCO
Cortex-M7 200 MHz
RAM: 8 MB
Flash: 16 MB
YWROBOT
(Easy Module Shield v1)
EDJE API : DIGITAL AND ANALOG I/O SAMPLES
Eth
Audio
USB-micro
USB-micro
USB-mini
(STLink)
SD
Digital
Arduino
Analog
Arduino
EDJE API : DIGITAL AND ANALOG I/O SAMPLES
// Let’s blink a led
GPIOPort gpio = PeripheralManager.find(GPIOPort.class,
"ARDUINO_DIGITAL");
gpio.setMode(12, Mode.DIGITAL_OUTPUT);
boolean toggle = true;
while(true) {
gpio.setDigitalValue(12, toggle); // that’s D12
toggle = !toggle;
sleep(500);
}
EDJE API: DIGITAL AND ANALOG I/O SAMPLES
// Let’s read a potentiometer
GPIOPort gpio = PeripheralManager.find(GPIOPort.class,
"ARDUINO_ANALOG");
gpio.setMode(0, Mode.ANALOG_INPUT);
int value = 0;
while(true) {
int value = gpio.getAnalogValue(0); // that’s A0
System.out.println("potentiometer value = " + value);
sleep(500);
}
EDJE API: DIGITAL AND ANALOG I/O SAMPLES
If you combine the two, guess what you can get…
DEMO
DEMO
PROJECT STATUS
Initial code drop (July 21st)
• Submitted after Legal review
• In develop branch, not master
• Draft API
Scope:
• Peripheral Management
• Connection API
• No actual peripheral APIs (no GPIO, no CommPort, …)
WHAT IS AVAILABLE
Updated / New API
• Core API changes (generics, permissions)
• CommPort API
• GPIO API
More tests
Samples
Reference implementation on MicroEJ OS
AVAILABLE FOR ECLIPSECON EUROPE 2016
Features
• Peripheral Management
• UART, USB CDC, GPIO, DAC, ADC
Hardware
• STM32F746G-DISCO
• Cortex-M7 @ 200 MHz
• RAM: 8 MB
• Flash: 16 MB
Platform
• MicroEJ OS
• FreeRTOS
• STM32Cube
REFERENCE IMPLEMENTATION: ON MICROEJ
Features
• Peripheral Management
• UART, USB CDC, GPIO, DAC, ADC
PC Simulation
• Java® SE
• Hardware In the Loop Simulation (HIL)
REFERENCE IMPLEMENTATION: ON MICROEJ
Execution
Flow
Ethernet
or Serial
http://developer.microej.com/getting-started.html
• MicroEJ Studio Installer
• Firmware for STM32F746-DISCO, NXP K65, Renesas Synergy DK-S7
• Sample code
• Hello world
• Widgets
• Network
• Smartwatch
• Store: communitystore.microej.com
MICROEJ OS
More API
PWM
SPI
I2C
CAN
Watchdog
More Reference Implementations
Edje / MicroEJ / Other boards
WHAT’S NEXT
CALL TO ACTION
Features
• Peripheral Management
• UART, USB CDC, GPIO, DAC, ADC
Hardware
• Raspberry-Pi 2
• Quad-Cortex-A7 @ 900 MHz
• RAM: 1 GB RAM
Platform
• Kura
• OpenJDK
• Linux
OTHER REFERENCE IMPLEMENTATION: JAVA SE ?
THANK YOU
FOR YOUR ATTENTION!
https://projects.eclipse.org/projects/iot.edje

More Related Content

What's hot

IoT Saturday PN 2019 - Eurotech
IoT Saturday PN 2019 - EurotechIoT Saturday PN 2019 - Eurotech
IoT Saturday PN 2019 - EurotechLuca Dazi
 
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...MediaTek Labs
 
Nio100 product guide 20150520
Nio100 product guide 20150520Nio100 product guide 20150520
Nio100 product guide 20150520和得 王
 
Developing a NodeBot using Intel XDK IoT Edition
Developing a NodeBot using Intel XDK IoT EditionDeveloping a NodeBot using Intel XDK IoT Edition
Developing a NodeBot using Intel XDK IoT EditionIntel® Software
 
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...Paris Open Source Summit
 
DotNetToscana - Azure IoT Hub - Il Concentratore
DotNetToscana - Azure IoT Hub - Il ConcentratoreDotNetToscana - Azure IoT Hub - Il Concentratore
DotNetToscana - Azure IoT Hub - Il ConcentratoreRiccardo Cappello
 
Developing IoT devices. Creating wearables with the new LinkIt™ 2523 HDK by SAC
Developing IoT devices. Creating wearables with the new LinkIt™ 2523 HDK by SACDeveloping IoT devices. Creating wearables with the new LinkIt™ 2523 HDK by SAC
Developing IoT devices. Creating wearables with the new LinkIt™ 2523 HDK by SACMediaTek Labs
 
Enabling IoT Devices’ Hardware and Software Interoperability, IPSO Alliance (...
Enabling IoT Devices’ Hardware and Software Interoperability, IPSO Alliance (...Enabling IoT Devices’ Hardware and Software Interoperability, IPSO Alliance (...
Enabling IoT Devices’ Hardware and Software Interoperability, IPSO Alliance (...Open Mobile Alliance
 
MicroEJ OS for IoT devices
MicroEJ OS for IoT devicesMicroEJ OS for IoT devices
MicroEJ OS for IoT devicescharlotte75009
 
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoTUtilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoTPôle Systematic Paris-Region
 
MediaTek IoT power management webinar
MediaTek IoT power management webinarMediaTek IoT power management webinar
MediaTek IoT power management webinarMediaTek Labs
 
From IoT Central to IoT Hub
From IoT Central to IoT HubFrom IoT Central to IoT Hub
From IoT Central to IoT HubMarco Parenzan
 
Orbleaf: Integrated Smart Card Development Platform
Orbleaf: Integrated Smart Card Development PlatformOrbleaf: Integrated Smart Card Development Platform
Orbleaf: Integrated Smart Card Development PlatformTech in Asia ID
 
Survey of Operating Systems for the IoT Environment
Survey of Operating Systems for the IoT EnvironmentSurvey of Operating Systems for the IoT Environment
Survey of Operating Systems for the IoT EnvironmentEswar Publications
 
Overview of the Intel® Internet of Things Developer Kit
Overview of the Intel® Internet of Things Developer KitOverview of the Intel® Internet of Things Developer Kit
Overview of the Intel® Internet of Things Developer KitIntel® Software
 
MediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 WebinarMediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 WebinarMediaTek Labs
 
Introduction to epid
Introduction to epidIntroduction to epid
Introduction to epidBeMyApp
 
OCF/IoTivity for Healthcare/Fitness/Wearable
OCF/IoTivity for Healthcare/Fitness/WearableOCF/IoTivity for Healthcare/Fitness/Wearable
OCF/IoTivity for Healthcare/Fitness/WearableJonathan Jeon
 
Creating a successful IoT product with MediaTek Labs
Creating a successful IoT product with MediaTek LabsCreating a successful IoT product with MediaTek Labs
Creating a successful IoT product with MediaTek LabsMediaTek Labs
 
The MRAA and UPM Middleware Libraries
The MRAA and UPM Middleware LibrariesThe MRAA and UPM Middleware Libraries
The MRAA and UPM Middleware LibrariesIntel® Software
 

What's hot (20)

IoT Saturday PN 2019 - Eurotech
IoT Saturday PN 2019 - EurotechIoT Saturday PN 2019 - Eurotech
IoT Saturday PN 2019 - Eurotech
 
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...
 
Nio100 product guide 20150520
Nio100 product guide 20150520Nio100 product guide 20150520
Nio100 product guide 20150520
 
Developing a NodeBot using Intel XDK IoT Edition
Developing a NodeBot using Intel XDK IoT EditionDeveloping a NodeBot using Intel XDK IoT Edition
Developing a NodeBot using Intel XDK IoT Edition
 
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
 
DotNetToscana - Azure IoT Hub - Il Concentratore
DotNetToscana - Azure IoT Hub - Il ConcentratoreDotNetToscana - Azure IoT Hub - Il Concentratore
DotNetToscana - Azure IoT Hub - Il Concentratore
 
Developing IoT devices. Creating wearables with the new LinkIt™ 2523 HDK by SAC
Developing IoT devices. Creating wearables with the new LinkIt™ 2523 HDK by SACDeveloping IoT devices. Creating wearables with the new LinkIt™ 2523 HDK by SAC
Developing IoT devices. Creating wearables with the new LinkIt™ 2523 HDK by SAC
 
Enabling IoT Devices’ Hardware and Software Interoperability, IPSO Alliance (...
Enabling IoT Devices’ Hardware and Software Interoperability, IPSO Alliance (...Enabling IoT Devices’ Hardware and Software Interoperability, IPSO Alliance (...
Enabling IoT Devices’ Hardware and Software Interoperability, IPSO Alliance (...
 
MicroEJ OS for IoT devices
MicroEJ OS for IoT devicesMicroEJ OS for IoT devices
MicroEJ OS for IoT devices
 
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoTUtilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
 
MediaTek IoT power management webinar
MediaTek IoT power management webinarMediaTek IoT power management webinar
MediaTek IoT power management webinar
 
From IoT Central to IoT Hub
From IoT Central to IoT HubFrom IoT Central to IoT Hub
From IoT Central to IoT Hub
 
Orbleaf: Integrated Smart Card Development Platform
Orbleaf: Integrated Smart Card Development PlatformOrbleaf: Integrated Smart Card Development Platform
Orbleaf: Integrated Smart Card Development Platform
 
Survey of Operating Systems for the IoT Environment
Survey of Operating Systems for the IoT EnvironmentSurvey of Operating Systems for the IoT Environment
Survey of Operating Systems for the IoT Environment
 
Overview of the Intel® Internet of Things Developer Kit
Overview of the Intel® Internet of Things Developer KitOverview of the Intel® Internet of Things Developer Kit
Overview of the Intel® Internet of Things Developer Kit
 
MediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 WebinarMediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 Webinar
 
Introduction to epid
Introduction to epidIntroduction to epid
Introduction to epid
 
OCF/IoTivity for Healthcare/Fitness/Wearable
OCF/IoTivity for Healthcare/Fitness/WearableOCF/IoTivity for Healthcare/Fitness/Wearable
OCF/IoTivity for Healthcare/Fitness/Wearable
 
Creating a successful IoT product with MediaTek Labs
Creating a successful IoT product with MediaTek LabsCreating a successful IoT product with MediaTek Labs
Creating a successful IoT product with MediaTek Labs
 
The MRAA and UPM Middleware Libraries
The MRAA and UPM Middleware LibrariesThe MRAA and UPM Middleware Libraries
The MRAA and UPM Middleware Libraries
 

Viewers also liked

IoT Microservices at the Edge with Eclipse ioFog
IoT Microservices at the Edge with Eclipse ioFogIoT Microservices at the Edge with Eclipse ioFog
IoT Microservices at the Edge with Eclipse ioFogKilton Hopkins
 
IoT Projects - DIY Wireless Sensor Network at Dreamforce 2013 #DevZoneLab
IoT Projects - DIY Wireless Sensor Network at Dreamforce 2013 #DevZoneLabIoT Projects - DIY Wireless Sensor Network at Dreamforce 2013 #DevZoneLab
IoT Projects - DIY Wireless Sensor Network at Dreamforce 2013 #DevZoneLabReidCarlberg
 
ConnectTheDots - My Galileo based weather station and first entry into IoT
ConnectTheDots - My Galileo based weather station and first entry into IoTConnectTheDots - My Galileo based weather station and first entry into IoT
ConnectTheDots - My Galileo based weather station and first entry into IoTJoe Healy
 
Eclipse IoT - ecosystem
Eclipse IoT - ecosystemEclipse IoT - ecosystem
Eclipse IoT - ecosystemBoris Adryan
 
MQTT - Austin IoT Meetup
MQTT - Austin IoT MeetupMQTT - Austin IoT Meetup
MQTT - Austin IoT MeetupBryan Boyd
 
Cloud iot-new-software-requirements
Cloud iot-new-software-requirementsCloud iot-new-software-requirements
Cloud iot-new-software-requirementsRoberto C. Mayer
 
Creating end-to-end IoT applications with Eclipse Kura & Solair IoT Platform
Creating end-to-end IoT applications with Eclipse Kura & Solair IoT PlatformCreating end-to-end IoT applications with Eclipse Kura & Solair IoT Platform
Creating end-to-end IoT applications with Eclipse Kura & Solair IoT PlatformValeria Naldi
 
Building Applications with Eclipse IoT, Block by Block
Building Applications with Eclipse IoT, Block by BlockBuilding Applications with Eclipse IoT, Block by Block
Building Applications with Eclipse IoT, Block by BlockAnne Nevin
 
IoTWorld 2016 OSS Keynote Param Singh, Ian Skerrett
IoTWorld 2016 OSS Keynote Param Singh, Ian SkerrettIoTWorld 2016 OSS Keynote Param Singh, Ian Skerrett
IoTWorld 2016 OSS Keynote Param Singh, Ian SkerrettParam Singh
 
Open source IoT
Open source IoTOpen source IoT
Open source IoTIoT613
 
Examining the emergent open source IoT ecosystem - IoT World Europe 2016
Examining the emergent open source IoT ecosystem - IoT World Europe 2016Examining the emergent open source IoT ecosystem - IoT World Europe 2016
Examining the emergent open source IoT ecosystem - IoT World Europe 2016Benjamin Cabé
 
2016-09-eclipse-iot-cf-summit
2016-09-eclipse-iot-cf-summit2016-09-eclipse-iot-cf-summit
2016-09-eclipse-iot-cf-summitMike Milinkovich
 
Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014Benjamin Cabé
 
Simple Android Project (SAP)... A Test Application
Simple Android Project (SAP)... A Test ApplicationSimple Android Project (SAP)... A Test Application
Simple Android Project (SAP)... A Test ApplicationAritra Mukherjee
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTBenjamin Cabé
 
Eclipse IoT: Open source technology for IoT developers
Eclipse IoT: Open source technology for IoT developersEclipse IoT: Open source technology for IoT developers
Eclipse IoT: Open source technology for IoT developersIan Skerrett
 
Devoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoTDevoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoTBenjamin Cabé
 

Viewers also liked (20)

IoT Microservices at the Edge with Eclipse ioFog
IoT Microservices at the Edge with Eclipse ioFogIoT Microservices at the Edge with Eclipse ioFog
IoT Microservices at the Edge with Eclipse ioFog
 
IoT Projects - DIY Wireless Sensor Network at Dreamforce 2013 #DevZoneLab
IoT Projects - DIY Wireless Sensor Network at Dreamforce 2013 #DevZoneLabIoT Projects - DIY Wireless Sensor Network at Dreamforce 2013 #DevZoneLab
IoT Projects - DIY Wireless Sensor Network at Dreamforce 2013 #DevZoneLab
 
ECE-EMBEDDED- 2015
ECE-EMBEDDED- 2015ECE-EMBEDDED- 2015
ECE-EMBEDDED- 2015
 
ConnectTheDots - My Galileo based weather station and first entry into IoT
ConnectTheDots - My Galileo based weather station and first entry into IoTConnectTheDots - My Galileo based weather station and first entry into IoT
ConnectTheDots - My Galileo based weather station and first entry into IoT
 
Eclipse IoT - ecosystem
Eclipse IoT - ecosystemEclipse IoT - ecosystem
Eclipse IoT - ecosystem
 
Report IOT Robot
Report IOT RobotReport IOT Robot
Report IOT Robot
 
MQTT - Austin IoT Meetup
MQTT - Austin IoT MeetupMQTT - Austin IoT Meetup
MQTT - Austin IoT Meetup
 
Cloud iot-new-software-requirements
Cloud iot-new-software-requirementsCloud iot-new-software-requirements
Cloud iot-new-software-requirements
 
Creating end-to-end IoT applications with Eclipse Kura & Solair IoT Platform
Creating end-to-end IoT applications with Eclipse Kura & Solair IoT PlatformCreating end-to-end IoT applications with Eclipse Kura & Solair IoT Platform
Creating end-to-end IoT applications with Eclipse Kura & Solair IoT Platform
 
Building Applications with Eclipse IoT, Block by Block
Building Applications with Eclipse IoT, Block by BlockBuilding Applications with Eclipse IoT, Block by Block
Building Applications with Eclipse IoT, Block by Block
 
IoTWorld 2016 OSS Keynote Param Singh, Ian Skerrett
IoTWorld 2016 OSS Keynote Param Singh, Ian SkerrettIoTWorld 2016 OSS Keynote Param Singh, Ian Skerrett
IoTWorld 2016 OSS Keynote Param Singh, Ian Skerrett
 
Open source IoT
Open source IoTOpen source IoT
Open source IoT
 
Examining the emergent open source IoT ecosystem - IoT World Europe 2016
Examining the emergent open source IoT ecosystem - IoT World Europe 2016Examining the emergent open source IoT ecosystem - IoT World Europe 2016
Examining the emergent open source IoT ecosystem - IoT World Europe 2016
 
2016-09-eclipse-iot-cf-summit
2016-09-eclipse-iot-cf-summit2016-09-eclipse-iot-cf-summit
2016-09-eclipse-iot-cf-summit
 
Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014
 
IoT Aquarium 2
IoT Aquarium 2IoT Aquarium 2
IoT Aquarium 2
 
Simple Android Project (SAP)... A Test Application
Simple Android Project (SAP)... A Test ApplicationSimple Android Project (SAP)... A Test Application
Simple Android Project (SAP)... A Test Application
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoT
 
Eclipse IoT: Open source technology for IoT developers
Eclipse IoT: Open source technology for IoT developersEclipse IoT: Open source technology for IoT developers
Eclipse IoT: Open source technology for IoT developers
 
Devoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoTDevoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoT
 

Similar to Eclipse Edje: A Java API for Microcontrollers

Presentation for IoT workshop at Sinhagad University (Feb 4, 2016) - 2/2
Presentation for IoT workshop at Sinhagad University (Feb 4, 2016) - 2/2Presentation for IoT workshop at Sinhagad University (Feb 4, 2016) - 2/2
Presentation for IoT workshop at Sinhagad University (Feb 4, 2016) - 2/2Bhavin Chandarana
 
Linxu conj2016 96boards
Linxu conj2016 96boardsLinxu conj2016 96boards
Linxu conj2016 96boardsLF Events
 
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...christopherfairbairn
 
IT Solution through IoT Development
IT Solution through IoT DevelopmentIT Solution through IoT Development
IT Solution through IoT DevelopmentAndri Yadi
 
MicroEJ, the OS for IoT
MicroEJ, the OS for IoTMicroEJ, the OS for IoT
MicroEJ, the OS for IoTMicroEJ
 
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...Christopher Diamantopoulos
 
IRJET- Navigation Camp – Bot
IRJET-  	  Navigation Camp – BotIRJET-  	  Navigation Camp – Bot
IRJET- Navigation Camp – BotIRJET Journal
 
IoT and connected devices
IoT and connected devicesIoT and connected devices
IoT and connected devicesPascal Bodin
 
Leveraging the strength of OSGi to deliver a convergent IoT Ecosystem - O Log...
Leveraging the strength of OSGi to deliver a convergent IoT Ecosystem - O Log...Leveraging the strength of OSGi to deliver a convergent IoT Ecosystem - O Log...
Leveraging the strength of OSGi to deliver a convergent IoT Ecosystem - O Log...mfrancis
 
Webinar: NVIDIA JETSON – A Inteligência Artificial na palma de sua mão
Webinar: NVIDIA JETSON – A Inteligência Artificial na palma de sua mãoWebinar: NVIDIA JETSON – A Inteligência Artificial na palma de sua mão
Webinar: NVIDIA JETSON – A Inteligência Artificial na palma de sua mãoEmbarcados
 
Programming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.ioProgramming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.ioGünter Obiltschnig
 
Software virtualization lessons for extreme IoT portability and scale
Software virtualization lessons for extreme IoT portability and scaleSoftware virtualization lessons for extreme IoT portability and scale
Software virtualization lessons for extreme IoT portability and scaleMicroEJ
 
NGIoT standardisation workshops_Jens Hagemeyer presentation
NGIoT standardisation workshops_Jens Hagemeyer presentationNGIoT standardisation workshops_Jens Hagemeyer presentation
NGIoT standardisation workshops_Jens Hagemeyer presentationVEDLIoT Project
 
Android Things in action
Android Things in actionAndroid Things in action
Android Things in actionStefano Sanna
 
IDF_Eclipse_Plugin_EclipseCon2020_v2.pdf
IDF_Eclipse_Plugin_EclipseCon2020_v2.pdfIDF_Eclipse_Plugin_EclipseCon2020_v2.pdf
IDF_Eclipse_Plugin_EclipseCon2020_v2.pdfKondal Kolipaka
 

Similar to Eclipse Edje: A Java API for Microcontrollers (20)

Presentation for IoT workshop at Sinhagad University (Feb 4, 2016) - 2/2
Presentation for IoT workshop at Sinhagad University (Feb 4, 2016) - 2/2Presentation for IoT workshop at Sinhagad University (Feb 4, 2016) - 2/2
Presentation for IoT workshop at Sinhagad University (Feb 4, 2016) - 2/2
 
Linxu conj2016 96boards
Linxu conj2016 96boardsLinxu conj2016 96boards
Linxu conj2016 96boards
 
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
Christchurch Embedded .NET User Group - Introduction to Microsoft Embedded pl...
 
Embedded. What Why How
Embedded. What Why HowEmbedded. What Why How
Embedded. What Why How
 
IT Solution through IoT Development
IT Solution through IoT DevelopmentIT Solution through IoT Development
IT Solution through IoT Development
 
MicroEJ, the OS for IoT
MicroEJ, the OS for IoTMicroEJ, the OS for IoT
MicroEJ, the OS for IoT
 
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
 
IRJET- Navigation Camp – Bot
IRJET-  	  Navigation Camp – BotIRJET-  	  Navigation Camp – Bot
IRJET- Navigation Camp – Bot
 
IoT and connected devices
IoT and connected devicesIoT and connected devices
IoT and connected devices
 
Leveraging the strength of OSGi to deliver a convergent IoT Ecosystem - O Log...
Leveraging the strength of OSGi to deliver a convergent IoT Ecosystem - O Log...Leveraging the strength of OSGi to deliver a convergent IoT Ecosystem - O Log...
Leveraging the strength of OSGi to deliver a convergent IoT Ecosystem - O Log...
 
Webinar: NVIDIA JETSON – A Inteligência Artificial na palma de sua mão
Webinar: NVIDIA JETSON – A Inteligência Artificial na palma de sua mãoWebinar: NVIDIA JETSON – A Inteligência Artificial na palma de sua mão
Webinar: NVIDIA JETSON – A Inteligência Artificial na palma de sua mão
 
Embedded Systems
Embedded SystemsEmbedded Systems
Embedded Systems
 
Programming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.ioProgramming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.io
 
IoT on Raspberry Pi
IoT on Raspberry PiIoT on Raspberry Pi
IoT on Raspberry Pi
 
Software virtualization lessons for extreme IoT portability and scale
Software virtualization lessons for extreme IoT portability and scaleSoftware virtualization lessons for extreme IoT portability and scale
Software virtualization lessons for extreme IoT portability and scale
 
iWave Systems Techologies Pvt Ltd: Products- Software BSPs
iWave Systems Techologies Pvt Ltd: Products- Software BSPsiWave Systems Techologies Pvt Ltd: Products- Software BSPs
iWave Systems Techologies Pvt Ltd: Products- Software BSPs
 
NGIoT standardisation workshops_Jens Hagemeyer presentation
NGIoT standardisation workshops_Jens Hagemeyer presentationNGIoT standardisation workshops_Jens Hagemeyer presentation
NGIoT standardisation workshops_Jens Hagemeyer presentation
 
CV_Arshad_21June16
CV_Arshad_21June16CV_Arshad_21June16
CV_Arshad_21June16
 
Android Things in action
Android Things in actionAndroid Things in action
Android Things in action
 
IDF_Eclipse_Plugin_EclipseCon2020_v2.pdf
IDF_Eclipse_Plugin_EclipseCon2020_v2.pdfIDF_Eclipse_Plugin_EclipseCon2020_v2.pdf
IDF_Eclipse_Plugin_EclipseCon2020_v2.pdf
 

Recently uploaded

Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 

Recently uploaded (20)

Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 

Eclipse Edje: A Java API for Microcontrollers

  • 1. © IS2T S.A. 2016. All rights reserved. EDJE PROJECT The Software Foundation for IoT Devices https://projects.eclipse.org/projects/iot.edje
  • 2. Edje focuses on the following aspects EDJE API FOCUS Controller Communication Interfaces Serial Port CAN Digital and Analog I/O GPIO Peripheral Management LCD USB Devices Analog Input
  • 3. Laurent Lagosanto Senior Architect at MicroEJ® 18 years of “Java in the Small” activities laurent.lagosanto@microej.com ABOUT THE PRESENTER 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 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.
  • 4. Independent Software Vendor, global player in the embedded IoT industry • http://www.microej.com/about • Software tool & runtime licenses • Professional services, training & consulting KEY FINANCIALS • $5M Series B funding end 2011 – $20M R&D total investment Offices in France, Germany, USA Expertise in embedded, virtualization, software engineering & process Partnerships with key IoT, silicon, embedded SW and HW (EMS) vendors ABOUT MICROEJ
  • 5. PARTNERS & CONSORTIA – STRONG BUSINESS PARTNERS SERVICES HARDWARE SOFTWARE CLOUD ALLIANCES
  • 6. OPERATING SYSTEMS FOR ENABLING THE IOT RTOS Linux Volume 75% IoT = “sub-gig” things: • Processor < GHz • Memory < GB 25% SW Foundation MPU (>$10 ASP)MCU ($1-6 ASP)
  • 8. EDJE AND IOT INTRODUCTION
  • 9. IOT TOPOLOGY & INTERACTIONS IOT DEVICES GATEWAY SERVER
  • 10. IOT TOPOLOGY : DEVICES & GATEWAYS 8/16/32-bit MCU Mono-Core Frequency: < 200 MHz Flash: < 1 MB RAM: < 512 KB 32/64-bit MPU Multi-Core Frequency: in GHz Flash: in GB RAM: in GB MCU MPU IOT DEVICES GATEWAY
  • 11. IOT HARDWARE EXAMPLES STM32F4 DISCOVERY Processor: 32-bits Cortex-M4 (STM32F407VGT6) Frequency: 168 MHz RAM: 192 KB Flash: 1 MB RASPBERRY PI 2 Processor: 32-bits quad-core Cortex-A7 (BCM2836) Frequency: 900 MHz RAM: 1 GB Flash: SD Card (GBs)
  • 12. THE EDJE PROJECT Sensors/Actuators Local Network Internet A library at the edge of the IoT for sensor hubs and devices
  • 13. Performance matters Almost no boot time, instantly-on Power efficiency, last for months, years Size matters Cost-effectiveness is key : footprint Size of the package Versatility matters Plethora of protocols (to hardware, and to cloud services) Shorten time to market by reducing development time IOT : WHAT MATTERS FOR EDGE DEVICES ?
  • 14. AN EXEMPLE OF FOOTPRINT REDUCTION James Bauer James Bauer Reply Call me later Alex Jackson Hi there! I’ll be late, sorry. RTOS (Linux) + Java platform RTOS (Any/None) + Java platform Power 410 mAh – batteries recharge every day Batteries recharge every two or three weeks Processor Qualcomm Snapdragon 400 MSM8226, ARM based Quadcore 1.2 GHz ARM Cortex-M4 based MCU, 100 MHz RAM (data) 256 MB Less than 0.5 MB FLASH (Code + Resources) 2,000 MB 2 MB Boot Time 35,000 ms 50 ms 63% Bill of Materials savings 87% power consumption savings
  • 15. ROM (KB) Standard mode ROM (KB) Tiny mode** RAM (KB) Application Total: 36.1 36.1 Total: 27.2 27.2 See below (52.0) Resources Images uncompressed Fonts Strings Total: 836.9 803.0 16.7 17.2 Total: 836.9 803.0 16.7 17.2 MicroEJ Platform EDC MicroUI, MWT, Motion Total: 198.0 24.1 172.9 Total: 143.0 19.2 123.8 52.0 (application heap, stacks) MicroEJ Sandbox MicroEJ software core (VM) MicroEJ RAM optimizer (GC) Total: 29.1 15.2 13.9 Total: 29.1 15.2 13.9 BSP RTOS Driver & Low Level API UI drivers Total: 108.4 13.4 54.5 40.5 Total: 108.4 13.4 54.5 40.5 1.5 522 (2x frame buffers WQVGA) + 1 Total without Resources Total with Resources 371 KB 1.2 MB 307 KB 1.1 MB 606.5 KB 606.5 KB TYPICAL REAL APPLICATION FOOTPRINT (KB) WASHING MACHINE ON ARM CORTEX-M4 / GCC **Tiny mode available when MicroEJ application code is below 256KB of flash
  • 16. A Hardware Abstraction Java API for the embedded systems • Peripheral management • Controller Communication Interfaces (Serial connection, CAN, SPI, I²C) • Digital and Analog I/O (GPIO, ADC, DAC) Scope • Target resource-constrained devices (MCU & low-cost MPUs) • Provide ready-to-use software packages for target hardware • Define a modular and easy to port framework Project Status • Eclipse IoT project • Proposal approved, entered Incubation phase • Initial code drop end of July EDJE PROJECT
  • 18. JavaSE List of minimum Java API The minimum execution environment provided by an Edje-compatible device Intersection between Java SE, Java SE Embedded, MicroEJ and Android EDJE DEVICE CONFIGURATION (EDC) JavaSE Embedded Android MicroEJ OS EDC
  • 19. List of minimum Java API The minimum execution environment provided by an Edje-compatible device Intersection between Java SE, Java SE Embedded, MicroEJ and Android EDJE DEVICE CONFIGURATION (EDC) Edje Device Configuration Edje API Edje Application Library Execution Environment Application Framework Other APIs Other APIs Other APIs
  • 20. 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) EDJE DEVICE CONFIGURATION (EDC)
  • 21. These features are NOT included: • Network APIs • Storage APIs • Communication APIs • Graphics & User Interface Some may be added as Edje libraries, some don’t. Some may require native implementations, some don’t and can be downloaded. EDJE DEVICE CONFIGURATION (EDC)
  • 23. Edje focuses on the following aspects EDJE API FOCUS Controller Communication Interfaces Serial Port CAN Digital and Analog I/O GPIO Peripheral Management LCD USB Devices Analog Input
  • 24. Lists the peripherals of a platform • MCU 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 disappear • applications can adapt to the target configuration • Dynamic peripherals • they can be unplugged from the device • applications can react to these events (e.g. an application can register a Z-wave plug “peripheral driver” because a USB serial port just appeared) EDJE API: PERIPHERAL MANAGEMENT
  • 25. package org.eclipse.edje; interface Peripheral { HardwareDescriptor<? extends Peripheral> getDescriptor(); String getName(); Peripheral getParent(); Peripheral[] getChildren(); } interface HardwareDescriptor<P extends Peripheral> { String getName(); String getProperty(String propertyName); String[] getPropertyNames(); String[] getPropertyValues(); } EDJE API: PERIPHERAL MANAGEMENT
  • 26. package org.eclipse.edje; class PeripheralManager { Iterator<Peripheral> list() Iterator<P> list(Class<P> peripheralType) P find(Class<P> peripheralType, String peripheralName) void addRegistrationListener(RegistrationListener<P> li, Class<P> type) void removeRegistrationListener(RegistrationListener<P> li) void register(Class<C> peripheralType, P peripheral) void unregister(P peripheral) } EDJE API: PERIPHERAL MANAGEMENT
  • 27. EDJE API: PERIPHERAL MANAGEMENT SAMPLES // static use case: Iterator<Peripheral> peripherals = PeripheralManager.list(); while(peripherals.hasNext()) { Peripheral p = peripherals.next(); System.out.println("Edje periph : " + p.getName()); } // dynamic use case: PeripheralManager.addRegistrationListener(new RegistrationListener<MyDevice>() { public void peripheralRegistered(RegistrationEvent<MyDevice> event) { event.getPeripheral().myDeviceMethod(…); } public void peripheralUnregistered(RegistrationEvent<MyDevice> event){ } }, MyDevice.class);
  • 28. Some peripherals can establish a connection to external devices • Serial Connection (UART) • Serial Peripheral Interface (SPI) • Inter-Integrated Circuit (I²C) • Controller Area Network (CAN) Such peripherals implement the Connectable interface: interface Connectable { Connection openConnection(String args) throws IOException; } EDJE API: COMMUNICATION INTERFACES List<CommPort> serialPorts = PeripheralManager.list(CommPort.class); for(CommPort serialPort : serialPorts){ // a connection is auto-closeable: try {Connection cnx = serialPort.openConnection("baudrate=115200;bitsperchar=8") { … } }
  • 29. interface CommPort extends Peripheral, Connectable { } interface CommConnection extends StreamConnection { int getBaudrate(); int setBaudrate(int baudrate); } interface BitsInput { int getLength(); int readBits(boolean signExtends) int readBits(int[] data, boolean signExtends) … } interface BitsOutput { … } EDJE API : COMM PORTS
  • 30. Manage I/O pins connected to the MCU, configuring them with different mode/options: Digital In/Out: General Purpose Input/Output (GPIO) • (input configurable in floating, pull-up or pull-down modes) LED, Buzzer, Button Analog In: Analog to Digital Converter (ADC) • Potentiometer, Temperature Sensor, Light Sensor Analog Out: Digital to Analog Converter (DAC) • Speaker, Light Dimmer Pulse Width Modulation: (PWM) • Motor EDJE API : DIGITAL AND ANALOG I/O
  • 31. • A pin is identified by the port name and an ID • Port name can be • MCU specific EDJE API : DIGITAL AND ANALOG I/O PortAPortB
  • 32. • A pin is identified by the port name and an ID • Port name can be • Board specific EDJE API : DIGITAL AND ANALOG I/O J1 J2 J3 J4
  • 33. • A pin is identified by the port name and an ID • Port name can be • Standard / application dependent EDJE API : DIGITAL AND ANALOG I/O Digital Arduino Analog Arduino
  • 34. interface GPIOPort extends Peripheral { enum Mode { DIGITAL_INPUT, DIGITAL_INPUT_PULLUP, DIGITAL_INPUT_PULLDOWN, DIGITAL_OUTPUT, ANALOG_INPUT, ANALOG_OUTPUT } void setMode(int pin, Mode mode); boolean getDigitalValue(int pin); void setDigitalValue(int pin, boolean value); int getAnalogValue(int pin); void setAnalogValue(int pin, int value); int getAnalogMinValue(int pin); int getAnalogMaxValue(int pin); } EDJE API : DIGITAL AND ANALOG I/O
  • 35. STM32F746G-DISCO Cortex-M7 200 MHz RAM: 8 MB Flash: 16 MB EDJE API : DIGITAL AND ANALOG I/O SAMPLES Eth Audio USB-micro USB-micro USB-mini (STLink) SD Digital Arduino Analog Arduino
  • 36. STM32F746G-DISCO Cortex-M7 200 MHz RAM: 8 MB Flash: 16 MB YWROBOT (Easy Module Shield v1) EDJE API : DIGITAL AND ANALOG I/O SAMPLES Eth Audio USB-micro USB-micro USB-mini (STLink) SD Digital Arduino Analog Arduino
  • 37. EDJE API : DIGITAL AND ANALOG I/O SAMPLES
  • 38. // Let’s blink a led GPIOPort gpio = PeripheralManager.find(GPIOPort.class, "ARDUINO_DIGITAL"); gpio.setMode(12, Mode.DIGITAL_OUTPUT); boolean toggle = true; while(true) { gpio.setDigitalValue(12, toggle); // that’s D12 toggle = !toggle; sleep(500); } EDJE API: DIGITAL AND ANALOG I/O SAMPLES
  • 39. // Let’s read a potentiometer GPIOPort gpio = PeripheralManager.find(GPIOPort.class, "ARDUINO_ANALOG"); gpio.setMode(0, Mode.ANALOG_INPUT); int value = 0; while(true) { int value = gpio.getAnalogValue(0); // that’s A0 System.out.println("potentiometer value = " + value); sleep(500); } EDJE API: DIGITAL AND ANALOG I/O SAMPLES
  • 40. If you combine the two, guess what you can get… DEMO
  • 41. DEMO
  • 43. Initial code drop (July 21st) • Submitted after Legal review • In develop branch, not master • Draft API Scope: • Peripheral Management • Connection API • No actual peripheral APIs (no GPIO, no CommPort, …) WHAT IS AVAILABLE
  • 44. Updated / New API • Core API changes (generics, permissions) • CommPort API • GPIO API More tests Samples Reference implementation on MicroEJ OS AVAILABLE FOR ECLIPSECON EUROPE 2016
  • 45. Features • Peripheral Management • UART, USB CDC, GPIO, DAC, ADC Hardware • STM32F746G-DISCO • Cortex-M7 @ 200 MHz • RAM: 8 MB • Flash: 16 MB Platform • MicroEJ OS • FreeRTOS • STM32Cube REFERENCE IMPLEMENTATION: ON MICROEJ
  • 46. Features • Peripheral Management • UART, USB CDC, GPIO, DAC, ADC PC Simulation • Java® SE • Hardware In the Loop Simulation (HIL) REFERENCE IMPLEMENTATION: ON MICROEJ Execution Flow Ethernet or Serial
  • 47. http://developer.microej.com/getting-started.html • MicroEJ Studio Installer • Firmware for STM32F746-DISCO, NXP K65, Renesas Synergy DK-S7 • Sample code • Hello world • Widgets • Network • Smartwatch • Store: communitystore.microej.com MICROEJ OS
  • 48. More API PWM SPI I2C CAN Watchdog More Reference Implementations Edje / MicroEJ / Other boards WHAT’S NEXT
  • 50. Features • Peripheral Management • UART, USB CDC, GPIO, DAC, ADC Hardware • Raspberry-Pi 2 • Quad-Cortex-A7 @ 900 MHz • RAM: 1 GB RAM Platform • Kura • OpenJDK • Linux OTHER REFERENCE IMPLEMENTATION: JAVA SE ?
  • 51. THANK YOU FOR YOUR ATTENTION! https://projects.eclipse.org/projects/iot.edje

Editor's Notes

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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 platform The 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.
  8. Some peripherals can be used to establish a connection to an external device or peripheral. Here are typical controller communication systems : UART, SPI, I²C, CAN These peripherals implement the Connectable interface that defines the openConnection method. The connection configuration is described by a String. Here is a simple example with Serial ports. First line retrieved the list of the serial port available on the device. The serialPort interface extends the connectable interface. Then for each serialport we can open a connection. These connections may be used to open input or output streams.
  9. The digital and analog I/O service manages the micro-controller pins. The API is inspired from Arduino C API. Depending on the MCU the pins can be configured in different ways. It can be a GPIO, then you can set or get the digital value of the pin (0 or 1). A GPIO can drive a LED, a buzzer, a button. For example, setting a pin to 1 can turn on a LED. A pin can be an Analog to digital converter. The pin is configured as an analog input. For example with a temperature sensor, you can get an integer value that represents the temperature. With a Digital to Analog converter you are able to drive a speaker or a light dimmer. A PWM is a more sophisticated analog output that can be used to control a motor.
  10. A micro-controller based implementation will also be provided. It will run on an STM32F7 discovery board designed by ST Microelectronics. The microcontroller is an ARM Cortex-M7. The java platform will be MicroEJ OS ported over FreeRTOS. The board support package used is STM32Cube.
  11. A micro-controller based implementation will also be provided. It will run on an STM32F7 discovery board designed by ST Microelectronics. The microcontroller is an ARM Cortex-M7. The java platform will be MicroEJ OS ported over FreeRTOS. The board support package used is STM32Cube.
  12. A PC simulation will also be provided. It will integrate an hardware in the loop solution. With this kind of architecture, the peripheral accesses are delegated to a real device that communicates with the PC using a serial or ethernet connection. This is useful for prototyping.
  13. The reference implementations will provide the same features: A peripheral manager UART, USB CDC, GPIO, DAC and ADC A raspberry pi implementation will be provided. It will run over Kura, the OpenJDK and linux.