Audio Back End: Difference between revisions

From Pyra Wiki
Jump to navigation Jump to search
(Created page with "This article is a stub and needs expanding. ABE is part of omap4 (all variants) and omap5, and does not appear to have changed in any major way since its introduction. compo...")
 
No edit summary
Line 1: Line 1:
This article is a stub and needs expanding.
This article is a stub and needs expanding.
== Overview ==


ABE is part of omap4 (all variants) and omap5, and does not appear to have changed in any major way since its introduction.
ABE is part of omap4 (all variants) and omap5, and does not appear to have changed in any major way since its introduction.


components:
ABE components (targets on ABE interconnect):
* external interfaces
* external interfaces:
  - mcpdm: custom interface to TWL6040/TWL6041 audio IC
** custom interface (mcpdm) to TWL6040/TWL6041 audio IC
  - dmic: microphone interfaces
** digital microphone controller (dmic)
  - mcbsp1-3, mcasp: digital audio interfaces
** digital audio interfaces (mcbsp1-3, mcasp)
  - slimbus1: defeatured on omap5
** mipi slimbus interface (slimbus1), defeatured on omap5
* timers (gptimer5-8, wdt3)
* four timers (gptimer5-8) with external trigger input / pwm output.
* audio engine subsystem (aess): dedicated custom DSP
* watchdog (wdt3)
<blockquote>The AE is the core of the ABE subsystem. It performs the real-time audio processing within the ABE:
* audio engine subsystem (aess)
mixing, muxing, volume control, smooth muting, sampling rate conversion, and side-tone equalization.</blockquote>
 
Initiators to the ABE interconnect:
* audio engine subsystem (local initiator) embeds dedicated dma controller (audio transfer controller) for local transfers between ABE components
* L3 interconnect
* Cortex-A15 subsystem (mpuss) via private dedicated link
* [[Tesla]] DSP subsystem (including EDMA) via private dedicated link
 
The private links from mpuss and dspss are intended for use in low-power scenarios, to avoid waking up the entire L3 interconnect. Note that the audio transfer controller (atc) cannot reach outside ABE. DMA to/from memory is handled by the system dma controller (sdma) via the L3 interconnect.
 
== Audio Engine Subsystem ==
 
<blockquote>''The AE is the core of the ABE subsystem. It performs the real-time audio processing within the ABE:
mixing, muxing, volume control, smooth muting, sampling rate conversion, and side-tone equalization.''</blockquote>
 
Custom dedicated DSP (unrelated to the Tesla DSP) for audio processing.
 
Embeds local memories:
* DMEM: 64 KB data memory
* CMEM: 6 KB coefficient memory
* SMEM: 18 KB sample memory
* PMEM: 8 KB program memory
 
Audio traffic controller (ATC)
* performs local DMA (within ABE)
* generates interrupt requests to cortex-a15 and tesla DSP
* generates requests to sDMA (system dma controller) and EDMA (Tesla subsystem DMA controller)
 
AE is considered to be fixed-function by TI, only supports a one-time firmware upload after cold boot. Unknown 32-bit instruction set.  Helpfully, three ''slightly'' different versions of the firmware are provided, which made it easy identify branch-like instructions.  [https://github.com/mvduin/abefw-omap4plus/blob/master/fw/histogram.txt Histogram] of instructions across all three firmwares.
 
== Documentation / Resources ==
 
* [http://www.ti.com/lit/ug/swpu245h/swpu245h.pdf ABE HAL documentation]
* [https://git.ti.com/glsdk/abefw-omap4plus ABE firmware] repo, [https://github.com/mvduin/abefw-omap4plus my mirror] with a bit a tidying. Besides the firmware this repo also includes headers with offsets into AE's memories and abstraction code, or something. Haven't examined it in detail yet.
* [https://git.ti.com/ti-linux-kernel/ti-linux-kernel/commits/ti-linux-3.8.y TI Linux 3.8] ([https://github.com/RobertCNelson/ti-linux-kernel/commits/ti-linux-3.8.y/ mirror]) seems to be the last version that still included support for ABE, as well as the OMAP5-sEVM. See [https://github.com/RobertCNelson/ti-linux-kernel/tree/ti-linux-3.8.y/sound/soc/omap/aess sound/soc/omap/aess] in particular.

Revision as of 08:57, 27 March 2017

This article is a stub and needs expanding.

Overview

ABE is part of omap4 (all variants) and omap5, and does not appear to have changed in any major way since its introduction.

ABE components (targets on ABE interconnect):

  • external interfaces:
    • custom interface (mcpdm) to TWL6040/TWL6041 audio IC
    • digital microphone controller (dmic)
    • digital audio interfaces (mcbsp1-3, mcasp)
    • mipi slimbus interface (slimbus1), defeatured on omap5
  • four timers (gptimer5-8) with external trigger input / pwm output.
  • watchdog (wdt3)
  • audio engine subsystem (aess)

Initiators to the ABE interconnect:

  • audio engine subsystem (local initiator) embeds dedicated dma controller (audio transfer controller) for local transfers between ABE components
  • L3 interconnect
  • Cortex-A15 subsystem (mpuss) via private dedicated link
  • Tesla DSP subsystem (including EDMA) via private dedicated link

The private links from mpuss and dspss are intended for use in low-power scenarios, to avoid waking up the entire L3 interconnect. Note that the audio transfer controller (atc) cannot reach outside ABE. DMA to/from memory is handled by the system dma controller (sdma) via the L3 interconnect.

Audio Engine Subsystem

The AE is the core of the ABE subsystem. It performs the real-time audio processing within the ABE: mixing, muxing, volume control, smooth muting, sampling rate conversion, and side-tone equalization.

Custom dedicated DSP (unrelated to the Tesla DSP) for audio processing.

Embeds local memories:

  • DMEM: 64 KB data memory
  • CMEM: 6 KB coefficient memory
  • SMEM: 18 KB sample memory
  • PMEM: 8 KB program memory

Audio traffic controller (ATC)

  • performs local DMA (within ABE)
  • generates interrupt requests to cortex-a15 and tesla DSP
  • generates requests to sDMA (system dma controller) and EDMA (Tesla subsystem DMA controller)

AE is considered to be fixed-function by TI, only supports a one-time firmware upload after cold boot. Unknown 32-bit instruction set. Helpfully, three slightly different versions of the firmware are provided, which made it easy identify branch-like instructions. Histogram of instructions across all three firmwares.

Documentation / Resources