**3. Design of embedded systems based on open source platform**

High performances, high speed of operation, minimal energy consumption and large number of such solutions are not required in many practical needs and applications of embedded systems. In such applications the most important is that all needed system functionalities are met, with as short as possible system development and implementation time, and as little as possible system development and implementation costs [1–10]. It is also required as much as possible optimization and minimization of hardware and software, to achieve needed speed of operation. Also, it is needed as little as possible dimensions, weight and energy consumption, as high as possible reliability, as easy as possible maintenance, and as low as possible price of the system. For such purposes the best is to use embedded systems based on open source platforms. Such way of design and implementation enables simplification and acceleration of development, design and implementation process, reduction of time needed for all the activities, and reduction of costs of all the processes. It also enables modular approach, what facilitates, accelerates and reduces costs of system modification and maintenance. It is possible to optimize all hardware and software resources in accordance with needs of user, and to balance all necessary functionalities and price of the entire system.

Use of open source hardware platforms (suitable open source boards) drastically reduces and makes easier and cheaper process of development, design and implementation of hardware and entire system. It is only necessary to choose and select the most suitable open source platform for concrete application in accordance with all requirements of that purpose. It is also needed to select some additional hardware modules that should be added to the selected open source platform. Such is enabled modular hardware approach if it is necessary for concrete application. Other activities in design of hardware include defining ways and means for connecting system with environment, with sensors and actuators, and with user. It is very simple to perform since available hardware open source platforms offer large number of ways and circuits for interconnection and communication. In such design, it is constantly intended to minimize and optimize entire system hardware, and to satisfy concrete application of the system. With this way of design and realization of system hardware, it is practically very possible and feasible, with very low total cost.

Use of open source software platforms (suitable open source software development tools) reduces and makes easier and cheaper process of development, design and implementation of software and entire system. The development tools include open source programming languages and software tools, operating systems and debugging tools. It is only necessary to select the most suitable open source software tools for concrete application. For programming it is mainly used and it is intended to use as much as possible the high level programming languages. Such development of programs is simplified, accelerated and cheaper. Problem could only be in applications where very high speeds of operation are required, where programming in high level programming language can not meet needed speed. Programming in assembler language is used in such situations. But, it complicates, slows down and increases cost of development of the program. Therefore, it is tried to use programming in high level programming languages wherever it is possible. Programming in assembler language is used only in those parts of program where is needed as high as possible speed. It is also necessary to implement software modules that could be used in design of complete system software. Such is enabled modular software approach if it is necessary in concrete application. Also, in such systems it does not have to be used operating system. But some open source operating system can be used. As operating system slows down operation of the system and requires more

hardware resources (larger memory), it is not used in applications where high speed of operation and small hardware resources are needed. In applications where it is not critical, it is preferable to use some open source operating system. Use of operating system very much facilitates and accelerates software design, implementation, modification and maintenance in entire system. It simplifies, accelerates and makes cheaper all activities in development and implementation of software and entire system. Further activities in development of software include programming of system communication with environment and with user. It is simple in such systems since available open source software platforms offer large number of different programs (drivers) for such communication for used hardware open source platforms. It is also constantly intended to optimize entire software of system and to satisfy concrete application. With this way it is practically very possible and feasible, with very low total costs. Manufacturers of hardware open source platforms also offer appropriate software open source platforms for their products that are mainly used in software development of such systems. This significantly simplifies, accelerates and makes cheaper development, design, implementation and maintenance of software of such systems.

Optimal integration of hardware and software of entire system is also very important in design of embedded systems. That enables and ensures achieving optimal characteristics of the system with satisfying all requirements, and with balance of hardware and software of system. In design of system, it is needed to decide what will be realized by hardware and what by software. It is always needed to minimize use of hardware and to maximize use of software. As less as possible, functions should be realized by hardware and as much as possible by software. It enables minimization of dimensions, weight, energy consumption and cost of the total system. Therefore, in development and implementation of such embedded systems, from the beginning should be parallel and simultaneously realized design of system hardware and software and their integration and verification. That all is also simplified in such embedded systems since are mainly used open source hardware and software platforms of the same manufacturer.
