Real-time Operating System
Embedded Systems come in two flavors, namely with and without an Operating System (OS). If a system is running without an OS, it is referred to as running the code bare metal. Systems that run code bare metal, have a reasonable small code size / functionality. Embedded Systems with an OS, are different from the OSes running on a PC / Server. Embedded Operating Systems have less services and are often Real-time. Many Embedded Systems are executing time critical tasks. Some of these tasks may never be executed too late, else they can cause damage, this category is called hard Real-time. Think for instance of the control systems in a car, like the Anti-lock Braking System (ABS). If the task would miss its deadline it can have catastrophic consequences. That is why timing for these systems needs to be guaranteed. To guarantee timing, the system needs to be deterministic in memory usage, scheduling, context switching, priority etc. You might expect this has quite some impact in the way these systems are designed, developed, and tested compared to software running on a general-purpose platform like a PC.
There are more differences between Software Development and Embedded Software Development, but I think these are the most prominent ones. I hope it gave you some insight on Software Development for Embedded Systems.
This was my first blog post as guest blogger for Spilberg, I hope you enjoyed it! Please feel free to contact me or to visit my blog EmbedWise.com. Next time I will focus on Real Time Operating Systems. Follow Spilberg on Linkedin, Facebook or Twitter and we will keep you posted.