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 🙂