Software Development and Testing
for Embedded Microcontroller Systems
These pages are dedicated to the development of microcontroller software. The systems we are talking about here are sometimes called "embedded systems" or "realtime systems". The expression "embedded systems" is a synonym for those applications where the contained CPU is encapsulated in an own hardware, dedicated to the application. The CPU can be not accessed and controlled from outside and not easily supplied with a new software. The software is "burned" into the system and either not replacable at all or only replacable via special tools. The expression "realtime system" stands for applications which react immediately on external events, contrary to the more traditional computing applications which can run batch jobs and work on data without the requirement to react on external events and without strict timing requirements. The interesting thing is that the expressions "realtime system" and "embedded system" are usually used by those who are not working with microcontrollers. I never heard one of my microcontroller programmer colleagues using those terms to describe the systems they work on.
Microcontroller applications can have a wide variety of size and applications. There are very small systems using e.g. PIC microcontrollers. This is very popular at the moment and you find a lot of valueable literature and examples. There are a lot of hobby applications and student projects, because the systems are cheap and easy to use. But there is the area of the tough industrial work. These are medium sized or large applications with 16 bit or 32 bit CPUs. Resources are usually very limited and we are fighting against runtime, RAM and ROM contraints. And further we are fighting very often against quality problems originating among others in an unlucky design and insufficient testing. I dedicated these pages to the colleagues in this area of microcontroller development. This does not mean however, that there is no benefit from the pages for other areas of computing.
On these pages I want to publish an outline of the knowledge and expertise which I accumulated in almost 30 years of
work with computers and microcontroller software. This was not always an individual effort. Most times I was working in
teams, most of them really great teams. And at this point I want to give thanks to these good colleagues and friends.
We tried to apply the shool book methods for SW processes, design and testing.
By this we came across many problems because the microcontroller world is different than the world of the rest of the
SW community. But we always managed to find a satisfying solution to apply them with great benefit.