1 | .. comment SPDX-License-Identifier: CC-BY-SA-4.0 |
---|
2 | |
---|
3 | .. comment: Copyright (c) 2018 Chris Johns <chrisj@rtems.org> |
---|
4 | .. comment: All rights reserved. |
---|
5 | |
---|
6 | Target Execution |
---|
7 | ================ |
---|
8 | .. index:: Target Execution |
---|
9 | |
---|
10 | Fixed position statically linked executables have a fixed address in a target's |
---|
11 | address space. The location in the address space for code, data and read-only |
---|
12 | data is fixed. The BSP defines the memory map and it is set by the BSP |
---|
13 | developer based on the target's hardware requirements and it's bootloader. |
---|
14 | |
---|
15 | Targets typically contains a bootloader that is executed after the target's |
---|
16 | processor exits reset. A bootloader is specific to a target's processor and |
---|
17 | hardware configuration and is responsible for the low level initialization of |
---|
18 | the hardware resources needed to load and execute an operating system's |
---|
19 | kernel. In the case of RTEMS this is the RTEMS executable. |
---|
20 | |
---|
21 | Bootloaders vary in size, complexity and functionality. Some architectures have |
---|
22 | a number of bootloader stages and others have only minimal support. An example |
---|
23 | of a high end system is Xilinx's Zynq processor with three stages. First a mask |
---|
24 | ROM in the System On Chip (SOC) executes after reset loading a first stage |
---|
25 | bootloader (FSBL) from an SD card, QSPI flash or NAND flash depending on |
---|
26 | signals connected to the device. The FSBL loads a second stage bootloader |
---|
27 | (SSBL) such as U-Boot and this loads the kernel. U-Boot can be configured to |
---|
28 | load a kernel from a range of media and file system formats as well as over a |
---|
29 | network using a number of protocols. This structure provides flexibility at the |
---|
30 | system level to support development environments such as a workshop or |
---|
31 | laboratory through to tightly control production configurations. |
---|
32 | |
---|
33 | Bootloaders often have custom formats for the executable image they load. The |
---|
34 | formats can be simple to keep the bootloader simple or complex to support |
---|
35 | check-sums, encryption or redundancy in case an image becomes corrupted. A |
---|
36 | bootloader often provides a host tool that creates the required file from the |
---|
37 | RTEMS executable's ELF file. |
---|
38 | |
---|
39 | If RTEMS is to run from RAM the bootloader reads the image and loads the code, |
---|
40 | initialized data and read-only data into the RAM and then jumps to a known |
---|
41 | entry point. If the code is executed from non-volatile storage the process to |
---|
42 | write the image into that storage will have extracted the various binary parts |
---|
43 | and written those to the correct location. |
---|
44 | |
---|
45 | The important point to note is the binary parts of the executable are somehow |
---|
46 | loaded into the target's address space ready to execute. The way this done may |
---|
47 | vary but the out come is always the same, the binary code, data and read-only |
---|
48 | data is resident in the processor's address space at the BSP defined |
---|
49 | addresses. |
---|