Article Preview
Top2. The Problem Statement: From Domain To Multicore Platforms
In contrast to general-purpose computing systems, most embedded systems are domain-oriented. This means that in embedded world a single system solves just one or several tasks within the single application domain.
Early embedded systems were limited in hardware and thus solve quite observable tasks, mainly in the control domain. The primary skill for software developer was a programmer’s skill, and there was no need in deep domain and task understanding.
Nowadays the complexity of tasks running on embedded systems is increasing rapidly dew to rapid growth of hardware performance. There is a transition from simple control systems to high-performance systems for signal, image, video processing (Joachim Keinert, Jürgen Teich, 2011; Sedcole N. P., Cheung P. Y. K., & Luk W., 2003) and even for decision making (Song Z1, Ji Z, & Faust O, 2011). An algorithmic and a programming workload of such tasks also increase fast. Embedded system programmers are no longer able solving such complex tasks alone. It should be a “two-in-one” developer: skilled domain expert, who can develop algorithms for task solution, and a skilled programmer, who can implement such algorithm efficiently. For heterogeneous multicore embedded platforms, such developer additionally should have a deep understanding in parallel programming and in programming for specific heterogeneous systems.
If we look on all stages of embedded software development (Figure 1), we can see that there are a set of gaps in interaction between domain experts, programmers and hardware experts.
Figure 1. The structure of the embedded software development process
We need to go deeper in details of these gaps and the ways to fill them.