For an efficient and reliable operation of embedded systems, the optimal coordination of hardware, software and system architecture is crucial.
Embedded systems are omnipresent, some visible, most hidden. Whether the air conditioning in the car, the control in the coffee machine, or the control of the lift, it is best not to notice their existence and their function as naturally given. Unlike the personal computer (PC), the embedded system normally serves only one predefined purpose. But the requirements are much higher than with a PC, which is a general purpose machine, but not specialized in anything. The requirements may extend to low-latency or energy efficiency, for example.
The design of an embedded system often includes not only the hardware, the operating system and the embedded application, but also the server-side software in the cloud. Finishing such a project in reasonable time and expense requires a lot of experience in architecture, implementation, and especially in the choice of hardware and software ecosystem.
For years, the ARM architecture dominated the hardware ecosystem of embedded systems. Since the ARM processors (ARM CPU) resp. System on a chip (ARM-SoC) are manufactured under license, they are available in all sorts of variations, from the power-saving small to the powerful multicore system. As a newcomer announces itself supported by a broadly supported company consortium RISC-V architecture, which carries at the Instruction Set Architecture (ISA) the Openssource idea in hardware and is designed from the ground up for application-specific extensions.
In addition to some specialized operating systems such as RTOS (real-time OS), GNU / Linux dominates the software ecosystem of embedded systems. In order to successfully use its extensive range of functions and to integrate it into its own products, experience and detailed knowledge are almost indispensable. Thus, the quality of the subcomponents (especially drivers) can vary greatly and result in a necessary improvement or porting to undesirable overhead during development or maintenance. This can only be prevented by carefully reviewing the entire software package, called Board Suppor Package (BSP).
If necessary, the chosen platform can be optimized in every detail. This can e.g. through the use of SIMD instructions, CUDA cores (GPU) or FPGAs. This is called HW / SW Codesign.
If user interaction is required, QT is recommended for simpler, the Anroid Open Source Project (AOSP) for larger projects.