<!DOCTYPE html>
<html lang="en" data-content_root="../../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Linux kernel for ARC processors — The Linux Kernel documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../../_static/alabaster.css?v=3918102e" />
<script src="../../_static/documentation_options.js?v=5929fcd5"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Feature status on arc architecture" href="features.html" />
<link rel="prev" title="ARC architecture" href="index.html" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
</head><body>
<div class="document">
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../index.html">
<img class="logo" src="../../_static/logo.svg" alt="Logo of The Linux Kernel"/>
</a></p>
<h1 class="logo"><a href="../../index.html">The Linux Kernel</a></h1>
<p class="blurb">6.18.50</p>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>
<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/index.html">All development-process docs</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../subsystem-apis.html">Subsystems</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">CPU architectures</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="index.html">ARC architecture</a><ul class="current">
<li class="toctree-l3 current"><a class="current reference internal" href="#">Linux kernel for ARC processors</a></li>
<li class="toctree-l3"><a class="reference internal" href="features.html">Feature status on arc architecture</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../arm/index.html">ARM Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../arm64/index.html">ARM64 Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../loongarch/index.html">LoongArch Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../m68k/index.html">m68k Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mips/index.html">MIPS-specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../nios2/index.html">Nios II Specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../openrisc/index.html">OpenRISC Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../parisc/index.html">PA-RISC Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../powerpc/index.html">powerpc</a></li>
<li class="toctree-l2"><a class="reference internal" href="../riscv/index.html">RISC-V architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../s390/index.html">s390 Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sh/index.html">SuperH Interfaces Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sparc/index.html">Sparc Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../x86/index.html">x86-specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../xtensa/index.html">Xtensa Architecture</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../translations/index.html">Translations</a></li>
</ul>
</div>
<script type="text/javascript"> <!--
var sbar = document.getElementsByClassName("sphinxsidebar")[0];
let currents = document.getElementsByClassName("current")
if (currents.length) {
sbar.scrollTop = currents[currents.length - 1].offsetTop;
}
--> </script>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../../_sources/arch/arc/arc.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
</div>
</div>
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="linux-kernel-for-arc-processors">
<h1>Linux kernel for ARC processors<a class="headerlink" href="#linux-kernel-for-arc-processors" title="Link to this heading">¶</a></h1>
<section id="other-sources-of-information">
<h2>Other sources of information<a class="headerlink" href="#other-sources-of-information" title="Link to this heading">¶</a></h2>
<p>Below are some resources where more information can be found on
ARC processors and relevant open source projects.</p>
<ul class="simple">
<li><p><a class="reference external" href="https://embarc.org">https://embarc.org</a> - Community portal for open source on ARC.
Good place to start to find relevant FOSS projects, toolchain releases,
news items and more.</p></li>
<li><p><a class="reference external" href="https://github.com/foss-for-synopsys-dwc-arc-processors">https://github.com/foss-for-synopsys-dwc-arc-processors</a> -
Home for all development activities regarding open source projects for
ARC processors. Some of the projects are forks of various upstream projects,
where “work in progress” is hosted prior to submission to upstream projects.
Other projects are developed by Synopsys and made available to community
as open source for use on ARC Processors.</p></li>
<li><p><a class="reference external" href="https://www.synopsys.com/designware-ip/processor-solutions.html">Official Synopsys ARC Processors website</a> -
location, with access to some IP documentation (<a class="reference external" href="https://www.synopsys.com/dw/doc.php/ds/cc/programmers-reference-manual-ARC-HS.pdf">Programmer’s Reference
Manual, AKA PRM for ARC HS processors</a>)
and free versions of some commercial tools (<a class="reference external" href="https://www.synopsys.com/cgi-bin/dwarcnsim/req1.cgi">Free nSIM</a> and
<a class="reference external" href="https://www.synopsys.com/cgi-bin/arcmwtk_lite/reg1.cgi">MetaWare Light Edition</a>).
Please note though, registration is required to access both the documentation and
the tools.</p></li>
</ul>
</section>
<section id="important-note-on-arc-processors-configurability">
<h2>Important note on ARC processors configurability<a class="headerlink" href="#important-note-on-arc-processors-configurability" title="Link to this heading">¶</a></h2>
<p>ARC processors are highly configurable and several configurable options
are supported in Linux. Some options are transparent to software
(i.e cache geometries, some can be detected at runtime and configured
and used accordingly, while some need to be explicitly selected or configured
in the kernel’s configuration utility (AKA “make menuconfig”).</p>
<p>However not all configurable options are supported when an ARC processor
is to run Linux. SoC design teams should refer to “Appendix E:
Configuration for ARC Linux” in the ARC HS Databook for configurability
guidelines.</p>
<p>Following these guidelines and selecting valid configuration options
up front is critical to help prevent any unwanted issues during
SoC bringup and software development in general.</p>
</section>
<section id="building-the-linux-kernel-for-arc-processors">
<h2>Building the Linux kernel for ARC processors<a class="headerlink" href="#building-the-linux-kernel-for-arc-processors" title="Link to this heading">¶</a></h2>
<p>The process of kernel building for ARC processors is the same as for any other
architecture and could be done in 2 ways:</p>
<ul class="simple">
<li><p>Cross-compilation: process of compiling for ARC targets on a development
host with a different processor architecture (generally x86_64/amd64).</p></li>
<li><p>Native compilation: process of compiling for ARC on a ARC platform
(hardware board or a simulator like QEMU) with complete development environment
(GNU toolchain, dtc, make etc) installed on the platform.</p></li>
</ul>
<p>In both cases, up-to-date GNU toolchain for ARC for the host is needed.
Synopsys offers prebuilt toolchain releases which can be used for this purpose,
available from:</p>
<ul class="simple">
<li><p>Synopsys GNU toolchain releases:
<a class="reference external" href="https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases">https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases</a></p></li>
<li><p>Linux kernel compilers collection:
<a class="reference external" href="https://mirrors.edge.kernel.org/pub/tools/crosstool">https://mirrors.edge.kernel.org/pub/tools/crosstool</a></p></li>
<li><p>Bootlin’s toolchain collection: <a class="reference external" href="https://toolchains.bootlin.com">https://toolchains.bootlin.com</a></p></li>
</ul>
<p>Once the toolchain is installed in the system, make sure its “bin” folder
is added in your <code class="docutils literal notranslate"><span class="pre">PATH</span></code> environment variable. Then set <code class="docutils literal notranslate"><span class="pre">ARCH=arc</span></code> &
<code class="docutils literal notranslate"><span class="pre">CROSS_COMPILE=arc-linux</span></code> (or whatever matches installed ARC toolchain prefix)
and then as usual <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">defconfig</span> <span class="pre">&&</span> <span class="pre">make</span></code>.</p>
<p>This will produce “vmlinux” file in the root of the kernel source tree
usable for loading on the target system via JTAG.
If you need to get an image usable with U-Boot bootloader,
type <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">uImage</span></code> and <code class="docutils literal notranslate"><span class="pre">uImage</span></code> will be produced in <code class="docutils literal notranslate"><span class="pre">arch/arc/boot</span></code>
folder.</p>
</section>
</section>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
©The kernel development community.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
& <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
|
<a href="../../_sources/arch/arc/arc.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>