You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.5 KiB
73 lines
2.5 KiB
.. _xtensa_developer_guide: |
|
|
|
Xtensa Developer Guide |
|
###################### |
|
|
|
Overview |
|
******** |
|
|
|
This page contains information on certain aspects when developing for |
|
Xtensa-based platforms. |
|
|
|
HiFi Audio Engine DSP |
|
********************* |
|
|
|
The kernel allows threads to use the HiFi Audio Engine DSP registers on boards |
|
that support these registers. The kernel only supports the use of the HiFi |
|
registers by threads and not ISRs. |
|
|
|
.. note:: |
|
Presently, only the Intel ADSP ACE hardware platforms are configured for |
|
HiFi support by default. |
|
|
|
Concepts |
|
======== |
|
|
|
The kernel can be configured for an application to leverage the services |
|
provided by the Xtensa HiFi Audio Engine DSP. Three modes of operation are |
|
supported, which are described below. |
|
|
|
No HiFi registers mode |
|
---------------------- |
|
|
|
This mode is used when the application has no threads that use the HiFi |
|
registers. It is the kernel's default HiFi services mode. |
|
|
|
Unshared HiFi registers mode |
|
---------------------------- |
|
|
|
This mode is used when the application has only a single thread that uses the |
|
HiFi registers. The HiFi registers are left unchanged whenever a context |
|
switch occurs. |
|
|
|
.. note:: |
|
The behavior is undefined, if two or more threads attempt to use |
|
the HiFi registers, as the kernel does not attempt to detect |
|
(nor prevent) multiple threads from using these registers. |
|
|
|
Shared HiFi registers mode |
|
-------------------------- |
|
|
|
This mode is used when the application has two or more threads that use HiFi |
|
registers. When enabled, the kernel automatically allows all threads to use the |
|
HiFi registers. During each thread context switch, the kernel saves the outgoing |
|
thread's HiFi registers and loads the incoming thread's HiFi registers, |
|
regardless of whether the thread utilizes them or not. |
|
|
|
Additional stack space may be required for each thread to account for the extra |
|
registers that must be saved. |
|
|
|
Configuration Options |
|
===================== |
|
|
|
The unshared HiFi registers mode is selected when configuration option |
|
:kconfig:option:`CONFIG_XTENSA_HIFI_SHARING` is disabled but configuration |
|
options :kconfig:option:`CONFIG_XTENSA_HIFI3` and/or |
|
:kconfig:option:`CONFIG_XTENSA_HIFI4` are enabled. |
|
|
|
The shared HiFi registers mode is selected when the configuration option |
|
:kconfig:option:`CONFIG_XTENSA_HIFI_SHARING` is enabled in addition to |
|
configuration options :kconfig:option:`CONFIG_XTENSA_HIFI3` and/or |
|
:kconfig:option:`CONFIG_XTENSA_HIFI4`. Threads must have sufficient |
|
stack space for saving the HiFi register values during context switches |
|
as described above.
|
|
|