System Fundamentals
An application image is a binary that controls the operation of a hardware system, or of a simulated system running under QEMU. Each application image contains both the application’s code and the Zephyr kernel code needed to support it. They are compiled as a single, fully-linked binary.
Once an application image has been loaded onto a target system, the image takes control of the system, initializes it, and runs forever as the system’s sole application. Both application code and kernel code execute as privileged code within a single shared address space.
An application is a set of user-supplied files that the Zephyr build system processes to generate an application image. The application consists of application-specific code, a collection of kernel configuration settings, and at least one Makefile. The application’s kernel configuration settings enable the build system to create a kernel tailor-made to meet the needs of the application and to make the best use of the system’s resources.
The Zephyr Kernel supports a variety of target systems, known as boards; each board has its own set of hardware devices and capabilities. One or more board configurations are defined for a given board; each board configuration indicates how the devices that may be present on the board are to be used by the kernel. The board and board configuration concepts make it possible to develop a single application that can be used by a set of related target systems, or even target systems based on different CPU architectures.