Audio Back End

From Pyra Wiki
Jump to: navigation, search

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.

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 between ABE and ddr3 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