• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,062
On Slideshare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
27
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. The Actor Model applied to the Raspberry Pi and the Embedded Domain Omer Kilic || @OmerK omer@erlang-solutions.com
  • 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. 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. #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. 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. 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. 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. 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. 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. 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. Actor Model 03/12/2012 Tech Mesh London Slide 11 of 45
  • 12. Actor Model 03/12/2012 Tech Mesh London Slide 12 of 45
  • 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. 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. 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. 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. Creating an Actor Pid1 spawn(math, fact, [5]) Pid2 math:fact(5) 03/12/2012 Tech Mesh London Slide 17 of 45
  • 18. Communication Pid1 {Pid1, msg} Pid2 Pid2 ! {self(), msg} 03/12/2012 Tech Mesh London Slide 18 of 45
  • 19. Bidirectional Links Pid1 Pid2 link(Pid2) 03/12/2012 Tech Mesh London Slide 19 of 45
  • 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. Propagating Exit Signals {'EXIT', PidA, Reason} PidA PidB {'EXIT', PidB, Reason} PidC 03/12/2012 Tech Mesh London Slide 21 of 45
  • 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. 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. Erlang, the Maestro (flickr/dereckesanches) 03/12/2012 Tech Mesh London Slide 24 of 45
  • 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. 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. Raspberry Pi Peripherals • • • • • • • • 03/12/2012 GPIO UART I2C I2S SPI PWM DSI CSI-2 Tech Mesh London Slide 27 of 45
  • 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. 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. 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. Concurrency Demo http://vimeo.com/40769788 03/12/2012 Tech Mesh London Slide 31 of 45
  • 32. Example: GPIO PidA PidB PidC Pin17 ??? 03/12/2012 Tech Mesh London Slide 32 of 45
  • 33. Example: GPIO PidA PidB PidC GPIO Proxy Pin17 03/12/2012 Tech Mesh London Slide 33 of 45
  • 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. 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. Universal Peripheral/Component Modules 03/12/2012 Tech Mesh London Slide 36 of 45
  • 37. Universal Peripheral/Component Modules 03/12/2012 Tech Mesh London Slide 37 of 45
  • 38. TI OMAP Reference System 03/12/2012 Tech Mesh London Slide 38 of 45
  • 39. Hardware Projects – Ponte 03/12/2012 Tech Mesh London Slide 39 of 45
  • 40. Hardware Projects – Demo Board 03/12/2012 Tech Mesh London Slide 40 of 45
  • 41. Hardware Simulator 03/12/2012 Tech Mesh London Slide 41 of 45
  • 42. Future Explorations Parallella: 03/12/2012 Tech Mesh London Slide 42 of 45
  • 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. 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. 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