Status of the Xtensa Port: Difference between revisions

From Linux/Xtensa
Jump to navigation Jump to search
(Update status information and some rearrangement.)
m (add ltrace to debug section)
 
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Xtensa Support in Open Source Software ==
This page provides additional information for software support for the Xtensa architecture. While most applications are written architecture independent, development tools and operating systems must be ported to a new processor architecture. Support for the Xtensa architecture has already been integrated in most Open Source software projects. Development trees that feed to the respective mainline repository and for new development can be found in local [http://git.linux-xtensa.org GIT] repositories.


Unlike applications that are mostly written architecture-independent,
=== Toolchain: Compiler (GCC) and various binary utilities (binutils) ===
development tools and operating systems must be ported to a new processor architecture.
Support for the Xtensa architecture has already been integrated to most Open Source software.
More information can be found below.


All GNU toolchain tools are maintained in OpenSource and can be downloaded from the respective locations.
* Binutils: http://www.gnu.org/software/binutils/
* GCC: http://gcc.gnu.org/


== Back-porting ==
Additional information to patch these sources for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].


Although development continues in the Open Source repositories ('top of trunk'), it is sometimes
=== C-Libraries: Glibc, uClibc and uClibc-ng ===
desirable to support additional features or to provide bug-fixes for older versions. These changes
are provided as patches and are located under http://www.linux-xtensa.org/pub/patches.


The patches follow the following naming convention:
Xtensa has long been part of uClibc, however, there are a lot of bug fixes pending for the next release (0.9.33.3). Support for the Native Posix Thread Library (NTPL) is under development and is expected to be part of the following release. The spin-off uClibc-ng project already contains the experimental NPTL support. Development for Glibc with NPTL (older thread libraries are not supported by Glibc anymore) is also current under way. A development tree can be found in this [https://github.com/czankel/xtensa-glibc GIT] repository.
* uClibc: http://www.uclibc.org/
* GlibC: http://www.gnu.org/software/libc/
* uClibc-ng: http://www.uclibc-ng.org/


''name''-''version''-p''seqno''-''descriptive-text''.patch
=== Debugging ===


* ''name'': the name of the tool or application,
GDB is maintained in OpenSource and support for Xtensa in other debugging tools was maintained as patches in local buildroot repositories, and are currently updated and pushed to the respective main repositories.
* ''version'': the version number,
* GDB: http://www.gnu.org/software/gdb/
* ''seqno'': a sequential patch number,
* strace: http://sourceforge.net/projects/strace/
* ''descriptive-text': short description of the patch.
* ltrace: http://ltrace.alioth.debian.org/
 
For example: <code>gcc-4.1.1-p3-add-tls-support-for-xtensa.patch</code>. The
name describes a patch for the compiler ''gcc'' version ''4.1.1''. It is the
''third'' patch of a series of patches and needs to be applied after ''p1''
and ''p2'' have been applied. The description reveals that this patch adds TLS
(Thread Local Storage) support for the Xtensa architecture.
 
The patches for a particular package and version must be applied sequentially
in order of the incremental patch number.


=== Linux kernel ===


== Status ==
Xtensa has been part of the official Linux kernel tree since 2.6.13, however, a lot of patches were maintained in a local stable tree for a long time, and are currently ported to the latest kernel tree. Features, such as large memory support and cache aliasing should be expected to hit the kernel in the 3.10/3.11 time frame. The latest version can be found at https://www.kernel.org/.


=== Compiler (GCC) and various binary utilities (binutils) ===
=== Toolchain creation tools and embedded distributions (crosstool-NG, buildroot, etc) ===


The GNU compiler (GCC) and binutils (assembler, linker, etc.) are maintained in OpenSource and can be downloaded from the respective locations. Support for the Native Posix Thread Library (NTPL), however, hasn't been submitted yet.
Xtensa is supported by buildroot, which can be downloaded from http://www.buildroot.net. Support for crosstool-NG has not been pushed into the official tree yet. A version can be downloaded from local [http://git.linux-xtensa.org GIT] repositories. Additional information to configure these tools for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].
* Buildroot: http://www.buildroot.net
* Crosstool-NG: http://crosstool-ng.org/
* OpenADK: http://www.openadk.org/


=== Debugger (GDB) ===
=== Other Projects ===


Generic support for Xtensa has been integrated in GDB v6.7 but lacks support for Linux.
The following list are additional projects that are architecture specific, or that have architecture specific components with additional information how to compile them for Xtensa.
 
=== C-Libraries GLIBC and uClibc ===
 
Support for Xtensa has been included in uClibc as of December'07 and will be included in the next release (0.9.30).
Because GLIBC requires support for NPTL, a patch has not been released yet.
 
=== Linux kernel ===


Support for Xtensa has been integrated into the Linux kernel in 2.6.13. For the latest version, see also [[Internet_Resources]]
* [[LibFFI]] - LibFFI is a library that provides an interface to execute low-level functions. It is mostly used by scripting or higher-level languages, such as Python, Dalvik, etc.

Latest revision as of 02:00, 6 October 2015

This page provides additional information for software support for the Xtensa architecture. While most applications are written architecture independent, development tools and operating systems must be ported to a new processor architecture. Support for the Xtensa architecture has already been integrated in most Open Source software projects. Development trees that feed to the respective mainline repository and for new development can be found in local GIT repositories.

Toolchain: Compiler (GCC) and various binary utilities (binutils)

All GNU toolchain tools are maintained in OpenSource and can be downloaded from the respective locations.

Additional information to patch these sources for a specific Xtensa processor configuration can be found under Toolchain and Embedded Distributions.

C-Libraries: Glibc, uClibc and uClibc-ng

Xtensa has long been part of uClibc, however, there are a lot of bug fixes pending for the next release (0.9.33.3). Support for the Native Posix Thread Library (NTPL) is under development and is expected to be part of the following release. The spin-off uClibc-ng project already contains the experimental NPTL support. Development for Glibc with NPTL (older thread libraries are not supported by Glibc anymore) is also current under way. A development tree can be found in this GIT repository.

Debugging

GDB is maintained in OpenSource and support for Xtensa in other debugging tools was maintained as patches in local buildroot repositories, and are currently updated and pushed to the respective main repositories.

Linux kernel

Xtensa has been part of the official Linux kernel tree since 2.6.13, however, a lot of patches were maintained in a local stable tree for a long time, and are currently ported to the latest kernel tree. Features, such as large memory support and cache aliasing should be expected to hit the kernel in the 3.10/3.11 time frame. The latest version can be found at https://www.kernel.org/.

Toolchain creation tools and embedded distributions (crosstool-NG, buildroot, etc)

Xtensa is supported by buildroot, which can be downloaded from http://www.buildroot.net. Support for crosstool-NG has not been pushed into the official tree yet. A version can be downloaded from local GIT repositories. Additional information to configure these tools for a specific Xtensa processor configuration can be found under Toolchain and Embedded Distributions.

Other Projects

The following list are additional projects that are architecture specific, or that have architecture specific components with additional information how to compile them for Xtensa.

  • LibFFI - LibFFI is a library that provides an interface to execute low-level functions. It is mostly used by scripting or higher-level languages, such as Python, Dalvik, etc.