skip to main content
10.1145/2384716.2384767acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

mbeddr: an extensible C-based programming language and IDE for embedded systems

Published: 19 October 2012 Publication History

Abstract

While the C programming language provides good support for writing efficient, low-level code, it is not adequate for defining higher-level abstractions relevant to embedded software. In this paper we present the mbeddr technology stack that supports extension of C with constructs adequate for embedded systems. In mbeddr, efficient low-level programs can be written using the well-known concepts from C. Higher-level domain-specific abstractions can be seamlessly integrated into C by means of modular language extension regarding syntax, type system, semantics and IDE. In the paper we show how language extension can address the challenges of embedded software development and report on our experience in building these extensions. We show that language workbenches deliver on the promise of significantly reducing the effort of language engineering and the construction of corresponding IDEs. mbeddr is built on top of the JetBrains MPS language workbench. Both MPS and mbeddr are open source software.

References

[1]
E. Axelsson, K. Claessen, G. Devai, Z. Horvath, K. Keijzer, B. Lyckegard, A. Persson, M. Sheeran, J. Svenningsson, and A. Vajda. Feldspar: A domain specific language for digital signal processing algorithms. In MEMOCODE 2010.
[2]
Y. Ben-Asher, D. G. Feitelson, and L. Rudolph. ParC - An Extension of C for Shared Memory Parallel Processing. Software: Practice and Experience, 26(5), 1996.
[3]
F. Boussinot. Reactive C: An Extension of C to Program Reactive Systems. Software: Practice and Experience, 21(4), 1991.
[4]
G. Bracha. Pluggable Type Systems. In OOPSLA'04 Workshop on Revival of Dynamic Languages, 2004.
[5]
M. Bravenboer and E. Visser. Concrete syntax for objects: DSL embedding and assimilation without restrictions. SIGPLAN Not., 39, October 2004.
[6]
M. Bravenboer and E. Visser. Designing Syntax Embeddings and Assimilations for Language Libraries. In MoDELS 2007, volume 5002 of LNCS. Springer, 2007.
[7]
M. Broy, S. Kirstan, H. Krcmar, and B. Schätz. What is the Benefit of a Model-Based Design of Embedded Software Systems in the Car Industry? In Emerging Technologies for the Evolution and Maintenance of Software Models. ICI, 2011.
[8]
R. Cox, T. Bergan, A. T. Clements, M. F. Kaashoek, and E. Kohler. Xoc, an extension-oriented compiler for systems programming. In ASPLOS 2008.
[9]
W. Damm, R. Achatz, K. Beetz, M. Broy, H. Dämbkes, K. Grimm, and P. Liggesmeyer. Nationale Roadmap Embedded Systems. Springer, Mar. 2010.
[10]
David H. Lorenz, Boaz Rosenan. Cedalion: A Language for Language Oriented Programming. In Proceedings of OOPSLA/SPLASH 2011, 2011.
[11]
T. Dinkelaker, M. Eichberg, and M. Mezini. Incremental concrete syntax for embedded languages. In Proceeding of the Symposium for Applied Computing 2011.
[12]
M. Dwyer, G. Avrunin, and J. Corbett. Patterns in property specifications for finite-state verification. In ICSE 1999.
[13]
A. D. Eisenberg and G. Kiczales. Expressive programs through presentation extension. In Proceedings of AOSD 2007.
[14]
T. Ekman and G. Hedin. The Jastadd extensible Java compiler. In Proceedings of OOPSLA 2007.
[15]
S. Erdweg, L. C. Kats, T. Rendel, C. Kästner, K. Ostermann, and E. Visser. In GPCE'11, 2011.
[16]
M. D. Ernst, G. J. Badros, and D. Notkin. An Empirical Analysis of C Preprocessor Use. IEEE Trans. Softw. Eng., 28, December 2002.
[17]
A. S. Gokhale, K. Balasubramanian, A. S. Krishna, J. Balasubramanian, G. Edwards, G. Deng, E. Turkay, J. Parsons, and D. C. Schmidt. Model driven middleware: A new paradigm for developing distributed realtime and embedded systems. Science of Computer Programming, 73(1), 2008.
[18]
K. Hammond and G. Michaelson. Hume: a domainspecific language for real-time embedded systems. In GPCE 03, GPCE '03.
[19]
P. Hudak. Modular Domain Specific Languages and Tools. In ICSR '98, jun 1998.
[20]
F. Ivanicic, I. Shlyakhter, A. Gupta, and M. K. Ganai. Model Checking C Programs Using F-SOFT. In ICCD'05.
[21]
T. Jim, J. G. Morrisett, D. Grossman, M. W. Hicks, J. Cheney, and Y. Wang. Cyclone: A Safe Dialect of C. In USENIX 2002. USENIX Association.
[22]
G. L. S. Jr. Growing a Language. Higher-Order and Symbolic Computation, 12(3), 1999.
[23]
S. Karthik and H. G. Jayakumar. Static Analysis: C Code Error Checking for Reliable and Secure Programming. In International Enformatika Conference '05.
[24]
P. Klint. A Meta-Environment for Generating Programming Environments. ACM Transactions on Software Engineering Methodology, 2(2), 1993.
[25]
R. T. Lindeman, L. C. L. Kats, and E. Visser. Declaratively Defining Domain-Specific Language Debuggers. In GPCE 2011, 2011.
[26]
A. Mine. Static Analysis of Run-Time Errors in Embedded Critical Parallel C Programs. In ESOP 2011, volume 6602 of LNCS. Springer, 2011.
[27]
MISRA. Guidelines for the Use of the C Language in Critical Systems.
[28]
L. Palopoli, P. Ancilotti, and G. C. Buttazzo. A C Language Extension for Programming Real-Time Applications. In 6th International Workshop on Real-Time Computing and Applications (RTCSA 99). IEEE CS.
[29]
A. Puccetti. Static Analysis of the XEN Kernel using Frama-C. J. UCS, 16(4), 2010.
[30]
L. Renggli, T. Girba, and O. Nierstrasz. Embedding Languages Without Breaking Tools. In ECOOP'10.
[31]
T. W. Reps and T. Teitelbaum. The Synthesizer Generator. In First ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments. ACM, 1984.
[32]
C. Simonyi, M. Christerson, and S. Clifford. Intentional Software. In OOPSLA 2006. ACM, 2006.
[33]
M. Tatsubori, S. Chiba, K. Itano, and M.-O. Killijian. OpenJava: A Class-Based Macro System for Java. In 1st Workshop on Reection and Software Engineering, OOPSLA '99, volume 1826 of LNCS.
[34]
P. R. Thrift. Common Lisp relations: an extension of Lisp for logic programming. In 1988 Internation Conference on Computer Languages. IEEE.
[35]
M. Voelter. Language and IDE Development, Modularization and Composition with MPS. In GTTSE 2011, LNCS. Springer, 2011.
[36]
H. Wu, J. G. Gray, S. Roychoudhury, and M. Mernik. Weaving a debugging aspect into domain-specific language grammars. In H. Haddad, L. M. Liebrock, A. Omicini, and R. L. Wainwright, editors, SAC 2005.

Cited By

View all
  • (2022)A Multi-target, Multi-paradigm DSL Compiler for Algorithmic Graph ProcessingProceedings of the 15th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3567512.3567513(2-15)Online publication date: 29-Nov-2022
  • (2022)Novel development tool for IEC 61499 based on domain-specific languagesIFAC-PapersOnLine10.1016/j.ifacol.2022.04.23355:2(439-444)Online publication date: 2022
  • (2022)Towards a recipe for language decomposition: quality assessment of language product linesEmpirical Software Engineering10.1007/s10664-021-10074-627:4Online publication date: 1-Jul-2022
  • Show More Cited By

Index Terms

  1. mbeddr: an extensible C-based programming language and IDE for embedded systems

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    SPLASH '12: Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity
    October 2012
    252 pages
    ISBN:9781450315630
    DOI:10.1145/2384716
    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 ACM 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]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 19 October 2012

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. development environments
    2. dsls
    3. embedded software
    4. formal methods
    5. language extension

    Qualifiers

    • Research-article

    Conference

    SPLASH '12
    Sponsor:

    Upcoming Conference

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)29
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 12 Feb 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2022)A Multi-target, Multi-paradigm DSL Compiler for Algorithmic Graph ProcessingProceedings of the 15th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3567512.3567513(2-15)Online publication date: 29-Nov-2022
    • (2022)Novel development tool for IEC 61499 based on domain-specific languagesIFAC-PapersOnLine10.1016/j.ifacol.2022.04.23355:2(439-444)Online publication date: 2022
    • (2022)Towards a recipe for language decomposition: quality assessment of language product linesEmpirical Software Engineering10.1007/s10664-021-10074-627:4Online publication date: 1-Jul-2022
    • (2021)Enabling Consistency between Software Artefacts for Software Adaption and Evolution2021 IEEE 18th International Conference on Software Architecture (ICSA)10.1109/ICSA51549.2021.00009(1-12)Online publication date: Mar-2021
    • (2021)Integration and Orchestration of Analysis ToolsComposing Model-Based Analysis Tools10.1007/978-3-030-81915-6_5(71-95)Online publication date: 18-Jul-2021
    • (2021)Compositional Modelling Languages with Analytics and Construction Infrastructures Based on Object-Oriented Techniques—The MontiCore ApproachComposing Model-Based Analysis Tools10.1007/978-3-030-81915-6_10(217-234)Online publication date: 18-Jul-2021
    • (2021)Migrating Insurance Calculation Rule Descriptions from Word to MPSDomain-Specific Languages in Practice10.1007/978-3-030-73758-0_6(165-194)Online publication date: 15-Apr-2021
    • (2021)Use MPS to Unleash the Creativity of Domain Experts: Language Engineering Is a Key Enabler for Bringing Innovation in IndustryDomain-Specific Languages in Practice10.1007/978-3-030-73758-0_2(25-52)Online publication date: 15-Apr-2021
    • (2020)MeLa: A Programming Language for a New Multidisciplinary Oceanographic FloatSensors10.3390/s2021608120:21(6081)Online publication date: 26-Oct-2020
    • (2020)Adding interactive visual syntax to textual codeProceedings of the ACM on Programming Languages10.1145/34282904:OOPSLA(1-28)Online publication date: 13-Nov-2020
    • 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

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media