Files
slimbootloader.github.io/supported-hardware/apollo-lake-crb.html

290 lines
21 KiB
HTML
Raw Permalink 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>Apollo Lake CRB Boards &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="Arrow Lake Platforms" href="arl-rvp.html" />
<link rel="prev" title="Alder Lake Platforms" href="adl-rvp.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 current"><a class="reference internal" href="index.html">Supported Hardware</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="adl-rvp.html">Alder Lake Platforms</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Apollo Lake CRB Boards</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#supported-boards">Supported Boards</a></li>
<li class="toctree-l3"><a class="reference internal" href="#building">Building</a></li>
<li class="toctree-l3"><a class="reference internal" href="#stitching">Stitching</a></li>
<li class="toctree-l3"><a class="reference internal" href="#flashing">Flashing</a></li>
<li class="toctree-l3"><a class="reference internal" href="#slimbootloader-binary-for-capsule-image">Slimbootloader binary for capsule image</a></li>
<li class="toctree-l3"><a class="reference internal" href="#triggering-firmware-update">Triggering Firmware Update</a></li>
<li class="toctree-l3"><a class="reference internal" href="#debug-uart">Debug UART</a></li>
<li class="toctree-l3"><a class="reference internal" href="#booting-yocto-linux">Booting Yocto Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="#board-id-assignments">Board ID Assignments</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="arl-rvp.html">Arrow Lake Platforms</a></li>
<li class="toctree-l2"><a class="reference internal" href="arlh-ari.html">Arrow Island Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="cfl-crb.html">Coffee Lake Refresh CRB Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="cml-rvp.html">Comet Lake RVP Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="ehl-crb.html">Elkhart Lake CRB Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="icdx-crb.html">Ice Lake -D CRB Boards</a></li>
<li class="toctree-l2"><a class="reference internal" href="mtl-mcl.html">McLaren Island Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="mtl-rvp.html">Meteor Lake Platforms</a></li>
<li class="toctree-l2"><a class="reference internal" href="qemu.html">QEMU Virtual Platform</a></li>
<li class="toctree-l2"><a class="reference internal" href="qsp.html">Simics® QSP Virtual Platform</a></li>
<li class="toctree-l2"><a class="reference internal" href="raptor-lake.html">Raptor Lake Platforms</a></li>
<li class="toctree-l2"><a class="reference internal" href="rplp-rki.html">Rock Island Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="tgl-rvp.html">Tiger Lake RVP Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="up2.html">UP<sup>2</sup> Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="up2-6000.html">UP<sup>2</sup> 6000 Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="up7000adln50.html">UP Squared Pro 7000 Edge Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="upxtreme.html">UP Xtreme Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="upxtremei11.html">UP Xtreme i11 Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="upxtremei12.html">UP Xtreme i12 Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="upxtremei12rplp.html">UP Xtreme i12 13th Board</a></li>
<li class="toctree-l2"><a class="reference internal" href="whl-crb.html">Whiskey Lake CRB Board</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../developer-guides/index.html">Developers Guide</a></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">Supported Hardware</a></li>
<li class="breadcrumb-item active">Apollo Lake CRB Boards</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="apollo-lake-crb-boards">
<span id="apollo-lake-crb"></span><h1>Apollo Lake CRB Boards<a class="headerlink" href="#apollo-lake-crb-boards" title="Permalink to this heading"></a></h1>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Intel Atom® Processor E3900 is formally known as Apollo Lake platform.</p>
</div>
<section id="supported-boards">
<h2>Supported Boards<a class="headerlink" href="#supported-boards" title="Permalink to this heading"></a></h2>
<p>SBL supports <strong>Leaf Hill, Juniper Hill and Oxbow Hill</strong> board variations of Apollo Lake platform.</p>
</section>
<section id="building">
<h2>Building<a class="headerlink" href="#building" title="Permalink to this heading"></a></h2>
<p>To build SBL for Apollo Lake platform platform:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">BuildLoader</span><span class="o">.</span><span class="n">py</span> <span class="n">build</span> <span class="n">apl</span>
</pre></div>
</div>
<p>The output images are generated under <code class="docutils literal notranslate"><span class="pre">Outputs</span></code> directory.</p>
</section>
<section id="stitching">
<h2>Stitching<a class="headerlink" href="#stitching" title="Permalink to this heading"></a></h2>
<ol class="arabic simple">
<li><p>Download Apollo Lake platform <a class="reference external" href="https://firmware.intel.com/sites/default/files/leafhill-0.70-firmwareimages.zip">firmware image</a>.</p></li>
</ol>
<blockquote>
<div><p>This image contains additional firmware ingredients that are required to boot on Apollo Lake platform.</p>
</div></blockquote>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Unzip the firmware images that contains two Apollo Lake platform firmware images, one is Debug version and one is Release version, both of them can be used for stitch SBL IFWI.</p>
</div>
<ol class="arabic" start="2">
<li><p>Stitch SBL images into downloaded BIOS image:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">Platform</span><span class="o">/</span><span class="n">ApollolakeBoardPkg</span><span class="o">/</span><span class="n">Script</span><span class="o">/</span><span class="n">StitchLoader</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">i</span> <span class="o">&lt;</span><span class="n">BIOS_IMAGE_NAME</span><span class="o">&gt;</span> <span class="o">-</span><span class="n">s</span> <span class="n">Outputs</span><span class="o">/</span><span class="n">apl</span><span class="o">/</span><span class="n">Stitch_Components</span><span class="o">.</span><span class="n">zip</span> <span class="o">-</span><span class="n">o</span> <span class="o">&lt;</span><span class="n">SBL_IFWI_IMAGE_NAME</span><span class="o">&gt;</span>
<span class="n">where</span> <span class="o">-</span><span class="n">i</span> <span class="o">=</span> <span class="n">Input</span> <span class="n">file</span><span class="p">,</span> <span class="o">-</span><span class="n">o</span> <span class="o">=</span> <span class="n">Output</span> <span class="n">file</span><span class="o">.</span>
</pre></div>
</div>
</li>
</ol>
<blockquote>
<div><p>For example, stitching SBL IFWI image <code class="docutils literal notranslate"><span class="pre">sbl_lfh_ifwi.bin</span></code> from Apollo Lake platform firmware images downloaded:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">Platform</span><span class="o">/</span><span class="n">ApollolakeBoardPkg</span><span class="o">/</span><span class="n">Script</span><span class="o">/</span><span class="n">StitchLoader</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">i</span> <span class="n">LEAFHILD</span><span class="o">.</span><span class="n">X64</span><span class="mf">.0070</span><span class="o">.</span><span class="n">R01</span><span class="mf">.1805070352</span><span class="o">.</span><span class="n">bin</span> <span class="o">-</span><span class="n">s</span> <span class="n">Outputs</span><span class="o">/</span><span class="n">apl</span><span class="o">/</span><span class="n">Stitch_Components</span><span class="o">.</span><span class="n">zip</span> <span class="o">-</span><span class="n">o</span> <span class="n">sbl_lfh_ifwi</span><span class="o">.</span><span class="n">bin</span>
</pre></div>
</div>
</div></blockquote>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p><code class="docutils literal notranslate"><span class="pre">StitchLoader.py</span></code> script works only if Boot Guard in the base image is not enabled, and the silicon is not fused with Boot Guard enabled. If Boot Guard is enabled, please use StitchIfwi.py script instead.</p>
</div>
<p>For more details on stitch tool, see <a class="reference internal" href="../tools/StitchTool.html#stitch-tool"><span class="std std-ref">Stitch Tool</span></a> on how to stitch the IFWI image with SBL.</p>
</section>
<section id="flashing">
<h2>Flashing<a class="headerlink" href="#flashing" title="Permalink to this heading"></a></h2>
<p>Flash the generated <code class="docutils literal notranslate"><span class="pre">sbl_lfh_ifwi.bin</span></code> to the target board using DediProg SF100 or SF600 programmer.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Please check the alignment/polarity when connecting Dediprog to the board. Please power off the board before connecting the Dediprog.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The connector labelled <strong>SPI TPM - J5D1</strong> on the target board is for DediProg.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Please disconnect Deidprog before powering up the board again.</p>
</div>
</section>
<section id="slimbootloader-binary-for-capsule-image">
<h2>Slimbootloader binary for capsule image<a class="headerlink" href="#slimbootloader-binary-for-capsule-image" title="Permalink to this heading"></a></h2>
<p>Creating slimbootloader binary for capsule image requires the following steps:</p>
<p>Build SBL for Apollo Lake platform:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">BuildLoader</span><span class="o">.</span><span class="n">py</span> <span class="n">build</span> <span class="n">apl</span>
</pre></div>
</div>
<p>Run stitching process as described above to create a SBL IFWI binary <code class="docutils literal notranslate"><span class="pre">sbl_lfh_ifwi.bin</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">Platform</span><span class="o">/</span><span class="n">ApollolakeBoardPkg</span><span class="o">/</span><span class="n">Script</span><span class="o">/</span><span class="n">StitchLoader</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">i</span> <span class="o">&lt;</span><span class="n">BIOS_IMAGE_NAME</span><span class="o">&gt;</span> <span class="o">-</span><span class="n">s</span> <span class="n">Outputs</span><span class="o">/</span><span class="n">apl</span><span class="o">/</span><span class="n">Stitch_Components</span><span class="o">.</span><span class="n">zip</span> <span class="o">-</span><span class="n">o</span> <span class="n">sbl_lfh_ifwi</span><span class="o">.</span><span class="n">bin</span>
</pre></div>
</div>
<p>Extract <code class="docutils literal notranslate"><span class="pre">bios.bin</span></code> from SBL IFWI image:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">BootloaderCorePkg</span><span class="o">/</span><span class="n">Tools</span><span class="o">/</span><span class="n">IfwiUtility</span><span class="o">.</span><span class="n">py</span> <span class="n">extract</span> <span class="o">-</span><span class="n">i</span> <span class="n">sbl_lfh_ifwi</span><span class="o">.</span><span class="n">bin</span> <span class="o">-</span><span class="n">p</span> <span class="n">IFWI</span><span class="o">/</span><span class="n">BIOS</span> <span class="o">-</span><span class="n">o</span> <span class="n">bios</span><span class="o">.</span><span class="n">bin</span>
</pre></div>
</div>
<p>Generate capsule update image <code class="docutils literal notranslate"><span class="pre">FwuImage.bin</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">BootloaderCorePkg</span><span class="o">/</span><span class="n">Tools</span><span class="o">/</span><span class="n">GenCapsuleFirmware</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">p</span> <span class="n">BIOS</span> <span class="n">bios</span><span class="o">.</span><span class="n">bin</span> <span class="o">-</span><span class="n">k</span> <span class="n">KEY_ID_FIRMWAREUPDATE_RSA2048</span> <span class="o">-</span><span class="n">o</span> <span class="n">FwuImage</span><span class="o">.</span><span class="n">bin</span>
</pre></div>
</div>
</section>
<section id="triggering-firmware-update">
<h2>Triggering Firmware Update<a class="headerlink" href="#triggering-firmware-update" title="Permalink to this heading"></a></h2>
<p>Sample implementation of trigerring firmware update is explained below</p>
<p>SBL for Apollo Lake platform uses BIT16 of PMC I/O register (Scratchpad for sharing data between BIOS and PMC Firmware (BIOS_SCRATCHPAD) - Offset 1090h) to trigger firmware update. When BIT16 is set, SBL will set the boot mode to FLASH_UPDATE.</p>
<p>please refer to IsFirmwareUpdate() function called in <code class="docutils literal notranslate"><span class="pre">Platform\ApollolakeBoardPkg\Library\Stage1BBoardInitLib\Stage1BBoardInitLib.c</span></code> to understand how SBL will detect firmware update mode.</p>
</section>
<section id="debug-uart">
<h2>Debug UART<a class="headerlink" href="#debug-uart" title="Permalink to this heading"></a></h2>
<p>For Apollo Lake platform, LPSS UART <strong>Port 2</strong> is the debug UART configured in SBL.</p>
<p>The Apollo Lake platform have a FTDI chip for serial to USB connection. Please connect the <strong>micro USB connector</strong> next to the power button on the target board to a host and a
terminal software to enable debug console from SBL.</p>
</section>
<section id="booting-yocto-linux">
<h2>Booting Yocto Linux<a class="headerlink" href="#booting-yocto-linux" title="Permalink to this heading"></a></h2>
<p>See <a class="reference internal" href="up2.html#boot-yocto-usb"><span class="std std-ref">Booting Yocto Linux from USB</span></a> for more details.</p>
<p>You may need to change boot options to boot from USB. See <a class="reference internal" href="../how-tos/change-boot-option.html#change-boot-options"><span class="std std-ref">Change Boot Options</span></a>.</p>
</section>
<section id="board-id-assignments">
<h2>Board ID Assignments<a class="headerlink" href="#board-id-assignments" title="Permalink to this heading"></a></h2>
<p>Each Apollo Lake platform CRB board is assigned a unique platform ID by reading a set of GPIO pins (25, 26 and 30).</p>
<blockquote>
<div><table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>Board</p></td>
<td><p>Platform ID</p></td>
</tr>
<tr class="row-even"><td><p>Oxbow Hill</p></td>
<td><p>6</p></td>
</tr>
<tr class="row-odd"><td><p>Leaf Hill</p></td>
<td><p>7</p></td>
</tr>
<tr class="row-even"><td><p>Juniper Hill</p></td>
<td><p>8</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
<p>See <a class="reference internal" href="../developer-guides/configuration.html#dynamic-platform-id"><span class="std std-ref">Platform ID Detection using GPIOs</span></a> for more details.</p>
<p>To customize board configurations in <code class="docutils literal notranslate"><span class="pre">*.dlt</span></code> file, make sure to specify <code class="docutils literal notranslate"><span class="pre">PlatformId</span></code> to the corresponding values for the board.</p>
<p>See <a class="reference internal" href="../tools/ConfigTools.html#configuration-tool"><span class="std std-ref">Configuration Tools</span></a> for more details.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="adl-rvp.html" class="btn btn-neutral float-left" title="Alder Lake Platforms" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="arl-rvp.html" class="btn btn-neutral float-right" title="Arrow Lake Platforms" 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 Jun 27, 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>