Supported Processors

From Linux/Xtensa
Revision as of 23:50, 18 March 2013 by Chris (Talk | contribs)

Jump to: navigation, search

Xtensa Processor Architecture


The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. SoC and processor designers can select from a variety of options, such as instruction-set extensions, memory, cache, and interrupt configurations. Moreover, Xtensa processors can be extended with custom-defined instructions and registers, as well as custom port and queue interfaces. All Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools.

Tensilica’s Diamond Standard Series processor family consists of a number of ready-to-use synthesizable cores and is based on the Xtensa processor architecture. The Diamond Standard 233L processor, for example, contains an MMU and fully supports running Linux.

Automatic Support for Custom Xtensa Cores

Despite the endless possibilities provided by the configurability and extensibility of the Xtensa architecture, obtaining an open source toolchain and kernel that fully support a specific configured Xtensa core is a straightforward matter. The process is mostly automated (scripted), avoiding any need to manually port the kernel to a new processor variant as is typical for a fixed processor architecture. Modifications to toolchain and kernel sources are limited to a small set of configuration files, typically provided by Tensilica in the form of an overlay to be copied into the sources. The development tools and kernel are subsequently configured and built as usual. (Of course, you still have to port Linux to your particular board or platform.)

In the Linux kernel for example, all configuration files are located inside the Xtensa include directory in the kernel sources (arch/xtensa/variant/config/include/variant/). Adding support to the kernel for a custom configured Xtensa processor generally involves copying the appropriate configuration files into the appropriate variant directory.

Kernel and Processor Configuration

Because the kernel is much closer to the hardware and provides an abstraction for many architectural options, it needs to be configured and compiled for a particular platform and processor configuration. It also requires development tools configured for the particular processor. Note that a processor configuration is also often referred to as a core variant in Linux. The following list shows processor configurations included in the kernel.

  • Diamond 232L
  • Diamond 233L
  • Stretch S6000 (without MMU)
  • 'FSF' default configuration (only for tool verification)