ALSA, ASoC and SOF
ALSA (Advanced Linux Sound Architecture) is a general-purpose audio framework that provides a unified interface for accessing audio hardware. It is used by a wide range of applications, including media players, games, and recording software.
ALSA provides audio and MIDI functionality to the Linux operating system. ASoC (ALSA System-on-Chip) is a subsystem of ALSA. ASoC provides a modular architecture to share audio codec drivers across different SoC implementations, unify the controls provided to applications, and provide a common infrastructure to manage SoC audio component power and clocks.
Fig.1：Audio Driver Architecture
SOF (Sound Open Firmware) is an open source audio Digital Signal Processing (DSP) firmware infrastructure and SDK. SOF provides infrastructure, real-time control pieces, and audio drivers. A generic SOF subsystem is implemented in Linux as a subsystem of ALSA ASoC.
Fig.2：Native Audio SOF Driver
- ASoC machine driver: a glue driver to integrate codec, platform and DAIs.
- ASoC PCM Driver: an abstract layer for PCM data processing and PCM stream control.
- Generic IPC Driver: the communication channel with DSP.
- DSP Platform Driver : platform specific handing. Something like quirk.
Monolithic Hypervisors, such as KVM, are typically built on top of general-purpose monolithic operating systems, such as Linux. They provide hardware access to the host and CPU virtualization in the kernel, and they rely on user-space software, such as QEMU, to emulate guest I/O in the host OS.
Fig.3：Monolithic Hypervisor Based Audio Virtualization Architecture
Micro-kernelized Hypervisors, such as Xen and ACRN, are typically lightweight microkernels that provide basic hardware access to the host and CPU virtualization in the kernel. They rely on a management guest, such as Xen’s Dom0 and ACRN’s Service OS, to provide the rest of the functionality, such as complete hardware access, a management interface, and guest I/O emulation.
Following is a reference micro-kernelized hypervisor based audio virtualization solution for automotive cases.
Fig.4：Micro-kernelized Hypervisor Based Audio Virtualization Architecture
- Coordinated stream management among audio application in different Guests.
- Audio application in Service OS has the highest privilege level (e.g. Phone calls over audio playback).
- Virtio based platform-agnostic audio drivers.
- Put the backend in Service OS kernel side for better performance. Zero-copy is required.
- Physical audio device is assigned to Service OS by using pass-through techology.