blob: e9120afd76aeefa927995a72306bc8db047a2449 [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.19: https://docutils.sourceforge.io/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Microchip AT90USB &mdash; NuttX latest documentation</title>
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx_collapse.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css" />
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
<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/clipboard.min.js"></script>
<script src="../../../_static/copybutton.js"></script>
<script src="../../../_static/design-tabs.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="Micropendous 3" href="boards/micropendous3/index.html" />
<link rel="prev" title="AVR32DEV1" href="../at32uc3/boards/avr32dev1/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>
<option value="../../../../12.6.0" >12.6.0</option>
<option value="../../../../12.7.0" >12.7.0</option>
<option value="../../../../12.8.0" >12.8.0</option>
<option value="../../../../12.9.0" >12.9.0</option>
<option value="../../../../12.10.0" >12.10.0</option>
<option value="../../../../12.11.0" >12.11.0</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"><a class="reference internal" href="../../arm64/index.html">ARM64</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../index.html">Microchip AVR</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../at32uc3/index.html">Microchip AT32UC3</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">Microchip AT90USB</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#avr-at90usb64x-and-at90usb6128x">AVR AT90USB64x and AT90USB6128x</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#toolchains">Toolchains</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#buildroot">Buildroot</a></li>
<li class="toctree-l4"><a class="reference internal" href="#winavr">WinAVR</a></li>
<li class="toctree-l4"><a class="reference internal" href="#linux">Linux</a></li>
<li class="toctree-l4"><a class="reference internal" href="#macos">macOS</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#windows-native-toolchains">Windows Native Toolchains</a></li>
<li class="toctree-l5"><a class="reference internal" href="#nuttx-buildroot-toolchain">NuttX buildroot toolchain</a></li>
<li class="toctree-l5"><a class="reference internal" href="#avr-libc">avr-libc</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#header-files">Header Files</a></li>
<li class="toctree-l4"><a class="reference internal" href="#header-file-installation">Header File Installation</a></li>
<li class="toctree-l4"><a class="reference internal" href="#build-notes">Build Notes</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#supported-boards">Supported Boards</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../atmega/index.html">Microchip Atmega</a></li>
<li class="toctree-l3"><a class="reference internal" href="../avrdx/index.html">Microchip DA/DB family</a></li>
<li class="toctree-l3"><a class="reference internal" href="../common/constants-in-progmem.html">Keeping constants in program memory</a></li>
<li class="toctree-l3"><a class="reference internal" href="../common/context-switch-notes.html">Notes on AVR context switch</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../ceva/index.html">CEVA</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../hc/index.html">HC</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../mips/index.html">MIPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../misco/index.html">Misoc</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../or1k/index.html">OpenRISC</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../renesas/index.html">Renesas</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../risc-v/index.html">RISC-V</a></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="../../sim/network_linux.html">Network Support on Linux</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sim/network_vpnkit.html">Network support with VPNKit</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sparc/index.html">SPARC</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../tricore/index.html">TriCore</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../x86/index.html">Intel 80x86</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../x86_64/index.html">Intel 80x86_64</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../xtensa/index.html">Xtensa</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../z16/index.html">Z16</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../z80/index.html">Z80</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="../../../implementation/index.html">Implementation Details</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="../../../debugging/index.html">Debugging</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="../../../standards/index.html">Standards</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../logos/index.html">NuttX Logos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../_tags/tagsindex.html">Tags</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">Microchip AVR</a></li>
<li class="breadcrumb-item active">Microchip AT90USB</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/apache/nuttx/blob/master/Documentation/platforms/avr/at90usb/index.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="microchip-at90usb">
<h1>Microchip AT90USB<a class="headerlink" href="#microchip-at90usb" title="Permalink to this heading"></a></h1>
<section id="avr-at90usb64x-and-at90usb6128x">
<h2>AVR AT90USB64x and AT90USB6128x<a class="headerlink" href="#avr-at90usb64x-and-at90usb6128x" title="Permalink to this heading"></a></h2>
<p><strong>Micropendous 3 AT90USB64x</strong> and <strong>AT90USB6128x</strong>. This port of NuttX
to the Opendous Micropendous 3 board. The Micropendous3 is may be
populated with an AT90USB646, 647, 1286, or 1287. I have only the
AT90USB647 version for testing. This version have very limited memory
resources: 64K of FLASH and 4K of SRAM.</p>
<p><strong>PJRC Teensy++ 2.0 AT90USB1286</strong>. This is a port of NuttX to the PJRC
Teensy++ 2.0 board. This board was developed by
<a class="reference external" href="http://pjrc.com/teensy/">PJRC</a>. The Teensy++ 2.0 is based on an
Microchip AT90USB1286 MCU.</p>
<p><strong>AVR-Specific Issues</strong>. The basic AVR port is solid. The biggest issue
for using AVR is its tiny SRAM memory and its Harvard architecture.
Because of the Harvard architecture, constant data that resides to flash
is inaccessible using “normal” memory reads and writes (only SRAM data
can be accessed “normally”). Special AVR instructions are available for
accessing data in FLASH, but these have not been integrated into the
normal, general purpose OS.</p>
<p>Most NuttX test applications are console-oriented with lots of strings
used for <code class="docutils literal notranslate"><span class="pre">printf()</span></code> and debug output. These strings are all stored in
SRAM now due to these data accessing issues and even the smallest
console-oriented applications can quickly fill a 4-8K memory. So, in
order for the AVR port to be useful, one of two things would need to be
done:</p>
<ol class="arabic simple">
<li><p>Don’t use console applications that required lots of strings. The
basic AVR port is solid and your typical deeply embedded application
should work fine. Or,</p></li>
<li><p>Create a special version of printf that knows how to access strings
that reside in FLASH (or EEPROM).</p></li>
</ol>
<p><strong>Development Environments:</strong> 1) Linux with native Linux GNU toolchain,
2) Cygwin/MSYS with Cygwin GNU toolchain, 3) Cygwin/MSYS with Windows
native toolchain, or 4) Native Windows. All testing, however, has been
performed using the NuttX DIY toolchain for Linux or Cygwin is provided
by the NuttX
<a class="reference external" href="https://bitbucket.org/nuttx/buildroot/downloads/">buildroot</a>
package. As a result, that toolchain is recommended.</p>
<section id="toolchains">
<h3>Toolchains<a class="headerlink" href="#toolchains" title="Permalink to this heading"></a></h3>
<p>There are several toolchain options. However, testing has been performed using
<em>only</em> the NuttX buildroot toolchain described below. Therefore, the NuttX
buildroot toolchain is the recommended choice.</p>
<p>The toolchain may be selected using the kconfig-mconf tool (via <code class="docutils literal notranslate"><span class="pre">make</span>
<span class="pre">menuconfig</span></code>), by editing the existing configuration file (<code class="docutils literal notranslate"><span class="pre">defconfig</span></code>), or by
overriding the toolchain on the make commandline with
<code class="docutils literal notranslate"><span class="pre">CONFIG_AVR_TOOLCHAIN=&lt;toolchain&gt;</span></code>.</p>
<p>The valid values for <code class="docutils literal notranslate"><span class="pre">&lt;toolchain&gt;</span></code> are <code class="docutils literal notranslate"><span class="pre">BUILDROOT</span></code>, <code class="docutils literal notranslate"><span class="pre">CROSSPACK</span></code>,
<code class="docutils literal notranslate"><span class="pre">LINUXGCC</span></code> and <code class="docutils literal notranslate"><span class="pre">WINAVR</span></code>.</p>
</section>
</section>
<section id="buildroot">
<h2>Buildroot<a class="headerlink" href="#buildroot" title="Permalink to this heading"></a></h2>
<p>There is a DIY buildroot version for the AVR boards here:
<a class="reference external" href="http://bitbucket.org/nuttx/buildroot/downloads/">http://bitbucket.org/nuttx/buildroot/downloads/</a>. See the following section for
details on building this toolchain.</p>
<p>Before building, make sure that the path to the new toolchain is included in
your <code class="docutils literal notranslate"><span class="pre">PATH</span></code> environment variable.</p>
<p>After configuring NuttX, make sure that <code class="docutils literal notranslate"><span class="pre">CONFIG_AVR_BUILDROOT_TOOLCHAIN=y</span></code> is
set in your <code class="docutils literal notranslate"><span class="pre">.config</span></code> file.</p>
</section>
<section id="winavr">
<h2>WinAVR<a class="headerlink" href="#winavr" title="Permalink to this heading"></a></h2>
<p>For Cygwin development environment on Windows machines, you can use WinAVR:
<a class="reference external" href="http://sourceforge.net/projects/winavr/files/">http://sourceforge.net/projects/winavr/files/</a></p>
<p>Before building, make sure that the path to the new toolchain is included in
your <code class="docutils literal notranslate"><span class="pre">PATH</span></code> environment variable.</p>
<p>After configuring NuttX, make sure that <code class="docutils literal notranslate"><span class="pre">CONFIG_AVR_WINAVR_TOOLCHAIN=y</span></code> is set
in your <code class="docutils literal notranslate"><span class="pre">.config</span></code> file.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>There is an incompatible version of <code class="docutils literal notranslate"><span class="pre">cygwin.dll</span></code> in the <code class="docutils literal notranslate"><span class="pre">WinAVR/bin</span></code>
directory! Make sure that the path to the correct <code class="docutils literal notranslate"><span class="pre">cygwin.dll</span></code> file
precedes the path to the WinAVR binaries!</p>
</div>
</section>
<section id="linux">
<h2>Linux<a class="headerlink" href="#linux" title="Permalink to this heading"></a></h2>
<p>For Linux, there are widely available avr-gcc packages. On Ubuntu, use:
sudo apt-get install gcc-avr gdb-avr avr-libc</p>
<p>After configuring NuttX, make sure that CONFIG_AVR_LINUXGCC_TOOLCHAIN=y is set in your
.config file.</p>
</section>
<section id="macos">
<h2>macOS<a class="headerlink" href="#macos" title="Permalink to this heading"></a></h2>
<p>For macOS, the CrossPack for AVR toolchain is available from:
<a class="reference external" href="http://www.obdev.at/products/crosspack/index.html">http://www.obdev.at/products/crosspack/index.html</a></p>
<p>This toolchain is functionally equivalent to the Linux GCC toolchain.</p>
<section id="windows-native-toolchains">
<h3>Windows Native Toolchains<a class="headerlink" href="#windows-native-toolchains" title="Permalink to this heading"></a></h3>
<p>The WinAVR toolchain is a Windows native toolchain. There are several
limitations to using a Windows native toolchain in a Cygwin environment. The
three biggest are:</p>
<ol class="arabic">
<li><p>The Windows toolchain cannot follow Cygwin paths. Path conversions are
performed automatically in the Cygwin makefiles using the <code class="docutils literal notranslate"><span class="pre">cygpath</span></code> utility
but you might easily find some new path problems. If so, check out <code class="docutils literal notranslate"><span class="pre">cygpath</span>
<span class="pre">-w</span></code></p></li>
<li><p>Windows toolchains cannot follow Cygwin symbolic links. Many symbolic links
are used in NuttX (e.g., <code class="docutils literal notranslate"><span class="pre">include/arch</span></code>). The make system works around
these problems for the Windows tools by copying directories instead of
linking them. But this can also cause some confusion for you: For example,
you may edit a file in a “linked” directory and find that your changes had no
effect. That is because you are building the copy of the file in the “fake”
symbolic directory. If you use a Windows toolchain, you should get in the
habit of making like this:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>make<span class="w"> </span>clean_context<span class="w"> </span>all
</pre></div>
</div>
<p>An alias in your <code class="docutils literal notranslate"><span class="pre">.bashrc</span></code> file might make that less painful.</p>
</li>
</ol>
<p>An additional issue with the WinAVR toolchain, in particular, is that it
contains an incompatible version of the Cygwin DLL in its <code class="docutils literal notranslate"><span class="pre">bin/</span></code> directory.
You must take care that the correct Cygwin DLL is used.</p>
</section>
<section id="nuttx-buildroot-toolchain">
<h3>NuttX buildroot toolchain<a class="headerlink" href="#nuttx-buildroot-toolchain" title="Permalink to this heading"></a></h3>
<p>If NuttX buildroot toolchain source tarball cne can be downloaded from the NuttX
Bitbucket download site (<a class="reference external" href="https://bitbucket.org/nuttx/nuttx/downloads/">https://bitbucket.org/nuttx/nuttx/downloads/</a>). This GNU
toolchain builds and executes in the Linux or Cygwin environment.</p>
<ol class="arabic">
<li><p>You must have already configured NuttX in <code class="docutils literal notranslate"><span class="pre">&lt;some-dir&gt;/nuttx</span></code>.</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>tools/configure.sh<span class="w"> </span>micropendous3:&lt;sub-dir&gt;
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You also must copy avr-libc header files into the NuttX include directory
with a command perhaps like:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>cp<span class="w"> </span>-a<span class="w"> </span>/cygdrive/c/WinAVR/include/avr<span class="w"> </span>include/.
</pre></div>
</div>
</div>
</li>
<li><p>Download the latest buildroot package into <code class="docutils literal notranslate"><span class="pre">&lt;some-dir&gt;</span></code></p></li>
<li><p>Unpack the buildroot tarball. The resulting directory may have versioning
information on it like <code class="docutils literal notranslate"><span class="pre">buildroot-x.y.z</span></code>. If so, rename
<code class="docutils literal notranslate"><span class="pre">&lt;some-dir&gt;/buildroot-x.y.z</span></code> to <code class="docutils literal notranslate"><span class="pre">&lt;some-dir&gt;/buildroot</span></code>.</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>&lt;some-dir&gt;/buildroot
<span class="gp">$ </span>cp<span class="w"> </span>boards/avr-defconfig-4.5.2<span class="w"> </span>.config
<span class="gp">$ </span>make<span class="w"> </span>oldconfig
<span class="gp">$ </span>make
</pre></div>
</div>
</li>
<li><p>Make sure that the <code class="docutils literal notranslate"><span class="pre">PATH</span></code> variable includes the path to the newly built
binaries.</p></li>
</ol>
<p>See the file <code class="docutils literal notranslate"><span class="pre">boards/README.txt</span></code> in the buildroot source tree.That has more
detailed PLUS some special instructions that you will need to follow if you are
building a toolchain for Cygwin under Windows.</p>
</section>
<section id="avr-libc">
<h3>avr-libc<a class="headerlink" href="#avr-libc" title="Permalink to this heading"></a></h3>
</section>
</section>
<section id="header-files">
<h2>Header Files<a class="headerlink" href="#header-files" title="Permalink to this heading"></a></h2>
<p>In any case, header files from avr-libc are required:
<a class="reference external" href="http://www.nongnu.org/avr-libc/">http://www.nongnu.org/avr-libc/</a>. A snapshot of avr-lib is included in the WinAVR
installation. For Linux development platforms, avr-libc package is readily
available (and would be installed in the apt-get command shown above). But if
you are using the NuttX buildroot configuration on Cygwin, then you will have to
build get avr-libc from binaries.</p>
</section>
<section id="header-file-installation">
<h2>Header File Installation<a class="headerlink" href="#header-file-installation" title="Permalink to this heading"></a></h2>
<p>The NuttX build will required that the AVR header files be available via the
NuttX include directory. This can be accomplished by either copying the
avr-libc header files into the NuttX include directory:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>cp<span class="w"> </span>-a<span class="w"> </span>&lt;avr-libc-path&gt;/include/avr<span class="w"> </span>&lt;nuttx-path&gt;/include/.
</pre></div>
</div>
<p>Or simply using a symbolic link:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>ln<span class="w"> </span>-s<span class="w"> </span>&lt;avr-libc-path&gt;/include/avr<span class="w"> </span>&lt;nuttx-path&gt;/include/.
</pre></div>
</div>
</section>
<section id="build-notes">
<h2>Build Notes<a class="headerlink" href="#build-notes" title="Permalink to this heading"></a></h2>
<p>It may not be necessary to have a built version of avr-lib; only header files
are required. But if you choose to use the optimized library functions of the
floating point library, then you may have to build avr-lib from sources. Below
are instructions for building avr-lib from fresh sources:</p>
<ol class="arabic">
<li><p>Download the avr-libc package from
<a class="reference external" href="http://savannah.nongnu.org/projects/avr-libc/">http://savannah.nongnu.org/projects/avr-libc/</a>. I am using
avr-lib-1.7.1.tar.bz2</p></li>
<li><p>Unpack the tarball and <code class="docutils literal notranslate"><span class="pre">cd</span></code> into it:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>tar<span class="w"> </span>jxf<span class="w"> </span>avr-lib-1.7.1.tar.bz2
<span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>avr-lib-1.7.1
</pre></div>
</div>
</li>
<li><p>Configure avr-lib. Assuming that WinAVR is installed at the following
location:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="nb">export</span><span class="w"> </span><span class="nv">PATH</span><span class="o">=</span>/cygdrive/c/WinAVR/bin:<span class="nv">$PATH</span>
<span class="gp">$ </span>./configure<span class="w"> </span>--build<span class="o">=</span><span class="sb">`</span>./config.guess<span class="sb">`</span><span class="w"> </span>--host<span class="o">=</span>avr
</pre></div>
</div>
<p>This takes a <em>long</em> time.</p>
</li>
<li><p>Make avr-lib.</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>make
</pre></div>
</div>
<p>This also takes a long time because it generates variants for nearly
all AVR chips.</p>
</li>
<li><p>Install avr-lib.</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>make<span class="w"> </span>install
</pre></div>
</div>
</li>
</ol>
<section id="supported-boards">
<h3>Supported Boards<a class="headerlink" href="#supported-boards" title="Permalink to this heading"></a></h3>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="boards/micropendous3/index.html">Micropendous 3</a></li>
<li class="toctree-l1"><a class="reference internal" href="boards/teensy-2.0/index.html">Teensy 2.0</a></li>
</ul>
</div>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../at32uc3/boards/avr32dev1/index.html" class="btn btn-neutral float-left" title="AVR32DEV1" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="boards/micropendous3/index.html" class="btn btn-neutral float-right" title="Micropendous 3" 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 2023, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>