The boot loader not only serves the purpose of correctly initializing the hardware and preparing the entire system for the operating system's start. It also plays a substantial part in the update concept for the entire system, an aspect which is often not recognized. At the same time, the boot loader is responsible for many other requirements. Beginning with the start screen over interface monitoring to ... whatever comes to users' minds. And it is a core component concerning boot time.
Many of these requirements cannot be dealt with by well-known boot loaders such as Uboot, Redboot, or others. We are aware of the just mentioned "usual" boot loaders and frequently employ these in customer projects. It goes without saying that we adapt these boot loaders to your project and your requirements. However, to meet increased demands concerning boot loader capabilities, tasks to be solved by it, and other requirements such as boot time, we rely on a concept of initial program load (IPL) and a "mini" Linux kernel. This means that the boot loader is kept as minimal as possible, and most of the required logic is outsourced to the operating system. This approach offers not only one but two advantages: Firstly, the code basis of the boot loader (and consequently its maintenance) is significantly decreased, and secondly, it is possible to comfortably work with common Linux tools for example in regard to update concepts.