System Running on its Target Device

About 8 months ago the itemis started the development of the first industrial application using mbeddr. When the software development started, no hardware was available as both were developed in parallel. While the embedded software uses nearly every aspect of mbeddr, components (including client server interfaces, sender receiver interfaces and composite components) have shown to be especially important. They enabled the software to be structured in a reusable and well-testable way. Due to that, most of the software can be tested on the development PC without the needing to have the target hardware at hand. Even components which require access to registers (for example, the display) can been tested on the developer’s PC, since register access can be simulated via a language extension. The components were also used to encapsulate those parts of the system that depend on a specific hardware platform, making the application logic hardware independent.

By the time the target hardware became available, the confidence in the software was quite high. However, the team did expected a few problems when they started to compile and download the program on the embedded microcontroller for the first time. The team therefore decided to perform a progressive integration in several steps to commission and test the different components of the software individually (e.g. watchdog, clock system, real-time clock, or display). It was literally a matter of hours to get the complete code working on the real hardware! Almost none of the problems were related to the implementation of the components. Most of them had to do with the setup and initialization of the microcontroller peripherals to get the target hardware into the right operating mode – something which cannot be tested on the development PC in advance. Very cool – and an experience to be repeated :-)

Paper on Debugging

We’ve uploaded a new paper about Debugging: 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.

Eclipsecon France Session

It has been quiet here on the blog, we are busy improving the stability of mbeddr and using it in the smart meter and other projects. We’ve also presented mbeddr at JAX and at the MBEES 2013 Dagstuhl workshop this week.

More recently, a session about mbeddr has been accepted for Eclipsecon France. Bernd will present it.

The session is part of the Cool Stuff track — I guess that’s a fitting choice :-)

A Paper on Requirements Management in mbeddr

We just added a new paper to the learn page. It discusses mbeddr’s approach to requirements management. We discuss 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”.

The paper has just been accepted at the Dagstuhl 2013 MBEES Workshop.

Documentation of the Documentation Language

A while ago we reported on mixed content editing in MPS, and how we have built a documentation language that can mix prose text with actual program nodes. We have now merged this code onto the master branch; it is also used in our requirements management language as well as in our code comments. To explain how it works, we have also extended the user guide. The respective part of the user guide can be downloaded separately. Note that this document is of course written with the documentation language itself, so it is able to bootstrap itself. There are still a few bugs which whitespace, line breaks and selection, but these will be fixed in due course.

All in all, this is a very significant enhancement for mbeddr — not so much in terms of coding of course, but in terms of being able to build an overall software engineering environment.

mbeddr @ embedded world 2013

It is almost a tradition now … once again, mbeddr is presented at embedded world 2013, the world’s largest conference and exhibition on embedded systems and embedded software. Of course, mbeddr is demo’ed at the itemis booth (4-106), where mbeddr is shown based on two example applications.
ew1

One is the smart meter project, which itemis France is working on. The other example is a synthesizer that is implemented completely in mbeddr, built by our colleague Aykut Kilic.

ew2

In addition, Bernd will have a presentation called Embedded Software Development for the Next Decade on Wednesday 11:00 – 11:45, Session 09, High-Level Languages, where he will show, among othe things, the improvements in the area of requirements.

In case you are at embedded world, why don’t you say hello to Bernd and have him demo our newest enhancements in mbeddr?