| .. _system_fundamentals: |
| |
| System Fundamentals |
| ################### |
| |
| An :dfn:`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 :dfn:`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 :dfn:`board` has its own set of hardware devices and capabilities. One or more |
| *board configurations* are defined for a given board; each |
| :dfn:`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. |