Embedded applications are becoming increasingly complex with the emergence of multi-core processors, and adding more functionality to our devices is a growing demand. New software components may require a lot of different dependencies and resources. In addition, the underlying operating systems are getting more complex, as well as their configuration. Linux is one the most popular choice for building complex embedded applications due its flexibility, combined with the wide range of supported hardware.
The aim of this thesis is to present the whole process of application development for Linux based embedded systems, from the first successful boot, to product maintenance. Over-the-Air update is a common requirement in the age of Internet of Things, yet providing a reliable software update process is a challenging task. The major objective of this study is to design a software architecture with proper fallback mechanism to meet these new requirements.
Tampered boot process is a serious threat, thus protection against unauthorized modification is a must, especially in systems with remote access. The designed software architecture provides a chain of steps to guarantee the authenticity and integrity of the firmware.
Building and deploying embedded applications takes a number of different steps, but configuring Linux build systems properly might help us in automation. Continuous integration is a well-known process, although implementation for embedded products is difficult. The presented client-server architecture for firmware update is connected to the source code manager to create a process for automated firmware distribution.
The primary purpose of this thesis is to provide a generic and lightweight software stack which could be applied to a wide range of embedded devices running Linux. The last chapter presents the addition of a new application to this framework and demonstrates its capabilities including the automated firmware generation and deployment.