From 05cb5b3ef09049afb0d5d252b5dbdaf1a95c620f Mon Sep 17 00:00:00 2001 From: Flavio Ceolin Date: Mon, 28 Oct 2019 15:02:57 -0700 Subject: [PATCH] docs: guide: Add build system information A detailed overview of Zephyr's build system. This is a thorough view of the low level build process starting from CMake and using Make as the build system tool. Things missing here that will be further documented: - west - external modules/libraries Signed-off-by: Flavio Ceolin --- .gitignore | 1 + doc/guides/build/build-build-phase-1.svg | Bin 0 -> 57294 bytes doc/guides/build/build-build-phase-2.svg | Bin 0 -> 74425 bytes doc/guides/build/build-build-phase-3.svg | Bin 0 -> 68123 bytes doc/guides/build/build-build-phase-4.svg | Bin 0 -> 49526 bytes doc/guides/build/build-config-phase.svg | Bin 0 -> 62239 bytes doc/guides/build/index.rst | 155 +++++++++++++++++++++++ doc/guides/index.rst | 1 + 8 files changed, 157 insertions(+) create mode 100644 doc/guides/build/build-build-phase-1.svg create mode 100644 doc/guides/build/build-build-phase-2.svg create mode 100644 doc/guides/build/build-build-phase-3.svg create mode 100644 doc/guides/build/build-build-phase-4.svg create mode 100644 doc/guides/build/build-config-phase.svg create mode 100644 doc/guides/build/index.rst diff --git a/.gitignore b/.gitignore index fb82082db09..e9131429038 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ *.swo *~ build*/ +!doc/guides/build cscope.* .dir diff --git a/doc/guides/build/build-build-phase-1.svg b/doc/guides/build/build-build-phase-1.svg new file mode 100644 index 0000000000000000000000000000000000000000..464c591a23325a56d3f381f823033b589664c4f4 GIT binary patch literal 57294 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 literal 0 HcmV?d00001 diff --git a/doc/guides/build/build-build-phase-2.svg b/doc/guides/build/build-build-phase-2.svg new file mode 100644 index 0000000000000000000000000000000000000000..44073f36705626c50b74ff525cb88b04a2c407f6 GIT binary patch literal 74425 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 literal 0 HcmV?d00001 diff --git a/doc/guides/build/build-build-phase-3.svg b/doc/guides/build/build-build-phase-3.svg new file mode 100644 index 0000000000000000000000000000000000000000..b37bfde83d8918d812dad5b56a161afb1fed1135 GIT binary patch literal 68123 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

a0LQA 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 literal 0 HcmV?d00001 diff --git a/doc/guides/build/index.rst b/doc/guides/build/index.rst new file mode 100644 index 00000000000..b9fb2b3d8f2 --- /dev/null +++ b/doc/guides/build/index.rst @@ -0,0 +1,155 @@ +.. _build_overview: + +Build Overview +############## + +The Zephyr build process can be divided into two main phases: a +configuration phase (driven by *CMake*) and a build phase (driven by +*Make* or *Ninja*). We will descibe the build phase using *Make* as +example. + + +Configuration Phase +******************* + +The configuration phase begins when the user invokes *CMake*, +specifying a source application directory and a board target. + +.. figure:: build-config-phase.svg + :align: center + :alt: Zephyr's build configuration phase + :figclass: align-center + :width: 80% + +*CMake* begins by processing the *CMakeLists.txt* file in the application +directory, which refers to the *CMakeLists.txt* file in the Zephyr +top-level directory, which in turn refers to *CMakeLists.txt* files +throughout the build tree (directly and indirectly). Its primary +output is a set of Makefiles to drive the build process, but *CMake* +scripts do some build processing of their own: + +Device tree + Using *cpp*, device-tree specifications (*.dts/.dtsi* files) are + collected from the target’s architecture, SoC, board, and + application directories and compiled with *dtc*. Then the build + tool (scripts/dts) convert this into *.h* files for later + consumption. + +Device tree fixup + Files named *dts_fixup.h* from the target’s architecture, SoC, + board, and application directories are concatenated into a single + *dts_fixup.h*. Its purpose is to normalize constants output in the + previous step so they have the names expected by the source files + in the build phase. + +Kconfig + The build tool reads the *Kconfig* files for the target + architecture, the target SoC, the target board, the target + application, as well as *Kconfig* files associated with subsystems + throughout the source tree. It incorporates the device tree outputs + to allow configurations to make use of that data. It ensures the + desired configuration is consistent, outputs *autoconf.h* for the + build phase. + +Build Phase +*********** + +The build phase begins when the user invokes *make*. Its ultimate +output is a complete Zephyr application in a format suitable for +loading/flashing on the desired target board (*zephyr.elf*, +*zephyr.hex*, etc.) The build phase can be broken down, conceptually, +into four stages: the pre-build, first-pass binary, final binary, and +post-processing. + +Pre-build occurs before any source files are compiled, because during +this phase header files used by the source files are generated. + +Pre-build +========= + +Offset generation + Access to high-level data structures and members is sometimes + required when the definitions of those structures is not + immediately accessible (e.g., assembly language). The generation of + *offsets.h* (by *gen_offset_header.py*) facilitates this. + +System call boilerplate + The *gen_syscall_header.py*, *parse_syscalls.py* and + *gen_syscall_header.py* scripts work together to bind potential + system call functions with their implementations. + +.. figure:: build-build-phase-1.svg + :align: center + :alt: Zephyr's build stage I + :figclass: align-center + :width: 80% + +First-pass binary +================= + +Compilation proper begins with the first-pass binary. Source files (C +and assembly) are collected from various subsystems (which ones is +decided during the configuration phase), and compiled into archives +(with reference to header files in the tree, as well as those +generated during the configuration phase and the pre-build stage). + +If memory protection is enabled, then: + +Partition grouping + The gen_app_partitions.py script scans all the + generated archives and outputs linker scripts to ensure that + application partitions are properly grouped and aligned for the + target’s memory protection hardware. + +Then *cpp* is used to combine linker script fragments from the target’s +architecture/SoC, the kernel tree, optionally the partition output if +memory protection is enabled, and any other fragments selected during +the configuration process, into a *linker.cmd* file. The compiled +archives are then linked with *ld* as specified in the +*linker.cmd*. + +In some configurations, this is the final binary, and the next stage +is skipped. + +.. figure:: build-build-phase-2.svg + :align: center + :alt: Zephyr's build stage II + :figclass: align-center + :width: 80% + +Final binary +============ + +In some configurations, the binary from the previous stage is +incomplete, with empty and/or placeholder sections that must be filled +in by, essentially, reflection. When :ref:`usermode` is enabled: + +Kernel object hashing + The *gen_kobject_list.py* scans the *ELF DWARF* + debug data to find the address of the all kernel objects. This + list is passed to *gperf*, which generates a perfect hash function and + table of those addresses, then that output is optimized by + *process_gperf.py*, using known properties of our special case. + +Then, the link from the previous stage is repeated, this time with the +missing pieces populated. + +.. figure:: build-build-phase-3.svg + :align: center + :alt: Zephyr's build stage III + :figclass: align-center + :width: 80% + + +Post processing +=============== + +Finally, if necessary, the completed kernel is converted from *ELF* to +the format expected by the loader and/or flash tool required by the +target. This is accomplished in a straightforward manner with *objdump*. + +.. figure:: build-build-phase-4.svg + :align: center + :alt: Zephyr's build final stage + :figclass: align-center + :width: 80% diff --git a/doc/guides/index.rst b/doc/guides/index.rst index 3b0c5ec8f2a..22b484dc3a6 100644 --- a/doc/guides/index.rst +++ b/doc/guides/index.rst @@ -30,3 +30,4 @@ User and Developer Guides tracing/index west/index optimizations/index + build/index