1) Embedded system? What it is, main elements.

[source: Internet of Things Agenda]

Embedded System is a programmable electronic circuit with software designed to efficiently implement a low-level task such as perform/control specific function in a larger system.

An important task of the programmer is to ensure communication between the elements and to design efficient algorithms that use the microcontroller periphery. Programmer doesn't design graphical user interface, the embedded system usually works autonomously. System operation can be controlled by simple buttons or communication with superior drivers.

Embedded systems often work in a real time regime - with predictable time of response.

Embedded system includes:

2) Embedded software architecture.

The software architecture of the embedded system depends on the difficulty of the task the system is to perform and on the capabilities of the equipment used. The main purpose of using embedded systems is to ensure high performance in the task, but at the lowest possible cost.

Simple architecture allows you to quickly release software, but it is more difficult to develop, when the system grows. More complicated architectures provides tools which are hard to learn to be able to use them efficiently, but which effectively solves high-level tasks by providing additional layers of abstraction.

Tasks&Loops

In the basic edition, the program consists of the function and the main loop of the program controlling the calling function. This approach is used in the simplest processors, especially 8 and 16 bit. Simple tasks are performed very effectively and it's easy to use assembly code.

State Machine