Raspberry Pi and the Embedded Domain Omer Kilic || @OmerK - - PowerPoint PPT Presentation

raspberry pi and the
SMART_READER_LITE
LIVE PREVIEW

Raspberry Pi and the Embedded Domain Omer Kilic || @OmerK - - PowerPoint PPT Presentation

The Actor Model applied to the Raspberry Pi and the Embedded Domain Omer Kilic || @OmerK omer@erlang-solutions.com Agenda Current state of Embedded Systems Overview of the Actor Model Erlang Embedded Project Modelling and


slide-1
SLIDE 1

The Actor Model applied to the Raspberry Pi and the Embedded Domain

Omer Kilic || @OmerK

  • mer@erlang-solutions.com
slide-2
SLIDE 2

Agenda

  • Current state of Embedded Systems
  • Overview of the Actor Model
  • Erlang Embedded Project
  • Modelling and developing systems using Erlang
  • Experiments with the Raspberry Pi
  • Future Explorations
  • Q & A

03/12/2012 Tech Mesh London Slide 2 of 45

slide-3
SLIDE 3

Embedded Systems

An embedded system is a computer system designed for specific control functions within a larger system, often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal computer (PC), is designed to be flexible and to meet a wide range of end-user needs.

03/12/2012 Tech Mesh London

  • Infinite Wisdom of Wikipedia

Slide 3 of 45

slide-4
SLIDE 4

#include <stats.h>

Source: http://embedded.com/electronics-blogs/programming-pointers/4372180/Unexpected-trends

03/12/2012 Tech Mesh London Slide 4 of 45

slide-5
SLIDE 5

Current Challenges

  • Complex SoC platforms
  • “Internet of Things”

– Connected and distributed systems

  • Multicore and/or heterogeneous devices
  • Time to market constraints

03/12/2012 Tech Mesh London Slide 5 of 45

slide-6
SLIDE 6

Embedded Systems

  • Bare Metal

– No underlying OS or high level abstractions

  • RTOS

– Minimal interrupt and switching latency, scheduling guarantees, minimal jitter

  • Embedded Linux

– Slimmed down Linux with hardware interfaces

03/12/2012 Tech Mesh London Slide 6 of 45

slide-7
SLIDE 7

RTOS Concepts

  • Notion of “tasks”
  • OS-supervised interprocess messaging

– Shared memory

  • Mutexes/Semaphores/Locks
  • Scheduling

– Pre-emptive: event driven – Round-robin: time multiplexed

03/12/2012 Tech Mesh London Slide 7 of 45

slide-8
SLIDE 8

Embedded Linux

  • Not a new concept, increased popularity due

to abundant supply of cheap boards

– Raspberry Pi, Beagleboard/Beaglebone, Gumstix et al.

  • Familiar set of tools for software developers,

new territory for embedded engineers

– No direct mapping for RTOS concepts, especially tasks

  • Complex device driver framework

– Here be dragons

03/12/2012 Tech Mesh London Slide 8 of 45

slide-9
SLIDE 9

Actor Model

  • Proposed in 1973 by Hewitt, Bishop and Steiger

– “Universal primitives for concurrent computation”

  • No shared-state, self-contained and atomic
  • Building blocks for modular, distributed and

concurrent systems

  • Implemented in a variety of programming

languages

03/12/2012 Tech Mesh London Slide 9 of 45

slide-10
SLIDE 10

Actor Model

  • Asynchronous message passing

– Messages kept in a mailbox and processed in the

  • rder they are received in
  • Upon receiving messages, actors can:

– Make local decisions and change internal state – Spawn new actors – Send messages to other actors

03/12/2012 Tech Mesh London Slide 10 of 45

slide-11
SLIDE 11

Actor Model

03/12/2012 Tech Mesh London Slide 11 of 45

slide-12
SLIDE 12

Actor Model

03/12/2012 Tech Mesh London Slide 12 of 45

slide-13
SLIDE 13

Limitations of the Actor Model

  • No notion of inheritance or general hierarchy

– Specific to language and library implementation

  • Asynchronous message passing can be

problematic for certain applications

– Ordering of messages received from multiple processes – Abstract definition may lead to inconsistency in larger systems

  • Fine/Coarse Grain argument

03/12/2012 Tech Mesh London Slide 13 of 45

slide-14
SLIDE 14

Erlang Embedded

  • Knowledge Transfer Partnership between

Erlang Solutions and University of Kent

– Aim of the project: Bring the benefits of concurrent systems development using Erlang to the field of embedded systems; through investigation, analysis, software development and evaluation.

http://erlang-embedded.com

03/12/2012 Tech Mesh London Slide 14 of 45

slide-15
SLIDE 15

Why Erlang?

  • Implements the Actor model
  • Battle-tested at Ericsson and many other

companies

– Originally designed for embedded applications

  • Support for concurrency and distributed

systems out of the box

  • Easy to create robust systems
  • (...and more!)

03/12/2012 Tech Mesh London Slide 15 of 45

slide-16
SLIDE 16

High Availability/Reliability

  • Simple and consistent error recovery and

supervision hierarchies

  • Built in fault-tolerance

– Isolation of Actors

  • Support for dynamic reconfiguration

– Hot code loading

03/12/2012 Tech Mesh London Slide 16 of 45

slide-17
SLIDE 17

Creating an Actor

spawn(math, fact, [5])

03/12/2012 Tech Mesh London

Pid1 Pid2

math:fact(5)

Slide 17 of 45

slide-18
SLIDE 18

Communication

03/12/2012 Tech Mesh London

{Pid1, msg}

Pid1 Pid2

Pid2 ! {self(), msg}

Slide 18 of 45

slide-19
SLIDE 19

Bidirectional Links

03/12/2012 Tech Mesh London

Pid1 Pid2

link(Pid2)

Slide 19 of 45

slide-20
SLIDE 20

Process Error Handling

  • Let it Fail!

– Abstract error handling away from the modules – Results in leaner modules

  • Supervision hierarchies

03/12/2012 Tech Mesh London Slide 20 of 45

slide-21
SLIDE 21

Propagating Exit Signals

03/12/2012 Tech Mesh London

PidA PidB PidC {'EXIT', PidA, Reason} {'EXIT', PidB, Reason}

Slide 21 of 45

slide-22
SLIDE 22

Trapping Exits

03/12/2012 Tech Mesh London

PidA PidB PidC {'EXIT', PidA, Reason}

process_flag(trap_exit, true) Slide 22 of 45

slide-23
SLIDE 23

External Interfaces

  • Native Implemented Functions (NIFs) and

ports used to interface external world to the Erlang runtime.

03/12/2012 Tech Mesh London Slide 23 of 45

slide-24
SLIDE 24

Erlang, the Maestro

(flickr/dereckesanches)

03/12/2012 Tech Mesh London Slide 24 of 45

slide-25
SLIDE 25

Raspberry Pi

  • 700 MHz ARM11
  • 256 MB DDR2 RAM
  • 10/100Mb Ethernet
  • 2x USB 2.0
  • (HDMI, Composite

Video, 3.5mm Stereo Jack, DSI, CSI-2)

03/12/2012 Tech Mesh London

$35

Slide 25 of 45

slide-26
SLIDE 26

Raspberry Pi in Education

  • The Raspberry Pi Foundation is a

UK registered charity.

  • Mission statement: "...to promote

the study of computer science and related topics, especially at school level, and to put the fun back into learning computing."

Future Engineers/Programmers!

03/12/2012 Tech Mesh London

(flickr/lebeus)

Slide 26 of 45

slide-27
SLIDE 27

Raspberry Pi Peripherals

  • GPIO
  • UART
  • I2C
  • I2S
  • SPI
  • PWM
  • DSI
  • CSI-2

03/12/2012 Tech Mesh London Slide 27 of 45

slide-28
SLIDE 28

Accessing peripherals

  • Peripherals are memory mapped
  • Access via /dev/mem

– Faster, needs root, potentially dangerous!

  • Use kernel modules/sysfs

– Slower, doesn’t need root, easier, relatively safer

03/12/2012 Tech Mesh London Slide 28 of 45

slide-29
SLIDE 29

GPIO Interface (I)

init(Pin, Direction) -> {ok, FdExport} = file:open("/sys/class/gpio/export", [write]), file:write(FdExport, integer_to_list(Pin)), file:close(FdExport), {ok, FdPinDir} = file:open("/sys/class/gpio/gpio" ++ integer_to_list(Pin) ++ "/direction", [write]), case Direction of in -> file:write(FdPinDir, "in");

  • ut -> file:write(FdPinDir, "out")

end, file:close(FdPinDir), {ok, FdPinVal} = file:open("/sys/class/gpio/gpio" ++ integer_to_list(Pin) ++ "/value", [read, write]), FdPinVal.

03/12/2012 Tech Mesh London Slide 29 of 45

slide-30
SLIDE 30

GPIO Interface (II)

write(Fd, Val) -> file:position(Fd, 0), file:write(Fd, integer_to_list(Val)). read(Fd) -> file:position(Fd, 0), {ok, Val} = file:read(Fd, 1), Val. release(Pin) -> {ok, FdUnexport} = file:open("/sys/class/gpio/unexport", [write]), file:write(FdUnexport, integer_to_list(Pin)), file:close(FdUnexport).

03/12/2012 Tech Mesh London Slide 30 of 45

slide-31
SLIDE 31

Concurrency Demo

03/12/2012 Tech Mesh London Slide 31 of 45

http://vimeo.com/40769788

slide-32
SLIDE 32

Example: GPIO

03/12/2012 Tech Mesh London

PidA Pin17 PidB PidC

???

Slide 32 of 45

slide-33
SLIDE 33

Example: GPIO

03/12/2012 Tech Mesh London

PidA Pin17 PidB PidC GPIO Proxy

Slide 33 of 45

slide-34
SLIDE 34

GPIO Proxy

  • Replaces ‘locks’ in traditional sense of

embedded design

– Access control/mutual exclusion

  • Can be used to implement safety constraints

– Toggling rate, sequence detection, direction control, etc.

03/12/2012 Tech Mesh London Slide 34 of 45

slide-35
SLIDE 35

Fine Grain Abstraction

  • Advantages

– Application code becomes simpler – Concise and shorter modules – Testing becomes easier – Code re-use (potentially) increases

  • Disadvantage

– Architecting fine grain systems is difficult

03/12/2012 Tech Mesh London Slide 35 of 45

slide-36
SLIDE 36

Universal Peripheral/Component Modules

03/12/2012 Tech Mesh London Slide 36 of 45

slide-37
SLIDE 37

Universal Peripheral/Component Modules

03/12/2012 Tech Mesh London Slide 37 of 45

slide-38
SLIDE 38

TI OMAP Reference System

03/12/2012 Tech Mesh London Slide 38 of 45

slide-39
SLIDE 39

Hardware Projects – Ponte

03/12/2012 Tech Mesh London Slide 39 of 45

slide-40
SLIDE 40

Hardware Projects – Demo Board

03/12/2012 Tech Mesh London Slide 40 of 45

slide-41
SLIDE 41

Hardware Simulator

03/12/2012 Tech Mesh London Slide 41 of 45

slide-42
SLIDE 42

Future Explorations

Parallella:

03/12/2012 Tech Mesh London Slide 42 of 45

slide-43
SLIDE 43

Packages for Embedded Architectures

https://www.erlang-solutions.com/downloads/download-erlang-otp

03/12/2012 Tech Mesh London Slide 43 of 45

slide-44
SLIDE 44

Erlang Embedded Training Stack

  • A complete package for people interested in

developing the next generation of concurrent and distributed Embedded Systems

  • Training Modules:

– Embedded Linux Primer – Erlang/OTP 101 – Erlang Embedded Framework

Get in touch if you’re interested.

03/12/2012 Tech Mesh London Slide 44 of 45

slide-45
SLIDE 45

Thank you

  • http://erlang-embedded.com
  • embedded@erlang-solutions.com
  • @ErlangEmbedded

03/12/2012 Tech Mesh London

The world is concurrent. Things in the world don't share data. Things communicate with messages. Things fail.

  • Joe Armstrong

Co-inventor of Erlang

Slide 45 of 45