Soletta. Closing the IoT Development Gap. OpenIoT & ELC Europe 2016

Similar documents
More info about the competition and the Intel Galileo Gen 2

Enabling IoT OSs for Intel Quark MCU Platforms: the fast way. OpenIoT Summit Europe Andre Guedes

PERFORMANCE ANALYSIS USING NXP S I.MX RT1050 CROSSOVER PROCESSOR AND THE ZEPHYR OS

3 Software Stacks for IoT Solutions. Ian Skerrett Eclipse

Lesson 6 Intel Galileo and Edison Prototype Development Platforms. Chapter-8 L06: "Internet of Things ", Raj Kamal, Publs.: McGraw-Hill Education

Bluegiga Wi-Fi Software 9/19/2013 1

OCF for resource-constrained environments

Building a reference IoT product with Zephyr. Ricardo Salveti Michael Scott Tyler Baker

Major Components of the Internet of Things Systems

IoT.js. Next generation web for connected things. Samsung Electronics Software Center Piotr Marcinkiewicz 2017

趙庸鎭 (Cho, Yong Jin)

Build the unified end to end IoT solution on ARM LEADING COLLABORATION IN THE ARM ECOSYSTEM

IOTIVITY AND EMBEDDED LINUX SUPPORT. Kishen Maloor Intel Open Source Technology Center

Interoperability Frameworks for RIOT-OS

Bluegiga Bluetooth Smart Software v.1.3 5/28/2014 1

The friendly operating system for the IoT!

Eduardo

Chapter 2. Operating-System Structures

Loosely Coupled Actor Systems

WiFi and Secure Socket Offload in Zephyr TM

Four Components of a Computer System

Carl Peto. 10th August 2017 SWIFT FOR ARDUINO

Mobile Operating Systems Lesson 01 Operating System

IoTivity: The Open Connectivity Foundation and the IoT Challenge

Lesson 7 Programming Embedded Galileo, Raspberry Pi, BeagleBone and mbed Platforms

System Energy Efficiency Lab seelab.ucsd.edu

EDJE PROJECT. The Software Foundation for IoT Devices. IS2T S.A All rights reserved.

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edit9on

Beyond TrustZone Security Enclaves Reed Hinkel Senior Manager Embedded Security Market Develop

Developing Reusable Device Drivers for MCU's

Using Node-RED to build the internet of things

Building mbed Together: An Overview of mbed OS and How To Get Involved

Embedded Linux With Raspberry Pi IOT

Steven Edouard SDET, US - DX Audience West Microsoft Bruno Terkaly Principal Software Engineer - Microsoft

ARCHITECTURING AND SECURING IOT PLATFORMS JANKO ISIDOROVIC MAINFLUX

ArduCAM CC3200 UNO board

IoT with Apache ActiveMQ, Camel and Spark

The challenge with IoT

Advanced Embedded Systems

Containers, Serverless and Functions in a nutshell. Eugene Fedorenko

CASAN: A New Communication Architecture for Sensors Based on CoAP

The Design and Implementation of the NDN Protocol Stack for RIOT-OS

AT&T Flow Designer. Current Environment

How to Route Internet Traffic between A Mobile Application and IoT Device?

Implementation work on open source web of things servers and gateways. Dave Raggett, W3C

LITE Lightning Talks. Linaro LITE team

CloudFleet Documentation

Chapter 2: Operating-System Structures

Building Real-Time Embedded Applications on QduinoMC

Bluetooth Smart Development with Blue Gecko Modules. Mikko Savolainen October 2015

Uninstall A Apps Windows 8 Programming Using Html5 Jump Start

Leveraging IoT Biometrics and Zephyr RTOS for Neonatal Nursing in Uganda

Welcome to IoTivity. Mike Richmond, Executive Director Open Interconnect Consortium

JerryScript An ultra-lightweight JavaScript engine for the Internet of Things

What is Zephyr Project?

User s Manual of Board ET-ESP32 WROVER MODULE V1 ET-ESP32 WROVER MODULE V1

Real-Time Programming

Smart Mirror Group K Hector Zacarias EE Justin Gentry CpE Michael Trivelli CpE

An Incubator Project in the Apache Software Foundation. 13 July 2016

Embedded Systems Programming

AZURE CERTIFIED FOR IOT DEVICE CATALOG ONBOARDING STEPS

Chapter 2: Operating-System Structures

The IoT and Thread in PHYTEC Nodes. Jonas Remmert July 15th, 2016

OnRISC. IoT Manual. Vision Systems GmbH. Edition: October 2017

ARDUINO YÚN MINI Code: A000108

IoT on Fedora Using Fedora as a base for the IoT Revolution

A practical component-oriented approach to IoT design and implementation

Lecture 13 IoT and Augmented Reality

BLE121LR Bluetooth Smart Long Range Module 5/12/2014 1

Managing & Accelerating Innovation with Open Source at the Edge

Embedded Elixir. Elixir Taiwan Meetup July 25, 2016 Jake Morrison

Operating System Services. User Services. System Operation Services. User Operating System Interface - CLI. A View of Operating System Services

Hands-On Workshop: ARM mbed

Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications

Azure Sphere: Fitting Linux Security in 4 MiB of RAM. Ryan Fairfax Principal Software Engineering Lead Microsoft

Final Exam Study Guide

Intel Galileo gen 2 Board

But before understanding the Selenium WebDriver concept, we need to know about the Selenium first.

Whitepaper. IoT Protocols. PAASMER Support for Protocols. Website:

Agenda Time (PT) 8:45 a.m. Event Platform Opening 9:00 a.m. Keynote - Java: Present and Future Java EE 7 Java SE 8 Java Embedded

How Parallels RAS Enhances Microsoft RDS. White Paper Parallels Remote Application Server

Getting started with the FP-NET-6LPBLE1 function pack for 6LoWPAN IoT node connection to a smartphone via BLE interface

Corey Clark PhD Daniel Montgomery

The world of BAOS. Easy connectivity for KNX with Bus Access and Object Server. Overview and applications

Exam Questions. Give an example network topology where GPSR cannot find a way from a source to a sink. Explain your answer.

Copyright 2017 Samsung. All Rights Reserved. O-Hoon Kwon, Ph.D. Samsung Electronics

Manual Visual Studio 2010 Web Developer Tools 2012 Professional

What Is IoT, and How Modulus and Pacific Can Help. Eduardo Pelegri-Llopart Vice President, Technology Progress Software

THE LPC84X MCU FAMILY A MULTI-TESTER TOOL OFFERING FEATURES FOR YOUR NEXT IOT DESIGN

Implementation work on open source web of things servers and gateways. Dave Raggett, W3C

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edition

IP Based Architecture for the Internet of Things. IPV6 and Related Standards for IoT Interoperability November 20, 2014

I/O Design, I/O Subsystem, I/O-Handler Device Driver, Buffering, Disks, RAID January WT 2008/09

Zilog Real-Time Kernel

Hands-On Workshop: ARM mbed : From Rapid Prototyping to Production

HOW TO INTEGRATE NFC FRONTENDS IN LINUX

Backporting is so 1993

Signals Documentation

Lesson 5 Arduino Prototype Development Platforms. Chapter-8 L05: "Internet of Things ", Raj Kamal, Publs.: McGraw-Hill Education

Safely and Efficiently Programming a 64kB Computer

Transcription:

Soletta Closing the IoT Development Gap OpenIoT & ELC Europe 2016

Agenda - Who am I? - IoT Development Gaps - How to close IoT Development Gaps - Soletta Overview - Key Subsystems - Flow Based Programming - Developer Tools - Future Plans

- Brazilian - Software Developer since 9yo Who am I? Gustavo Sverzut Barbieri Computer Engineer ProFUSION embedded systems - Working with Embedded since 2005 - Software development services - Passionate about efficiency - Soletta Architect & Lead Developer

IoT Development Gaps

IoT Development Gaps - IoT differences to traditional embedded systems - Solutions are focused on a single subset (just hardware, just network ) - Solutions are platform specific, no scalable solutions - Nothing is integrated Hard to reuse your knowledge

IoT Development Gaps: needs - Fast development cycles - Cover product families (MCU, gateways, multi core CPUs) - Allow small engineering teams - Ease choices

- Uniform API abstracting the multiple platforms How to close IoT Development Gaps? - 3 mains areas - I/O - Comms - OS services - Easy to use API - Scalable

Soletta Overview

Soletta Overview - Open Source License: Apache 2 (static linkage for small systems) - Real Open Source Development Model @ GitHub - Portable code: multiple OSes from day-0 Linux Linux Micro (PID1) Contiki RIoT Zephyr - Many supported boards & easily extensible to add more Intel Edison Intel Galileo Intel MinnowBoard MAX Arduino 101 - Scalable yet easy to use: Object-Oriented C code Atmel SAMR21 XPro Raspberry Pi - Event-Driven Programming: abstracts OS specifics from user - Modular: use only what you need

Soletta Subsystems I/O Comms OS Services Persistence Machine Learning Logging Main Loop Parsers Data Types Worker Threads Crypto

Soletta Input/Output Subsystem - Low-level: GPIO, AIO, I2C, SPI, UART, PWM - High level: Sensors and Actuators - Linux uses IIO (Industrial Input/Output) - Zephyr will use sensor subsystem (TODO) - OS specifics are abstracted via main loop - no ISR or threads are exposed Mantra implement drivers where they belong: IN THE KERNEL

Soletta Communications Subsystem - MQTT - HTTP server & client - LWM2M - OIC/OCF - CoAP Mantra choose wisely & integrate well Similar APIs should feel the same APIs should be implementable everywhere - BLE

Soletta OS Services Subsystem - Software Update (check, fetch, apply) - Start, Stop & Monitor services (ie: bluetooth) - Power supply enumeration & monitoring - Poweroff, Reboot, Suspend, Enter Rescue mode - Network Connection Manager

Soletta Other Subsystems - Data Types: list, array, buffers and slices - Logging: with domains, thread-safe and can be compiled-out - Parsers: JSON based on string slices (no memory allocation) - Persistence: File, EFIVars and EEPROM with compile-time defined structure - Worker Threads: low priority preemptible threads - Crypto: Certificates, Message Digest and Encryption (TODO) - Machine Learning (SML): Fuzzy & Neural Network made easy to use

How to close IoT Development Gaps? checklist - Uniform API abstracting the multiple platforms - 3 mains areas? - I/O - Comms - OS services - Easy to use API - Scalable

most users don t get callbacks Leaks & SEGV boring pattern on event, get data

Flow Based Programming Dial HTTP Server interval=10s FBP or how did we avoid callbacks and memory management for our users making their lives easier Persistence interval=10s Timer tick Action

FBP - Invented by J. Paul Morrison in the early 1970s http://www.jpaulmorrison.com/fbp - Components are Black Boxes with well defined interfaces (Ports) - Focus on Information Packets (IP) - Started to gain traction in Web: NoFlo Facebook Flux Google TensorFlow Microsoft Azure Event Hubs - Also on Embedded Systems: ROS MicroFlo NodeRED - Also on Multimedia: V4L Gstreamer Apple Quartz

FBP: Nodes as Black Boxes - Simple interface - Low (no?!) coupling, allows replacing components - Easy to optimize code size by removing unused ports - Parallelization - Isolation (including processes) - Internally can use Event-Driven Programming (Main Loop), Threads... Users only manage connections. Everything else is done by the FBP core or the components

FBP: Example # Create Instances (timer is in milliseconds!) dial(my_dialer_type) http_server(http-server/int:url= /timeout_ms ) persistence(persistence/int:name= timeout_ms, storage= fs,default_value=10000) timer(timer) action(my_action_type) # Connect Instances dial OUT -> IN persistence persistence OUT -> IN dial http_server OUT -> IN persistence persistence OUT -> IN http_server IN OUT Dial IN OUT INTERVAL Persistence Timer IN HTTP Server OUT interval=10,000ms interval=10,000ms persistence OUT -> INTERVAL timer timer OUT -> TRIGGER action OUT TRIGGER tick Action

FBP: Pros & Cons Cons: - Paradigm shift - Although small, still adds overhead compared to carefully written C code - Requires bindings (node type module) to use 3rd party libraries - Needs balance on what to write as FBP and what to create custom node types Pros: - No leaks or SEGV, reduced blaming! - Simple interface (nodes & ports) eases team collaboration - Easy to read, write and visualize, aids communication with customers & designers - Super fast prototyping & testing

FBP: show me the size! - Intel Quark SE DevBoard - Zephyr OS - Soletta - FBP using OIC/OCF light server - IPv6 - OIC/OCF (UDP + CoAP + CBOR) - GPIO Flash - Kb 107 RAM Peak - Kb 32 - Auto-generated code from FBP

Developer Tools

Developer Tools - code generators sol-oic-gen.py generates node types C code from OIC/OCF JSON specs sol-flow-node-type-gen.py generates node types C boilerplate from JSON specs sol-fbp-generator generates C from FBP Less manual work Less errors Easier migration to new APIs Ease of use with no runtime overhead

Developer Tools - DevApp - Web-based IDE using node.js and angular.js - Can be executed on target (on-board development - Linux) - Systemd journal viewer - Built-in documentation - Text Editor with syntax highlight and code completion - FBP runner, inspector and viewer (Graphviz) - Try Soletta without installing it! All you need is a browser and an SD/USB drive https://github.com/solettaproject/soletta-dev-app

Syntax Highlight and as-you-type error checking systemd journal log viewer On-the fly FBP visualization using graphviz

- More Node.JS bindings - Python bindings - Fancier FBP Web Inspector - Visual Editor Future Plans Contributions are welcome! - DevApp generating firmware images - FBP meta-type for LWM2M, OIC and BLE - FBP statically linking disk size optimizations - Use mempools for fixed size objects - Port to ESP8266

Thank You! Questions? Want to know more about FBP Flow Based Programming? See my other talk: Flow Based Programming Applied to IoT Development Gustavo Sverzut Barbieri <barbieri@profusion.mobi> github.com/solettaproject/ October 11 th at 17h10