This page is no longer up-to-date. Please go to http://mbeddr.com/learn

This page contains more detailed information about the project in the form of PDFs.

User Documentation

The 250+ page user guides is available from the download page. It explains the idea, how to use C and the existing extensions, as well as how to build new extensions. There is also a growing list of screencasts to get you started.

Overview Material

High-Level Overview: (EN) A PDF (from Powerpoint) describing the overall mbeddr idea, includes a lot of screenshots of example code.

Two-Page Flyer: (EN) A two-page English flyer used at expos and trade fairs.

Published Papers

In this section we list “official” papers accepted to conferences and workshops.

mbeddr: Instantiating a Language Workbench in the Embedded Software Domain (accepted for AUSE Journal): This paper provides a detailed overview over mbeddr from a tool customization perspective. The core argument is that domain-specific customization of tools requires customization of the languages embodied by the tool.

mbeddr: an Extensible C-based Programming Language and IDE for Embedded Systems (accepted at SplashCON/Wavefront 2012): This paper provides a general overview over mbeddr, emphasizing the language engineering perspective. It details some of the challenges for embedded software development, and how mbeddr addresses them.

Language Engineering as an Enabler for Incrementally Defined Formal Analyses (accepted at FORMSERA 2012 Workshop): In this paper we discuss our approach for integrating formal verification into the development process. The approach relies on using language extension to provide meaningful abstractions directly in the language, avoiding the need to “reverse engineer” the semsntics from low-level implementation code. We show two examples for formal verification in mbeddr.

Implementing Modular Domain Specific Languages and Analyses (accepted at Modevva 2012 Workshop; Best Paper and Best Presentation Awards): In this paper we discuss how language engineering makes the implementation of formal analyses simpler by reusing the same core language in several DSLs. By hooking the verification onto the single core language, we can get verification support for several DSLs with very limited effort.

Using Language Engineering to Lift Languages and Analyses at the Domain Level (accepted at NASA Formal Methods Symposium 2013): In this paper we discuss how we integrate the static checking of pre- and postconditions as well as protocol checking (based on C-level model checking) into mbeddr.

Extracting variability from C and lifting it to mbeddr (accepted at REVE 2013 Workshop): In this paper we describe approaches for lifting textual C code into mbeddr, understanding product-line variability expressed with preprocessor statements and factoring it into mbeddr’s feature models.

A Model-Based Approach to Language Integration (accepted at MiSE 2013 Workshop): The interaction of several languages within a software system poses a number of problems. There is anecdotal and empirical evidence supporting such concerns. This paper presents a solution to achieve proper language integration in the context of language workbenches and with limited effort.

Requirements as First-Class Citizens (accepted at MBEES 2013 Workshop): In this paper we discuss mbeddr’s approach to requirements engineering including: requirements themselves, paritial formalization of requirements using DSLs embedded in requirements, CRC-card-like high-level architectures and tracing from implementation artifacts to requirements and other “trace targets”.

Extensible Debuggers for Extensible Languages (accepted at WSR 2013 Workshop): Language workbenches significantly reduce the effort for building extensible languages. However, they do not facilitate programmers with built-in debugging support for language extensions. This paper presents an extensible debugger architecture that enables debugging of language extensions. This is established by defining mappings between the base language and the language extensions. We show an implementation of our approach for the mbeddr language workbench.

Case Studies

This section collects (over time) a set of example applications developed with mbeddr as a means to illustrate its capabilities.

ASIC Testing: This case study describes how Daniel Stieger from die modellwerkstatt and Michael Gau from Bachmann electronics built a DSL and a C generator for testing ASICs.

SmartMeter: This case study describes a real-world commercial development project for a Smart Meter application. It runs on a custom processor, requires a different compiler, makes use of several of the mbeddr default extensions and also uses a set of project-specific language extensions.

Lego Mindstorms This case study is the original demo we built with mbeddr. Although a Lego Mindstorms robot seems like a joke, the case study used the OSEK operating system and contains interesting C extensions for OSEK.

Other Publications

In this section we list other publications, typically contributed to online or print magazines.

mbeddr: Embedded-Entwicklung mit erweiterbarem C (ElektronikPRAXIS) Ein deutschsprachiger Überblick über mbeddr.

Sprachschöpfer: (bei heise developer) Noch ein deutschsprachiger Überblick über mbeddr.

mbeddr C: (at InfoQ) This is a recording of a presentation from the Code Generation 2012 conference in cambridge, providing an overview over mbeddr.