Files
slimbootloader.github.io/developer-guides/source-tree.html

207 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Source Tree Structure &mdash; Slim Bootloader 1.0 documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/graphviz.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<link rel="shortcut icon" href="../_static/sbl_logo_blue_32x32_icon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Build System" href="build-system.html" />
<link rel="prev" title="Developers Guide" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
Slim Bootloader
<img src="../_static/sbl_logo_white_200x200.png" class="logo" alt="Logo"/>
</a>
<div class="version">
1.0
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../supported-hardware/index.html">Supported Hardware</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Developers Guide</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Source Tree Structure</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#package-dependency">Package Dependency</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="build-system.html">Build System</a></li>
<li class="toctree-l2"><a class="reference internal" href="stitching-ifwi.html">Stitch IFWI Image</a></li>
<li class="toctree-l2"><a class="reference internal" href="fsp.html">Firmware Support Package</a></li>
<li class="toctree-l2"><a class="reference internal" href="boot-flow.html">Boot Flow</a></li>
<li class="toctree-l2"><a class="reference internal" href="boot-flow.html#ldrglobal-loader-global-data">LdrGlobal - Loader Global Data</a></li>
<li class="toctree-l2"><a class="reference internal" href="boot-flow.html#end-to-end-call-graph">End-to-End Call Graph</a></li>
<li class="toctree-l2"><a class="reference internal" href="boot-flow.html#platform-initialization">Platform Initialization</a></li>
<li class="toctree-l2"><a class="reference internal" href="flashmap.html">Flash Map</a></li>
<li class="toctree-l2"><a class="reference internal" href="memory-map.html">Memory Map</a></li>
<li class="toctree-l2"><a class="reference internal" href="configuration.html">Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="payload.html">Payloads</a></li>
<li class="toctree-l2"><a class="reference internal" href="osloader.html">OsLoader</a></li>
<li class="toctree-l2"><a class="reference internal" href="bootimage.html">Boot Image</a></li>
<li class="toctree-l2"><a class="reference internal" href="boot-options.html">Boot Options</a></li>
<li class="toctree-l2"><a class="reference internal" href="flash-boot.html">Boot from Flash</a></li>
<li class="toctree-l2"><a class="reference internal" href="versioning.html">Versioning</a></li>
<li class="toctree-l2"><a class="reference internal" href="boot-performance.html">Boot Performance</a></li>
<li class="toctree-l2"><a class="reference internal" href="shell.html">Shell Interface</a></li>
<li class="toctree-l2"><a class="reference internal" href="debugging-with-cca.html">Source Level Debugging with Intel(R) SVT CCA</a></li>
<li class="toctree-l2"><a class="reference internal" href="debugging-with-udk.html">Source Level Debugging with Intel(R) UDK Debugger</a></li>
<li class="toctree-l2"><a class="reference internal" href="logging.html">Logging</a></li>
<li class="toctree-l2"><a class="reference internal" href="contributions.html">Contribution Guidelines</a></li>
<li class="toctree-l2"><a class="reference internal" href="ingredients-update.html">Ingredients upgrade</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../security/index.html">Security Features</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-tos/index.html">How-Tos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tutorials/index.html">Tutorials</a></li>
<li class="toctree-l1"><a class="reference internal" href="../specs/index.html">Specifications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../references/references.html">References and Links</a></li>
<li class="toctree-l1"><a class="reference internal" href="../references/terminology.html">Terminology and Acronyms</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">Slim Bootloader</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">Developers Guide</a></li>
<li class="breadcrumb-item active">Source Tree Structure</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="source-tree-structure">
<h1>Source Tree Structure<a class="headerlink" href="#source-tree-structure" title="Permalink to this heading"></a></h1>
<p>SBL source code is organized into common and platform specific folders:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>|&lt;source&gt;/
|-- BuildLoader.py
|-- BootloaderCommonPkg/
|-- BootloaderCorePkg/
| |-- Stage1A/
| |-- Stage1B/
| |-- Stage2/
| `-- Tools/
|-- PayloadPkg/
| |-- OsLoader/
| `-- FirmwareUpdate/
|-- Platform/
`-- Silicon/
</pre></div>
</div>
<p>Heres a brief description of each of these folders:</p>
<dl>
<dt>BuildLoader.py</dt><dd><p>Top-level build script. Performs tool chain setup, pre-build, configuration, compilation and post-build steps.</p>
</dd>
<dt>BootloaderCommonPkg</dt><dd><p>Common libraries for all stages of boot flow</p>
</dd>
<dt>BootloaderCorePkg/Stage1A</dt><dd><p>Stage1A code initializes platform from reset vector till Cache-As-RAM (CAR) is setup. It then transfers control to Stage1B.</p>
<p>It invokes FSP-T.</p>
</dd>
<dt>BootloaderCorePkg/Stage1B</dt><dd><p>Stage1B code initializes platform from CAR to the point system memory is fully initialized. It then transfers control to Stage2.</p>
<p>It invokes FSP-M.</p>
</dd>
<dt>BootloaderCorePkg/Stage2</dt><dd><p>Stage2 code performs additional platform initialization and transfers control to payload.</p>
<p>It invokes FSP-S.</p>
</dd>
<dt>BootloaderCorePkg/Tools</dt><dd><p>Contains helper and common scripts for build and configuration during build process</p>
</dd>
<dt>PayloadPkg/OsLoader</dt><dd><p>Contains files that implement OS boot logic from boot media.</p>
</dd>
<dt>PayloadPkg/FirmwareUpdate</dt><dd><p>Contains files that implement platform-independent logic to perform firmware update flow instead of booting OS.</p>
</dd>
<dt>Platform</dt><dd><p>Board specific code for a supported platform.</p>
</dd>
<dt>Silicon</dt><dd><p>Silicon specific code for a supported SoC.</p>
</dd>
</dl>
<section id="package-dependency">
<span id="id1"></span><h2>Package Dependency<a class="headerlink" href="#package-dependency" title="Permalink to this heading"></a></h2>
<p>SBL source tree contains multiple packages (subdirectories) that are organized in a manner to provide modularity and ease of use when extending new features or porting for a new board. The following rules shall be followed when one makes code changes:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">BootloaderCorePkg</span></code> and <code class="docutils literal notranslate"><span class="pre">PayloadPkg</span></code> are mutually exclusive. They should <strong>not</strong> have code dependency to one or the other.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">PayloadPkg</span></code> should <strong>not</strong> have dependency to code under <code class="docutils literal notranslate"><span class="pre">Platform</span></code> or <code class="docutils literal notranslate"><span class="pre">Silicon</span></code> directories. <code class="docutils literal notranslate"><span class="pre">PayloadPkg</span></code> should only depends on libraries in <code class="docutils literal notranslate"><span class="pre">BootloaderCommonPkg</span></code>.</p></li>
</ul>
<p>The source tree is organized as core, silicon and platform. A typical platform porting requires code change only in the platform directories.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="index.html" class="btn btn-neutral float-left" title="Developers Guide" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="build-system.html" class="btn btn-neutral float-right" title="Build System" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2018 - 2025, Intel Corporation.
<span class="lastupdated">Last updated on Mar 11, 2025.
</span></p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>