There is nothing like C when it comes to the bare metal and real embedded development. It is still one of the most popular languages and unlikely to be replaced in the near future. However there are quite a few problems in the language and especially for developers in the embedded area. Problems are: missing encapsulation concepts, unsafe operation and types, no physical units and quantities, no support for common concepts in the embedded area like tasks, messages or state-machines. In this session I will show how it is possible to build modular languages which special emphasis for developing software for embedded systems. (The principle however can I domain independent).
We show how to extend the C Programming Language e.g. we will add: real module/encapsulation concepts, support for interface/implementation and component base development. Furthermore typesafe physical units and quantities as a C language extension will be shown.
Embedded systems often support state-machines so there will be direct support for programmes with states, triggers, events and actions as first level concepts. Also different syntax (like textual, graphical, tabular) can be mixed here.
I will present the power of modular languages and illustrate and show the idea with an Open Source Projectional Language Workbench MPS in a real-world embedded software development scenario. Modular languages and Projectional workbenches enable us to grow and extend languages easily.
Despite the usual drawbacks of internal DSLs we will build "first class" language extensions with full IDE comfort and debugging support. Combined with the tool support, it is really easy to combine modular languages based on the user needs and build convenient IDE support at the same time.
The samples will run on a Lego/NXT robot, running a OSEK/RTOS with C as programming language. In the talk I will demonstrate the new approach, while in the tutorial the idea is that people build themselves new language extensions a try them out with the Lego/NXT robot or a similar embedded real device.