An embedded system design is the design of a computer system that constitutes a part of a larger system (mechanical, electronic, or electrical). We can find an embedded system design everywhere today: offices, homes, hospitals, electronic systems, factories, etc. All these environments needed a new approach because of their complexity and their large numbers.
In the past the designs were based on regular microchips and now microcontrollers are used. These pieces are central processing units that can have an integrated memory controller and sometimes some peripheral devices. The difference between regular computers and embedded system designs is that the first category is not focused on performing specific tasks like the second one, but is able to do many types of tasks.
Not all designs are made to be standalone devices, but as part of a set of devices that work together for only one purpose. For example, in a car, such a component is meant to serve a specific function and is a subsystem of that vehicle. These systems have programs that are meant as instructions and these programs are known as firmware that is stored in flash memory chips. Some of the devices can have a user interface and others may have none.
In most applications of these devices, they have to be part of machines that are made to run continuously for many years. Because of this, they have to be well developed to avoid errors and even in case errors occur, they have to be able to correct themselves and continue their processes. Many times, these systems cannot be turned off, not even temporary and this may not be because of technical problems, but because by doing this their owners could lose a lot of money.
While an ordinary embedded system design can include simple control loops systems and a little more complex systems such as monolithic kernels or cooperative multitasking, there are cases in which these devices require exotic operating systems. Such an example can be the one of mobile phones. Along with the core operating system, some design can even use additional software components.