blob: 2eb87efff270f6eb63b51cfb590e515243e37fb8 [file] [log] [blame]
<!--
Documentation/_templates/layout.html
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
-->
<!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>Microchip Polarfire (MPFS) &mdash; NuttX latest 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/tabs.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<link rel="shortcut icon" href="../../../_static/favicon.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="PolarFire Icicle Kit" href="boards/icicle/index.html" />
<link rel="prev" title="ESP32-C3 DevKit" href="../esp32c3/boards/esp32c3-devkit/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"> NuttX
</a>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select onchange="javascript:location.href = this.value;">
<option value="../../../../latest" selected="selected">latest</option>
<option value="../../../../10.0.0" >10.0.0</option>
<option value="../../../../10.0.1" >10.0.1</option>
<option value="../../../../10.1.0" >10.1.0</option>
<option value="../../../../10.2.0" >10.2.0</option>
<option value="../../../../10.3.0" >10.3.0</option>
<option value="../../../../11.0.0" >11.0.0</option>
<option value="../../../../12.0.0" >12.0.0</option>
<option value="../../../../12.1.0" >12.1.0</option>
<option value="../../../../12.2.0" >12.2.0</option>
<option value="../../../../12.2.1" >12.2.1</option>
<option value="../../../../12.3.0" >12.3.0</option>
<option value="../../../../12.4.0" >12.4.0</option>
<option value="../../../../12.5.0" >12.5.0</option>
<option value="../../../../12.5.1" >12.5.1</option>
</select>
</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">
<p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../quickstart/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Supported Platforms</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../arm/index.html">ARM</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../index.html">RISC-V</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../bl602/index.html">Bouffalo Lab BL602</a></li>
<li class="toctree-l3"><a class="reference internal" href="../esp32c3/index.html">Espressif ESP32-C3</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">Microchip Polarfire (MPFS)</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#mpfs-toolchain">MPFS Toolchain</a></li>
<li class="toctree-l4"><a class="reference internal" href="#booting">Booting</a></li>
<li class="toctree-l4"><a class="reference internal" href="#building-and-flashing">Building and flashing</a></li>
<li class="toctree-l4"><a class="reference internal" href="#debugging-with-openocd">Debugging with OpenOCD</a></li>
<li class="toctree-l4"><a class="reference internal" href="#peripheral-support">Peripheral Support</a></li>
<li class="toctree-l4"><a class="reference internal" href="#supported-boards">Supported Boards</a><ul>
<li class="toctree-l5"><a class="reference internal" href="boards/icicle/index.html">PolarFire Icicle Kit</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../sim/index.html">Simulators</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../xtensa/index.html">Xtensa</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../components/index.html">OS Components</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../applications/index.html">Applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../reference/index.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faq/index.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../glossary.html">Glossary</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">NuttX</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 Platforms</a></li>
<li class="breadcrumb-item"><a href="../index.html">RISC-V</a></li>
<li class="breadcrumb-item active">Microchip Polarfire (MPFS)</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/platforms/risc-v/mpfs/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="microchip-polarfire-mpfs">
<h1>Microchip Polarfire (MPFS)<a class="headerlink" href="#microchip-polarfire-mpfs" title="Permalink to this heading"></a></h1>
<p>RV64 64-bit RISC-V multiprocessor-based Microcontroller Subsystem
(MPFS025T, MPFS095T, MPFS160T, MPFS250T, MPFS460T)</p>
<section id="mpfs-toolchain">
<h2>MPFS Toolchain<a class="headerlink" href="#mpfs-toolchain" title="Permalink to this heading"></a></h2>
<p>A generic RISC-V toolchain can be used to build MPFS projects.
Like: <a class="reference external" href="https://xpack.github.io/riscv-none-embed-gcc">https://xpack.github.io/riscv-none-embed-gcc</a> or <a class="reference external" href="https://github.com/sifive/freedom-tools/releases">https://github.com/sifive/freedom-tools/releases</a></p>
</section>
<section id="booting">
<h2>Booting<a class="headerlink" href="#booting" title="Permalink to this heading"></a></h2>
<p>The NuttX works as a standalone operating system that may initialize all the required clocks and
peripherals including DDR memory. Alternatively, the vendor’s HSS bootloader may be used instead to
perform all the initialization steps.</p>
</section>
<section id="building-and-flashing">
<h2>Building and flashing<a class="headerlink" href="#building-and-flashing" title="Permalink to this heading"></a></h2>
<p>Configure the NuttX project: <code class="docutils literal notranslate"><span class="pre">./tools/configure.sh</span> <span class="pre">icicle:nsh</span></code>
Run <code class="docutils literal notranslate"><span class="pre">make</span></code> to build the project.</p>
<p>If NuttX is built as a standalone OS with the config option CONFIG_MPFS_BOOTLOADER set, it’s important
to note that the image size is very limited: only (128K - 256) bytes. 256 bytes are reserved for the
header that must be prepended into the NuttX binary. This binary is called hss-envm-wrapper-bm1-dummySbic.bin
and may be found from the vendor’s HSS implementation. Moreover, after prepending the 256-byte header,
the LMA section needs to be adjusted, for example:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>riscv64-unknown-elf-objcopy -I binary -O ihex --change-section-lma *+0x20220000 nuttx.bin nuttx.hex
</pre></div>
</div>
<p>The output binary nuttx.hex may be flashed with the LiberoSoc tool.
The tool is available from: <a class="reference external" href="https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/fpga/libero-software-later-versions#Documents%20and%20Downloads">https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/fpga/libero-software-later-versions#Documents%20and%20Downloads</a></p>
<p>There’s an alternative way to use NuttX, without the CONFIG_MPFS_BOOTLOADER option set. This expects the
HSS bootloader sets up the system (memories, caches, initializes clocks etc.).
First make sure that <code class="docutils literal notranslate"><span class="pre">hss-payload-generator</span></code> is installed.
Available from: <a class="reference external" href="https://github.com/polarfire-soc/hart-software-services">https://github.com/polarfire-soc/hart-software-services</a></p>
<p>This tool is used to convert the ELF/bin to a compatible HSS payload image</p>
<p>Create HSS payload bin:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>hss-payload-generator -v -c hss-nuttx.yml payload.bin
</pre></div>
</div>
</section>
<section id="debugging-with-openocd">
<h2>Debugging with OpenOCD<a class="headerlink" href="#debugging-with-openocd" title="Permalink to this heading"></a></h2>
<p>Compatible OpenOCD and configs can be downloaded from:
<a class="reference external" href="https://www.microsemi.com/product-directory/design-tools/4879-softconsole#downloads">https://www.microsemi.com/product-directory/design-tools/4879-softconsole#downloads</a></p>
<p>OpenOCD can then be used:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>openocd -c &quot;set DEVICE MPFS&quot; --file board/microsemi-riscv.cfg
</pre></div>
</div>
</section>
<section id="peripheral-support">
<h2>Peripheral Support<a class="headerlink" href="#peripheral-support" title="Permalink to this heading"></a></h2>
<p>The following list indicates the state of peripherals’ support in NuttX:</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Peripheral</p></th>
<th class="head"><p>Support</p></th>
<th class="head"><p>NOTES</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>GPIO</p></td>
<td><p>Yes</p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p>MMUART</p></td>
<td><p>Yes</p></td>
<td><p>Uart mode only</p></td>
</tr>
<tr class="row-even"><td><p>SPI</p></td>
<td><p>Yes</p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p>I2C</p></td>
<td><p>Yes</p></td>
<td></td>
</tr>
<tr class="row-even"><td><p>eMMC SD/SDIO</p></td>
<td><p>Yes</p></td>
<td><p>No PHY training</p></td>
</tr>
<tr class="row-odd"><td><p>USB</p></td>
<td><p>Yes</p></td>
<td></td>
</tr>
<tr class="row-even"><td><p>Ethernet MAC</p></td>
<td><p>Yes</p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p>Timers</p></td>
<td><p>No</p></td>
<td></td>
</tr>
<tr class="row-even"><td><p>Watchdog</p></td>
<td><p>No</p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p>RTC</p></td>
<td><p>No</p></td>
<td></td>
</tr>
<tr class="row-even"><td><p>CAN</p></td>
<td><p>No</p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p>eNVM</p></td>
<td><p>No</p></td>
<td></td>
</tr>
</tbody>
</table>
</section>
<section id="supported-boards">
<h2>Supported Boards<a class="headerlink" href="#supported-boards" title="Permalink to this heading"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="boards/icicle/index.html">PolarFire Icicle Kit</a></li>
</ul>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../esp32c3/boards/esp32c3-devkit/index.html" class="btn btn-neutral float-left" title="ESP32-C3 DevKit" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="boards/icicle/index.html" class="btn btn-neutral float-right" title="PolarFire Icicle Kit" 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 2020, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>