| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Quark™ SoC</title> |
| </head> |
| <body> |
| |
| <h1>Intel® Quark™ SoC</h1> |
| <table> |
| <tr> |
| <td><a target="_blank" href="http://www.intel.com/content/dam/www/public/us/en/images/embedded/16x9/edc-quark-block-diagram-16x9.png"><img alt="Quark Block Diagram" src="http://www.intel.com/content/dam/www/public/us/en/images/embedded/16x9/edc-quark-block-diagram-16x9.png" width=500></a></td> |
| <td> |
| The Quark™ SoC code was developed using the |
| <a target="_blank" href="../Board/galileo.html">Galileo Gen 2</a> |
| board: |
| <ul> |
| <li><a target="_blank" href="../development.html">Overall</a> development</li> |
| <li><a target="_blank" href="soc.html">SoC</a> support</li> |
| <li><a target="_blank" href="../fsp1_1.html">FSP 1.1</a> integration</li> |
| <li><a target="_blank" href="../Board/board.html">Board</a> support</li> |
| <li><a target="_blank" href="#QuarkFsp">Quark™ FSP</a></li> |
| <li><a target="_blank" href="#CorebootPayloadPkg">CorebootPayloadPkg</a></li> |
| </ul> |
| </td> |
| </tr> |
| </table> |
| |
| |
| |
| <hr> |
| <h2>Quark™ Documentation</h2> |
| <ul> |
| <li><a target="_blank" href="http://www.intel.com/content/dam/www/public/us/en/images/embedded/16x9/edc-quark-block-diagram-16x9.png">Block Diagram</a></li> |
| <li><a target="_blank" href="http://www.intel.com/content/www/us/en/embedded/products/quark/specifications.html">Specifications</a>: |
| <ul> |
| <li><a target="_blank" href="http://ark.intel.com/products/79084/Intel-Quark-SoC-X1000-16K-Cache-400-MHz">X1000</a> |
| - <a target="_blank" href="http://www.intel.com/content/www/us/en/search.html?keyword=X1000">Documentation</a>: |
| <ul> |
| <li><a target="_blank" href="http://www.intel.com/content/dam/www/public/us/en/documents/datasheets/quark-x1000-datasheet.pdf">Datasheet</a></li> |
| <li><a target="_blank" href="http://www.intel.com/content/dam/support/us/en/documents/processors/quark/sb/intelquarkcore_devman_001.pdf">Developer's Manual</a></li> |
| <li><a target="_blank" href="http://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/intel-quark-product-brief-v3.pdf">Product Brief</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li><a target="_blank" href="../index.html#Documentation">More documentation</a></li> |
| </ul> |
| |
| |
| |
| <hr> |
| <h2><a name="CorebootPayloadPkg">Quark™ EDK2 CorebootPayloadPkg</a></h2> |
| <p> |
| Build Instructions: |
| </p> |
| <ol> |
| <li>Set up <a href="#BuildEnvironment">build environment</a></li> |
| <li>Linux (assumes GCC48): |
| <pre><code>build -p CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc -a IA32 \ |
| -t GCC48 -b DEBUG -DDEBUG_PROPERTY_MASK=0x27 \ |
| -DDEBUG_PRINT_ERROR_LEVEL=0x80000042 -DSHELL_TYPE=BUILD_SHELL \ |
| -DMAX_LOGICAL_PROCESSORS=1 |
| ls Build/CorebootPayloadPkgIA32/DEBUG_GCC48/FV/UEFIPAYLOAD.fd |
| </code></pre> |
| </li> |
| <li>Windows (assumes Visual Studio 2015): |
| <pre><code>build -p CorebootPayloadPkg\CorebootPayloadPkgIa32.dsc -a IA32 -t VS2015x86 -b DEBUG -DDEBUG_PROPERTY_MASK=0x27 -DDEBUG_PRINT_ERROR_LEVEL=0x80000042 -DSHELL_TYPE=BUILD_SHELL -DMAX_LOGICAL_PROCESSORS=1 |
| dir Build\CorebootPayloadPkgIA32\DEBUG_VS2015x86\FV\UEFIPAYLOAD.fd |
| </code></pre> |
| </li> |
| <li>In the .config for coreboot, set the following Kconfig values: |
| <ul> |
| <li>CONFIG_PAYLOAD_ELF=y</li> |
| <li>CONFIG_PAYLOAD_FILE="path to UEFIPAYLOAD.fd"</li> |
| </ul> |
| </li> |
| <li>Build coreboot</li> |
| <li>Copy the image build/coreboot.rom into flash</li> |
| </ol> |
| |
| |
| |
| <hr> |
| <h2><a name="BuildEnvironment">Quark™ EDK2 Build Environment</a></h2> |
| <p> |
| Use the following steps to setup a build environment: |
| </p> |
| <ol> |
| <li>Get the EDK2 sources: |
| <ol type="A"> |
| <li>EDK2: git clone <a target="_blank" href="https://github.com/tianocore/edk2.git">https://github.com/tianocore/edk2.git</a></li> |
| <li>EDK2-non-osi: git clone <a target="_blank" href="https://github.com/tianocore/edk2-non-osi.git">https://github.com/tianocore/edk2-non-osi.git</a></li> |
| <li>Win32 BaseTools: git clone <a target="_blank" href="https://github.com/tianocore/edk2-BaseTools-win32.git">https://github.com/tianocore/edk2-BaseTools-win32.git</a></li> |
| </ol> |
| </li> |
| <li>Set up a build window: |
| <ul> |
| <li>Linux: |
| <pre><code>export WORKSPACE=$PWD |
| export PACKAGES_PATH="$PWD/edk2:$PWD/edk2-non-osi" |
| cd edk2 |
| export WORKSPACE=$PWD |
| . edksetup.sh |
| </code></pre> |
| </li> |
| <li>Windows: |
| <pre><code>set WORKSPACE=%CD% |
| set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-non-osi |
| set EDK_TOOLS_BIN=%WORKSPACE%\edk2-BaseTools-win32 |
| cd edk2 |
| edksetup.bat |
| </code></pre> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| |
| |
| <hr> |
| <h2><a name="QuarkFsp">Quark™ FSP</a></h2> |
| <p> |
| Getting the Quark FSP source: |
| </p> |
| <ol> |
| <li>Set up an EDK-II <a href="#BuildEnvironment">Build Environment</a></li> |
| <li>cd edk2</li> |
| <li>mkdir QuarkFspPkg</li> |
| <li>cd QuarkFspPkg</li> |
| <li>Use git to clone <a target="_blank" href="https://review.gerrithub.io/#/admin/projects/LeeLeahy/quarkfsp">QuarkFspPkg</a> into the QuarkFpsPkg directory (.)</li> |
| </ol> |
| |
| <h3>Building QuarkFspPkg</h3> |
| <p> |
| There are two versions of FSP: FSP 1.1 and FSP 2.0. There are also two |
| different implementations of FSP, one using subroutines without SEC and |
| PEI core and the original implementation which relies on SEC and PEI core. |
| Finally there are two different build x86 types release (r32) and debug (d32). |
| </p> |
| <p>Note that the subroutine implementations are a <b>work in progress</b>.</p> |
| <p> |
| Build commands shown building debug FSP: |
| </p> |
| <ul> |
| <li>Linux: |
| <ul> |
| <li>QuarkFspPkg/BuildFsp1_1.sh -d32</li> |
| <li>QuarkFspPkg/BuildFsp1_1Pei.sh -d32</li> |
| <li>QuarkFspPkg/BuildFsp2_0.sh -d32</li> |
| <li>QuarkFspPkg/BuildFsp2_0Pei.sh -d32</li> |
| </ul> |
| <li>Windows: |
| <ul> |
| <li>QuarkFspPkg/BuildFsp1_1.bat -d32</li> |
| <li>Windows: QuarkFspPkg/BuildFsp2_0.bat -d32</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h3>Copying FSP files into coreboot Source Tree</h3> |
| <p> |
| There are some helper scripts to copy the FSP output into the coreboot |
| source tree. The parameters to these scripts are: |
| </p> |
| <ol> |
| <li>EDK2 tree root</li> |
| <li>coreboot tree root</li> |
| <li>Build type: DEBUG or RELEASE</li> |
| </ol> |
| <p> |
| Script files: |
| </p> |
| <ul> |
| <li>Linux: |
| <ul> |
| <li>QuarkFspPkg/coreboot_fsp1_1.sh</li> |
| <li>QuarkFspPkg/coreboot_fsp1_1Pei.sh</li> |
| <li>QuarkFspPkg/coreboot_fsp2_0.sh</li> |
| <li>QuarkFspPkg/coreboot_fsp2_0Pei.sh</li> |
| </ul> |
| </ul> |
| |
| |
| <hr> |
| <h2>Quark™ EDK2 BIOS</h2> |
| <p> |
| Build Instructions: |
| </p> |
| <ol> |
| <li>Set up <a href="#BuildEnvironment">build environment</a></li> |
| <li>Build the image: |
| <ul> |
| <li>Linux: |
| <pre><code>build -p QuarkPlatformPkg/Quark.dsc -a IA32 -t GCC48 -b DEBUG -DDEBUG_PROPERTY_MASK=0x27 -DDEBUG_PRINT_ERROR_LEVEL=0x80000042 |
| ls Build/Quark/DEBUG_GCC48/FV/Quark.fd |
| </code></pre> |
| </li> |
| <li>Windows: |
| <pre><code>build -p QuarkPlatformPkg/Quark.dsc -a IA32 -t VS2012x86 -b DEBUG -DDEBUG_PROPERTY_MASK=0x27 -DDEBUG_PRINT_ERROR_LEVEL=0x80000042 |
| dir Build\Quark\DEBUG_VS2012x86\FV\Quark.fd |
| </code></pre> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <p> |
| Documentation: |
| </p> |
| <ul> |
| <li><a target="_blank" href="https://github.com/tianocore/edk2/tree/master/QuarkPlatformPkg">EDK II firmware for Intel® Quark™ SoC X1000 based platforms</a></li> |
| <li>Intel® Quark™ SoC X1000 <a target="_blank" href="http://www.intel.com/content/dam/www/public/us/en/documents/guides/quark-x1000-uefi-firmware-writers-guide.pdf">UEFI Firmware Writer's Guide</a></li> |
| </ul> |
| |
| |
| |
| <hr> |
| <p>Modified: 17 May 2016</p> |
| </body> |
| </html> |