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

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
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
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
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.
 
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
 
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
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Recently uploaded (20)

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...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
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
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
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 ...
 
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
 
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
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.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.