Your SlideShare is downloading. ×
0
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Erlang Embedded — Concurrent Blinkenlights and More!
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Erlang Embedded — Concurrent Blinkenlights and More!

891

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
891
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
6
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. 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

×