Erlang Embedded — Concurrent Blinkenlights and More!
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Erlang Embedded — Concurrent Blinkenlights and More!

on

  • 1,182 views

 

Statistics

Views

Total Views
1,182
Views on SlideShare
941
Embed Views
241

Actions

Likes
1
Downloads
5
Comments
0

2 Embeds 241

http://omer.me 239
http://webcache.googleusercontent.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Erlang Embedded — Concurrent Blinkenlights and More! Presentation Transcript

  • 1. Erlang EmbeddedConcurrent Blinkenlights and More! Omer Kilic || @OmerK omer@erlang-solutions.com
  • 2. Agenda● Challenges in Modern Embedded Systems● Overview of Erlang● Erlang Embedded● Q&A15/11/2012 Open Source Hardware User Group Meetup #22 Slide 2/26
  • 3. Challenges in Embedded Systems (I)● Larger, more complex systems than ever before● Multi-core processing ● Harder to develop for using the standard embedded development flow ● Harder to utilise the full processing potential ● Much harder to debug (and fix!)15/11/2012 Open Source Hardware User Group Meetup #22 Slide 3/26
  • 4. Challenges in Embedded Systems (II)● Increasingly higher degrees of heterogeneity in terms of: ● Cores ● Hardware acceleration (GPU, co-processor etc) ● Interconnect ● Memory hierarchies15/11/2012 Open Source Hardware User Group Meetup #22 Slide 4/26
  • 5. Internet of Things (I)15/11/2012 Open Source Hardware User Group Meetup #22 Slide 5/26
  • 6. Internet of Things (II) http://blogs.cisco.com/news/the-internet-of-things-infographic/15/11/2012 Open Source Hardware User Group Meetup #22 Slide 6/26
  • 7. Erlang?● {functional, concurrent/parallel, garbage-collected, soft real-time, fault-tolerant, distributed, message- passing}● First version developed in 1986 ● Open-sourced in 1998.● Battle-tested at Ericsson and many other companies ● Originally designed for Embedded Systems!15/11/2012 Open Source Hardware User Group Meetup #22 Slide 7/26
  • 8. Erlang Advantage (I)● Declarative ● Functional programming language, high abstraction level, concise readable programs.● Concurrent and Parallel ● Highly scalable, transparent or explicit concurrency, lightweight processes. Takes full advantage of multicore architectures.15/11/2012 Open Source Hardware User Group Meetup #22 Slide 8/26
  • 9. Erlang Advantage (II)● Robust ● Simple and consistent error recovery and supervision hierarchies, built-in fault tolerance.● Portable, Distributed ● Runs on a variety of platforms, network-aware runtime, supports heterogeneous networks.15/11/2012 Open Source Hardware User Group Meetup #22 Slide 9/26
  • 10. Erlang Advantage (III)● External Interfaces ● NIFs and ports used to interface external world to the Erlang runtime.● Soft Real-Time ● Response time (can be) in the order of milliseconds, per-process garbage collection.● Hot-code loading ● Dynamic reconfiguration.15/11/2012 Open Source Hardware User Group Meetup #22 Slide 10/26
  • 11. Erlang, the Maestro (flickr/dereckesanches)15/11/2012 Open Source Hardware User Group Meetup #22 Slide 11/26
  • 12. External Interfaces● Native Implemented Functions (NIFs) and ports used to interface external world to the Erlang runtime. Erlang VM app hw_if hw_driver.c15/11/2012 Open Source Hardware User Group Meetup #22 Slide 12/26
  • 13. #include “stats.h” Source: http://embedded.com/electronics-blogs/programming-pointers/4372180/Unexpected-trends15/11/2012 Open Source Hardware User Group Meetup #22 Slide 13/26
  • 14. Actor Model● Proposed in 1973 by Hewitt, Bishop, and Steiger ● “Universal primitives of concurrent computation”● Building blocks for modular, distributed and concurrent systems● No shared-state, self-contained and atomic● Implemented in a variety of programming languages ● Erlang, Scala (AKKA), Java (Kilim), Ruby (Celluloid), C++11 (libcppa)15/11/2012 Open Source Hardware User Group Meetup #22 Slide 14/26
  • 15. Actor Model● Asynchronous message passing ● Messages kept in a mailbox and processes in the order they are received in● Upon receiving a message, actors can: ● Make local decisions and change internal state ● Spawn new actors state ● Send messages to other actors functionality mailbox15/11/2012 Open Source Hardware User Group Meetup #22 Slide 15/26
  • 16. Example: GPIO proc_a {in it, 17 ,o ut pu t} GPIO pin1715/11/2012 Open Source Hardware User Group Meetup #22 Slide 16/26
  • 17. Example: GPIO proc_a proc_b } ,l ow 7 {s ,1 ta te te {s ta ,1 7, hi proc_c gh } } ,1 7, high GPIO {state pin1715/11/2012 Open Source Hardware User Group Meetup #22 Slide 17/26
  • 18. GPIO “Proxy”● Replaces the “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.15/11/2012 Open Source Hardware User Group Meetup #22 Slide 18/26
  • 19. TI OMAP Reference System15/11/2012 Open Source Hardware User Group Meetup #22 Slide 19/26
  • 20. Fine Grain Abstraction● Advantages ● Application code becomes simpler – Concise and shorter modules – Testing becomes easier – Code re-use (potentially) increases● Disadvantages ● Architecting fine grain systems is difficult15/11/2012 Open Source Hardware User Group Meetup #22 Slide 20/26
  • 21. Erlang Embedded “The aim of this KTP project is to bring the benefits of concurrent systems development using Erlang to the field of embedded systems; through investigation, analysis, software development and evaluation."15/11/2012 Open Source Hardware User Group Meetup #22 Slide 21/26
  • 22. Hardware Projects15/11/2012 Open Source Hardware User Group Meetup #22 Slide 22/26
  • 23. Future ExplorationsParallella!15/11/2012 Open Source Hardware User Group Meetup #22 Slide 23/26
  • 24. Interested in Erlang?● http://www.erlang.org/doc/● http://learnyousomeerlang.com/ http://www.youtube.com/watch?v=xrIjfIjssLE :)15/11/2012 Open Source Hardware User Group Meetup #22 Slide 24/26
  • 25. Erlang Embedded Training Stack● A complete package for people interested in developing the next generation of concurrent/distributed Embedded Systems● Training Modules Erlang Embedded Framework ● Embedded Linux Primer Erlang/OTP 101 ● Erlang/OTP 101 ● Erlang Embedded Framework Embedded Linux Primer● Hardware included! Hardware Platform15/11/2012 Open Source Hardware User Group Meetup #22 Slide 25/26
  • 26. Thank you ● www.erlang-embedded.com ● embedded@erlang-solutions.com ● @ErlangEmbedded “ Any sufficiently complicated concurrent program in another language contains an ad-hoc, informally- specified, bug-ridden, slow implementation of half of Erlang. – Robert Virding Co-Inventor of Erlang15/11/2012 Open Source Hardware User Group Meetup #22 Slide 26/26