[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

Building embedded systems with embedded DSLs

Published: 19 August 2014 Publication History

Abstract

We report on our experiences in synthesizing a fully-featured autopilot from embedded domain-specific languages (EDSLs) hosted in Haskell. The autopilot is approximately 50k lines of C code generated from 10k lines of EDSL code and includes control laws, mode logic, encrypted communications system, and device drivers. The autopilot was built in less than two engineer years. This is the story of how EDSLs provided the productivity and safety gains to do large-scale low-level embedded programming and lessons we learned in doing so.

References

[1]
APM Project. APM multiplatform autopilot suite. Website http://ardupilot.com/. Retrieved Feb. 2014.
[2]
E. Axelsson, K. Claessen, M. Sheeran, J. Svenningsson, D. Engdal, and A. Persson. The design and implementation of Feldspar - an embedded language for digital signal processing. In Implementation and Application of Functional Languages, volume 6647 of LNCS, pages 121--136. Springer, 2011.
[3]
E. Clarke, D. Kroening, and F. Lerda. A tool for checking ANSI-C programs. In Tools and Algorithms for the Construction and Analysis of Systems (TACAS), LNCS, pages 168--176. Springer, 2004.
[4]
I. S. Diatchki and M. P. Jones. Strongly typed memory areas programming systems-level data structures in a functional language. In Proceedings of the ACM SIGPLAN Workshop on Haskell, pages 72--83. ACM, 2006.
[5]
I. S. Diatchki, M. P. Jones, and R. Leslie. High-level views on low-level representations. In Intl. Conference on Functional Programming, pages 168--179. ACM, 2005.
[6]
eChronos. eChronos. Website http://ssrg.nicta.com.au/projects/TS/echronos. Retrieved Feb. 2014.
[7]
FreeRTOS. FreeRTOS.Website http://freertos.org/. Retrieved Feb. 2014.
[8]
T. Hawkins. Controlling hybrid vehicles with Haskell. Presentation. Commercial Users of Functional Programming (CUFP), 2008. Available at http://cufp.galois.com/2008/schedule.html.
[9]
T. Jim, J. G. Morrisett, D. Grossman, M. W. Hicks, J. Cheney, and Y. Wang. Cyclone: A safe dialect of C. In USENIX Conference, Berkeley, CA, USA, 2002. USENIX.
[10]
J. Launchbury and S. L. Peyton Jones. Lazy functional state threads. pages 24--35, June 1994.
[11]
X. Leroy. Formal verification of a realistic compiler. Communications of the ACM, 52(7):107--115, 2009.
[12]
S. Lindley and C. McBride. Hasochism: The pleasure and pain of dependently typed haskell programming. In Symposium on Haskell, pages 81--92. ACM, 2013.
[13]
L. Pike, A. Goodloe, R. Morisset, and S. Niller. Copilot: A hard realtime runtime monitor. In Runtime Verification (RV), volume 6418, pages 345--359. Springer, 2010.
[14]
L. Pike, N. Wegmann, S. Niller, and A. Goodloe. Experience report: a do-it-yourself high-assurance compiler. In Proceedings of the Intl. Conference on Functional Programming (ICFP). ACM, September 2012.
[15]
Pixhawk. PX4 autopilot project. Website http://pixhawk.org/. Retrieved Feb. 2014.
[16]
Rust. Rust. Website http://www.rust-lang.org/. Retrieved Feb. 2014.
[17]
SAE-AS5506. Architecture Analysis and Design Language. SAE, Nov 2004.
[18]
T. Schrijvers, S. Peyton Jones, M. Chakravarty, and M. Sulzmann. Type checking with open type functions. Intl. Conference on Functional Programming, pages 51--62, Sept. 2008. ISSN 0362-1340.
[19]
T. Sheard and S. P. Jones. Template meta-programming for haskell. SIGPLAN Notices, 37(12):60--75, Dec. 2002.
[20]
B. A. Yorgey, S.Weirich, J. Cretin, S. Peyton Jones, D. Vytiniotis, and J. P. Magalhães. Giving haskell a promotion. In Workshop on Types in Language Design and Implementation, pages 53--66. ACM, 2012.

Cited By

View all
  • (2020)Analyses of a model-based real-time language embedded in C++Proceedings of the 35th Annual ACM Symposium on Applied Computing10.1145/3341105.3373994(1330-1339)Online publication date: 30-Mar-2020
  • (2019)Using language workbenches and domain-specific languages for safety-critical software developmentSoftware and Systems Modeling (SoSyM)10.1007/s10270-018-0679-018:4(2507-2530)Online publication date: 1-Aug-2019
  • (2019)Threading the Arduino with HaskellMicrobial Metabolic Engineering10.1007/978-3-030-14805-8_8(135-154)Online publication date: 21-Feb-2019
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 49, Issue 9
ICFP '14
September 2014
361 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/2692915
Issue’s Table of Contents
  • cover image ACM Conferences
    ICFP '14: Proceedings of the 19th ACM SIGPLAN international conference on Functional programming
    August 2014
    390 pages
    ISBN:9781450328739
    DOI:10.1145/2628136
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 19 August 2014
Published in SIGPLAN Volume 49, Issue 9

Check for updates

Author Tags

  1. embedded domain specific languages
  2. embedded systems

Qualifiers

  • Research-article

Funding Sources

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)20
  • Downloads (Last 6 weeks)5
Reflects downloads up to 09 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2020)Analyses of a model-based real-time language embedded in C++Proceedings of the 35th Annual ACM Symposium on Applied Computing10.1145/3341105.3373994(1330-1339)Online publication date: 30-Mar-2020
  • (2019)Using language workbenches and domain-specific languages for safety-critical software developmentSoftware and Systems Modeling (SoSyM)10.1007/s10270-018-0679-018:4(2507-2530)Online publication date: 1-Aug-2019
  • (2019)Threading the Arduino with HaskellMicrobial Metabolic Engineering10.1007/978-3-030-14805-8_8(135-154)Online publication date: 21-Feb-2019
  • (2018)Task Oriented Programming and the Internet of ThingsProceedings of the 30th Symposium on Implementation and Application of Functional Languages10.1145/3310232.3310239(83-94)Online publication date: 5-Sep-2018
  • (2018)Exploring the semantic gap in compiling embedded DSLsProceedings of the 18th International Conference on Embedded Computer Systems: Architectures, Modeling, and Simulation10.1145/3229631.3239371(195-201)Online publication date: 15-Jul-2018
  • (2015)PX4: A node-based multithreaded open source robotics framework for deeply embedded platforms2015 IEEE International Conference on Robotics and Automation (ICRA)10.1109/ICRA.2015.7140074(6235-6240)Online publication date: May-2015
  • (2023)Writing Internet of Things Applications with Task Oriented ProgrammingComposability, Comprehensibility and Correctness of Working Software10.1007/978-3-031-42833-3_1(3-52)Online publication date: 18-Oct-2023
  • (2021)Triton: a Domain Specific Language for Cyber-Physical Systems2021 22nd IEEE International Conference on Industrial Technology (ICIT)10.1109/ICIT46573.2021.9453575(810-816)Online publication date: 10-Mar-2021
  • (2019)Threading the Arduino with HaskellMicrobial Metabolic Engineering10.1007/978-3-030-14805-8_8(135-154)Online publication date: 21-Feb-2019
  • (2018)Task Oriented Programming and the Internet of ThingsProceedings of the 30th Symposium on Implementation and Application of Functional Languages10.1145/3310232.3310239(83-94)Online publication date: 5-Sep-2018
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media