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 ...
Embedded Systems

“

An embedded system is a computer system designed for
specific control functions within a larger syste...
#include <stats.h>

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

03/12/20...
Current Challenges
• Complex SoC platforms
• “Internet of Things”
– Connected and distributed systems

• Multicore and/or ...
Embedded Systems
• Bare Metal
– No underlying OS or high level abstractions

• RTOS
– Minimal interrupt and switching late...
RTOS Concepts
• Notion of “tasks”
• OS-supervised interprocess messaging
– Shared memory

• Mutexes/Semaphores/Locks
• Sch...
Embedded Linux
• Not a new concept, increased popularity due
to abundant supply of cheap boards
– Raspberry Pi, Beagleboar...
Actor Model
• Proposed in 1973 by Hewitt, Bishop and Steiger
– “Universal primitives for concurrent computation”

• No sha...
Actor Model
• Asynchronous message passing
– Messages kept in a mailbox and processed in the
order they are received in

•...
Actor Model

03/12/2012

Tech Mesh London

Slide 11 of 45
Actor Model

03/12/2012

Tech Mesh London

Slide 12 of 45
Limitations of the Actor Model
• No notion of inheritance or general hierarchy
– Specific to language and library implemen...
Erlang Embedded
• Knowledge Transfer Partnership between
Erlang Solutions and University of Kent
– Aim of the project: Bri...
Why Erlang?
• Implements the Actor model
• Battle-tested at Ericsson and many other
companies
– Originally designed for em...
High Availability/Reliability
• Simple and consistent error recovery and
supervision hierarchies
• Built in fault-toleranc...
Creating an Actor

Pid1

spawn(math, fact, [5])

Pid2

math:fact(5)

03/12/2012

Tech Mesh London

Slide 17 of 45
Communication

Pid1

{Pid1, msg}

Pid2

Pid2 ! {self(), msg}

03/12/2012

Tech Mesh London

Slide 18 of 45
Bidirectional Links

Pid1

Pid2

link(Pid2)

03/12/2012

Tech Mesh London

Slide 19 of 45
Process Error Handling
• Let it Fail!
– Abstract error handling away from the modules
– Results in leaner modules

• Super...
Propagating Exit Signals
{'EXIT', PidA, Reason}
PidA

PidB

{'EXIT', PidB, Reason}
PidC

03/12/2012

Tech Mesh London

Sli...
Trapping Exits
process_flag(trap_exit, true)

{'EXIT', PidA, Reason}
PidA

PidB

PidC

03/12/2012

Tech Mesh London

Slide...
External Interfaces
• Native Implemented Functions (NIFs) and
ports used to interface external world to the
Erlang runtime...
Erlang, the Maestro

(flickr/dereckesanches)

03/12/2012

Tech Mesh London

Slide 24 of 45
Raspberry Pi
•
•
•
•
•

700 MHz ARM11
256 MB DDR2 RAM
10/100Mb Ethernet
2x USB 2.0
(HDMI, Composite
Video, 3.5mm
Stereo Ja...
Raspberry Pi in Education
• The Raspberry Pi Foundation is a
UK registered charity.
• Mission statement: "...to promote
th...
Raspberry Pi Peripherals
•
•
•
•
•
•
•
•
03/12/2012

GPIO
UART
I2C
I2S
SPI
PWM
DSI
CSI-2
Tech Mesh London

Slide 27 of 45
Accessing peripherals
• Peripherals are memory mapped
• Access via /dev/mem
– Faster, needs root, potentially dangerous!

...
GPIO Interface (I)
init(Pin, Direction) ->
{ok, FdExport} = file:open("/sys/class/gpio/export", [write]),
file:write(FdExp...
GPIO Interface (II)
write(Fd, Val) ->
file:position(Fd, 0),
file:write(Fd, integer_to_list(Val)).
read(Fd) ->
file:positio...
Concurrency Demo

http://vimeo.com/40769788
03/12/2012

Tech Mesh London

Slide 31 of 45
Example: GPIO
PidA
PidB

PidC

Pin17

???
03/12/2012

Tech Mesh London

Slide 32 of 45
Example: GPIO
PidA
PidB

PidC
GPIO
Proxy

Pin17

03/12/2012

Tech Mesh London

Slide 33 of 45
GPIO Proxy
• Replaces ‘locks’ in traditional sense of
embedded design
– Access control/mutual exclusion

• Can be used to ...
Fine Grain Abstraction
• Advantages
– Application code becomes simpler
– Concise and shorter modules
– Testing becomes eas...
Universal Peripheral/Component Modules

03/12/2012

Tech Mesh London

Slide 36 of 45
Universal Peripheral/Component Modules

03/12/2012

Tech Mesh London

Slide 37 of 45
TI OMAP Reference System

03/12/2012

Tech Mesh London

Slide 38 of 45
Hardware Projects – Ponte

03/12/2012

Tech Mesh London

Slide 39 of 45
Hardware Projects – Demo Board

03/12/2012

Tech Mesh London

Slide 40 of 45
Hardware Simulator

03/12/2012

Tech Mesh London

Slide 41 of 45
Future Explorations
Parallella:

03/12/2012

Tech Mesh London

Slide 42 of 45
Packages for Embedded Architectures

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

03/12/2012

Tech Mesh...
Erlang Embedded Training Stack
• A complete package for people interested in
developing the next generation of concurrent
...
Thank you
• http://erlang-embedded.com
• embedded@erlang-solutions.com
• @ErlangEmbedded

“

The world is concurrent.
Thin...
Upcoming SlideShare
Loading in...5
×

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

2,487

Published on

Slides from my GOTO Aarhus talk, 1st Oct 2012.

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,487
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
31
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. The Actor Model applied to the Raspberry Pi and the Embedded Domain Omer Kilic || @OmerK omer@erlang-solutions.com
  2. 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
  3. 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. - Infinite Wisdom of Wikipedia 03/12/2012 Tech Mesh London Slide 3 of 45
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 10. Actor Model • Asynchronous message passing – Messages kept in a mailbox and processed in the order 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
  11. 11. Actor Model 03/12/2012 Tech Mesh London Slide 11 of 45
  12. 12. Actor Model 03/12/2012 Tech Mesh London Slide 12 of 45
  13. 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
  14. 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
  15. 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
  16. 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
  17. 17. Creating an Actor Pid1 spawn(math, fact, [5]) Pid2 math:fact(5) 03/12/2012 Tech Mesh London Slide 17 of 45
  18. 18. Communication Pid1 {Pid1, msg} Pid2 Pid2 ! {self(), msg} 03/12/2012 Tech Mesh London Slide 18 of 45
  19. 19. Bidirectional Links Pid1 Pid2 link(Pid2) 03/12/2012 Tech Mesh London Slide 19 of 45
  20. 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
  21. 21. Propagating Exit Signals {'EXIT', PidA, Reason} PidA PidB {'EXIT', PidB, Reason} PidC 03/12/2012 Tech Mesh London Slide 21 of 45
  22. 22. Trapping Exits process_flag(trap_exit, true) {'EXIT', PidA, Reason} PidA PidB PidC 03/12/2012 Tech Mesh London Slide 22 of 45
  23. 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
  24. 24. Erlang, the Maestro (flickr/dereckesanches) 03/12/2012 Tech Mesh London Slide 24 of 45
  25. 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 $35 Tech Mesh London Slide 25 of 45
  26. 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! (flickr/lebeus) 03/12/2012 Tech Mesh London Slide 26 of 45
  27. 27. Raspberry Pi Peripherals • • • • • • • • 03/12/2012 GPIO UART I2C I2S SPI PWM DSI CSI-2 Tech Mesh London Slide 27 of 45
  28. 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
  29. 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"); out -> 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
  30. 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
  31. 31. Concurrency Demo http://vimeo.com/40769788 03/12/2012 Tech Mesh London Slide 31 of 45
  32. 32. Example: GPIO PidA PidB PidC Pin17 ??? 03/12/2012 Tech Mesh London Slide 32 of 45
  33. 33. Example: GPIO PidA PidB PidC GPIO Proxy Pin17 03/12/2012 Tech Mesh London Slide 33 of 45
  34. 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
  35. 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
  36. 36. Universal Peripheral/Component Modules 03/12/2012 Tech Mesh London Slide 36 of 45
  37. 37. Universal Peripheral/Component Modules 03/12/2012 Tech Mesh London Slide 37 of 45
  38. 38. TI OMAP Reference System 03/12/2012 Tech Mesh London Slide 38 of 45
  39. 39. Hardware Projects – Ponte 03/12/2012 Tech Mesh London Slide 39 of 45
  40. 40. Hardware Projects – Demo Board 03/12/2012 Tech Mesh London Slide 40 of 45
  41. 41. Hardware Simulator 03/12/2012 Tech Mesh London Slide 41 of 45
  42. 42. Future Explorations Parallella: 03/12/2012 Tech Mesh London Slide 42 of 45
  43. 43. Packages for Embedded Architectures https://www.erlang-solutions.com/downloads/download-erlang-otp 03/12/2012 Tech Mesh London Slide 43 of 45
  44. 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
  45. 45. Thank you • http://erlang-embedded.com • embedded@erlang-solutions.com • @ErlangEmbedded “ The world is concurrent. Things in the world don't share data. Things communicate with messages. Things fail. - Joe Armstrong Co-inventor of Erlang 03/12/2012 Tech Mesh London Slide 45 of 45
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×