LINUX AND REAL-TIME JAVA FOR IOT
Transcript of LINUX AND REAL-TIME JAVA FOR IOT
![Page 1: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/1.jpg)
LINUX AND REAL-TIME JAVA FOR IOT
Randy Rorden Software Development Director, PTC Inc.
April 6, 2016
![Page 2: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/2.jpg)
2
EMBEDDED SYSTEMS EVOLUTION
CPU, Mem, Peripherals
Custom board
$$ Manufacturing
Chipsets
Std. Interfaces
Std. Form Factors
Commercial Boards
Multicore SoCs
On-chip Interfaces
Stacked DRAM, Flash
MEMS Sensors
Open Source Boards
RYO kernel/exec
Custom drivers
Assembly Code
Commercial RTOS
Customized BSP
C, Assembly
Embedded Linux
Open Source Drivers, Libs
C++, Java, Python, Javascript…
‘80s ‘90s ‘00s ‘10s
![Page 3: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/3.jpg)
3
TECHNOLOGY CONVERGENCE TO THE IOT
SoCs, MEMS, Open Source h/w, C++, Java, Embedded Linux
Virtualization, Containers, IaaS/PaaS/SaaS, SDN, NFV, OpenStack
Hadoop, MongoDB, Spark, TensorFlow, Torch, Leaf, Caffe
LTE, WiFi, Bluetooth LE, ZigBee, 6LoWPAN, LoRa, Sigfox, Weightless
![Page 4: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/4.jpg)
4
THE INTERNET OF THINGS
Storage
Analysis
Apps
Smart, Connected Products: Transportation
Energy
Health Care
Agriculture
Retail
Industrial Control
Home/Building Automation
Smart Cities
…and many more…
![Page 5: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/5.jpg)
5
IOT GATEWAYS
An IoT Gateway: – Acts as a communications access point
between networks
– Provides intelligence and storage at the Edge of the network
– Aggregates, filters, validates data from low-level sensors, forwarding results to the Cloud
– Controls actuators on behalf of Cloud commands and in response to local events
IoT
Cloud
Sensors and Actuators
IoT
Gateway
![Page 6: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/6.jpg)
6
BENEFITS OF IOT GATEWAYS
IoT Gateways can: – Connect legacy devices to the Internet of Things
– Assure secure communications with the Cloud
– Provide separation and isolation of end-nodes
– Be easily updated, adapted, configured over the network
– Relieve processing and storage demands from end-nodes
– Reduce overall costs while scaling up
– Help diagnose and troubleshoot device failures
– Offer local autonomy and intelligence
– Respond quickly to time-critical events
IoT
Cloud
Sensors and Actuators
IoT
Gateway
![Page 7: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/7.jpg)
7
THE IOT GATEWAY SOFTWARE STACK
Developers can:
Build it from scratch...
Hardware
Linux
Application
Code
(C/C++)
Use a high-level language
for faster development…
Hardware
Linux
Application
Code
(Java)
Java SE
Or leverage frameworks
and services…
Hardware
Linux
Application
Code
(Java)
Java SE
OSGi
we
b
DB
co
nfi
g
de
vic
e
clo
ud
up
da
te
![Page 8: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/8.jpg)
8
THE VALUE OF JAVA
Java Brings these Great Features: High-level object-oriented programming
Automatic garbage collection
Robust Security and Exception handling
Built-in threading model
Dynamic loading, unloading, re-loading of code without reboot
Platform independence
Excellent support for networking, concurrency, database, collections, plus thousands of 3rd party libraries
![Page 9: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/9.jpg)
9
THE VALUE OF OSGI
Open Systems Gateway initiative (OSGi): • A framework for developing, deploying, and
managing software components written in Java.
• Components called bundles hide internals and communicate through well-defined services.
• Bundles register, get, and listen to services in a registry. They can adapt their function based on available services.
• Dependencies and versioning among bundles are managed automatically.
• Bundles can be installed, started, stopped, updated, and uninstalled without bringing down the system.
![Page 10: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/10.jpg)
10
OSGI FOR IOT RESOURCES
Apache Felix http://felix.apache.org/
Full-featured OSGi framework with many useful services.
Eclipse Kura http://www.eclipse.org/kura/
Contributed by Eurotech. Includes services for I/O, Messaging (MQTT, CoAP), Networking (WiFi, Ethernet, Cellular), Watchdog, Web UI. Uses Eclipse Equinox OSGi framework.
Eclipse Concierge http://projects.eclipse.org/projects/rt.concierge
From Ghent University. Small-footprint OSGi framework (~300K). Runs Kura and Felix services.
ProSyst Bosch Group mBS http://www.prosyst.com/startseite/
Commercially supported OSGi framework for IoT.
OSGi homepage https://www.osgi.org/
![Page 11: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/11.jpg)
11
WHAT ABOUT REAL TIME?
A Real-Time System: Must Process information and guarantee a response within a
specified time.
Missing the deadline (even if the response is correct) is a failure; and if safety critical, may result in loss of life or limb.
Real Time is as much about predictability as speed.
Elevator Call Button Automobile Brake Pedal
vs. Consider:
![Page 12: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/12.jpg)
12
WHEN IS REAL TIME REQUIRED?
Real-World, Real-Time Examples: Factory Automation - Machine tool on a factory floor
Logistics - Automated airport baggage sorter
Driver Assistance – Driver fatigue detection
Energy - Wind turbine gearbox
Building Automation – HVAC fire response
Public Access - Stadium entrance gates
If your brakes engage in 10 milliseconds nine
times out of ten but then once after 2 seconds, is
the average of 209 ms acceptable?
When is Real Time Required?
When Milliseconds Matter!
![Page 13: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/13.jpg)
13
TRADITIONAL JAVA PROBLEMS
Why Traditional Java can’t do Real Time: Garbage Collector Pauses
JIT Compiler Interference
Page Fault Delays
Lack of Precise Timing Control
Limited Thread Scheduling Control
Priority Inversions
![Page 14: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/14.jpg)
14
WHAT ARE MY CHOICES?
Alternatives to Traditional Java for Real Time: Go back to C or C++
Split the application into RT/non-RT
Try tuning the GC and hope for the best
Try a “pauseless” GC implementation
Try an RTSJ implementation
Use a Real-Time Java SE
![Page 15: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/15.jpg)
15
REAL-TIME JAVA SE
Look for these Features in a Real-Time Java: Garbage Collector (GC) can be preempted at any
time by high priority threads and then resume collecting.
Ahead-of-Time compilation and early JIT available.
Can lock memory pages into physical RAM. Provides jitter-free timing APIs for critical tasks. GC and Java threads are prioritized and strictly
scheduled. JVM provides user control over scheduler timing. Can use real-time policies for hard-prioritized Linux scheduling.
Implements Priority Inheritance Protocol to avoid inversions.
![Page 16: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/16.jpg)
16
REAL-TIME LINUX
Real-Time Linux Options: Get a commercial RT Distribution
Apply kernel Preempt-RT patches
Set kernel CONFIG_PREEMPT, CONFIG_HIGH_RES_TIMERS
Tips and Tricks: Disable CFS Bandwidth Enforcement
Boost ksoftirqd thread policy/priority
Use SCHED_RR or SCHED_FIFO policy
Call mlockall()
Pre-allocate memory
![Page 17: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/17.jpg)
17
DEMONSTRATION OF REAL-TIME JAVA
Problem Statement: You are an astronaut stranded on Mars.
You need to grow enough food to survive until a rescue mission arrives.
You build a greenhouse inside your habitat to grow potatoes.
You need an IoT Gateway to automate the greenhouse.
http://www.nasa.gov/sites/default/files/thumbnails/image/lavahive.jpg
![Page 18: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/18.jpg)
18
DEMONSTRATION OF REAL-TIME JAVA
Mars Greenhouse IoT Gateway Requirements: Monitor and display sensor data for available sunlight, internal temperature,
and pressure. Store sensor data and transmit to the IoT Cloud at Mission Control. Round-trip delay for communication with Earth requires local control of
internal lights and heat to adapt to changing conditions (i.e. dust storms). Bonus: Track harvested potatoes, estimated astronaut TTS (Time to
Starvation).
http://mattermasters.wikispaces.com/Classification+of+Plants
![Page 19: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/19.jpg)
19
DEMONSTRATION OF REAL-TIME JAVA
Mars Greenhouse IoT Gateway Hardware: BeagleBone Black Rev. C, 1 GHz ARM Cortex-A8, 512 MB DDR3 RAM,
4GB on-board Flash, I2C, AIN, GPIO, Ethernet, USB
CdS Photoresistor
BMP085 I2C Temperature/Pressure Sensor
LEDs, Relays
![Page 20: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/20.jpg)
20
DEMONSTRATION OF REAL-TIME JAVA
Mars Greenhouse Software Stack:
BeagleBone Black Rev C
Debian Linux
PTC Perc Real-Time Java
Eclipse Concierge OSGi
Se
rvle
t A
PI
HTTP
Se
rvic
es
Gre
en
ho
use
Co
ntr
ol
Co
ncie
rge
Sh
ell
Pa
cka
ge
Ad
min
Sta
rtle
vel
We
b C
on
so
le
![Page 21: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/21.jpg)
21
DEMONSTRATION OF REAL-TIME JAVA
BBB.java
![Page 22: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/22.jpg)
22
DEMONSTRATION OF REAL-TIME JAVA
Mars.java
![Page 23: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/23.jpg)
23
DEMONSTRATION OF REAL-TIME JAVA
Demo Time!
![Page 24: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/24.jpg)
24
SUMMING UP
In Conclusion: Gateways are an important element in
building scalable IoT systems.
Java provides a great foundation for developing IoT Gateways.
OSGi adds a robust software component model to Java.
When a gateway or any other embedded system needs to respond quickly and predictably to events, a true Real-Time Java solution is your best choice.
![Page 25: LINUX AND REAL-TIME JAVA FOR IOT](https://reader031.fdocuments.in/reader031/viewer/2022013001/61ca8b9683ffd733566b703b/html5/thumbnails/25.jpg)
25
Q&A
Q&A
PTC Perc Real-Time Java:
http://www.ptc.com/developer-tools/perc
For more information, please visit:
Perc®