+ All Categories
Home > Documents > Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public...

Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public...

Date post: 12-Jul-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
25
Soletta Technical Introduction Otavio Pontes OTC - Intel
Transcript
Page 1: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Soletta Technical Introduction

Otavio PontesOTC - Intel

Page 2: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Soletta overview

Features and Architecture

Page 3: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

IoT Questions and ProblemsSoletta Overview

■ Explosion of libraries

○ Subsets: I/O, comms

○ Specific targets

○ Too big for small devices

○ Hard to reuse knowledge

■ Nothing is integrated

■ Lack of documentation

Page 4: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

What is Soletta?Bringing intelligence to IoT devices

■ IoT Framework

■ Open Source

■ Easy access:○ Sensors

○ Actuators

○ Communication

■ Portable code

■ Different platforms, including small OSs

Page 5: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Hardware and Operating System Abstraction Layer

Application

Kernel

System Libs

Hardware

Comms

Soletta

Machine Learning

Event dispatching

Flow

GPIO TimersSPI PWMUART

OIC

I2C

HTTPMQTT

Services Network Update Crypto Persistence

Architecture

Page 6: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Flow layerSoletta overview

■ Domain-specific language (DSL)

■ Interface

■ Easy - target audience

■ Code safety

■ Visual

■ OOBE

Page 7: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

How to remotely toggle a light bulb?

Simple and canonical example

Page 8: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

How to remotely toggle a light bulb?

Server

Client

network protocol

lightnetworkresource

relay switch

VCC

lightnetworkresource

feedbackledsensor

VCC

Page 9: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

How to remotely toggle a light bulb?

Server

Client

lightnetworkresource

relay switch

(gpio/writer)

lightnetworkresource

feedbackLed

(gpio/writer)

Sensor(gpio/reader)

network protocol

Page 10: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

How to remotely toggle a light bulb?

#Server fbp filelight(oic/server-light)led(LED)

light STATE -> IN led

#Client fbp filebutton(Button)#Update device_id with server device idlight(oic/client-light:device_id=””)feedback_led(LED)

button OUT -> STATE lightlight STATE -> IN feedback_led

network protocol

Page 11: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

How to remotely toggle a light bulb?

#Server config file{ "name": "LED", "options": { "pin": "7" }, "type": "gpio/writer"}

#Client config file{ "name": "LED", "options": { "pin": "3" }, "type": "gpio/writer"},{ "name": "Button", "options": { "pin": "5" }, "type": "gpio/reader"}

Page 12: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

How to remotely toggle a light bulb?

Running on the target board, supports multiple users and allows fetching git repositories

Page 13: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

How to remotely toggle a light bulb?

Page 14: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

How to remotely toggle a light bulb?

source.csource.csource.c

source.fbpsource.fbpsource.fbpsource.csource.cgenerated.c

compiler

linker

sol-fbp-generator

source.csource.cboard.conf sol-fbp-runner

+application

users can run their FBP without the need to compile.

Soletta Development Application uses this

this is a regular application, that can be installed alongside other

applications and frameworks

image generator

firmware/imageimage generator packs the

application and the operating system into a single image to be

flashed on the IoT device.

Page 15: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

How to remotely toggle a light bulb?

#Client config file to be used in a desktop{ "name": "LED", "type": "gtk/led"},{ "name": "Button", "type": "gtk/button"}

Page 16: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Another example: Custom node

Page 17: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Soletta Support

Page 18: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Operating Systems supportSoletta Support

■ Linux

■ Zephyr

■ RIOT

■ Contiki

Page 19: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Boards tested so farSoletta Support

■ Intel Edison (Linux)

■ Intel Galileo Gen 2 (Linux)

■ Intel Minnowboard Max (Linux)

■ Quark SE Dev Board (Zephyr)

■ Atmel SAMR21 Xplained Pro (RIOT)

■ Raspberry Pi (Linux)

Page 20: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Small OSes measurementsSoletta Support

■ Zephyr on Quark SE Dev Board

■ Image size: 107k

■ Peak used RAM: around 32k

Hardware

Soletta Library

Generated C Code from Application FBP Files

Zephyr

Page 21: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

How to get involved

Page 22: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Roadmap2016

v1.0v2.0

Go Stable (Embedded World)• Initial Public announcement• Stable API (1.0)• 100% API documentation• OS: Linux, Zephyr (initial)...• Languages: C/C++, FBP, JS• Comms: OIC, CoAP, MQTT,

HTTP• Real-world usage samples

v2.0 • Zephyr: full I/O, persistence

and 6loWPAN• FBP: community packages

(similar to npm)• Node.js: full bindings

v3.0• Zephyr: BLE, HTTP, MQTT,

OTA updates• Comms: BLE, Bluetooth,

Management (ConnMan)

v4.0• Zephyr: Small JS on 80Kb

and FBP on 8Kb

v3.0v4.0

Page 23: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Cool stuff we want to doHow to get involved

■ Language bindings

■ Visual Editor

■ Plugins for other IDEs

■ Communication protocols

Page 24: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

CommunityHow to get involved

■ GSoC

■ Workshops / Talks

■ Partnerships

■ #soletta @ freenode

■ Wiki - https://github.com/solettaproject/soletta/wiki

■ Mail lists - https://lists.solettaproject.org/

■ Site - https://solettaproject.org/

■ Repos - https://github.com/solettaproject

Page 25: Introduction Soletta Technical · v1.0 v2.0 Go Stable (Embedded World) • Initial Public announcement • Stable API (1.0) • 100% API documentation • OS: Linux, Zephyr (initial)...

Q&A

Thanks

Otavio Pontes - [email protected]


Recommended