AWE-Q: AWE on Snapdragon Bare Metal User Guide
Notice: Pre-Release Documentation
This document is part of a prerelease and is currently a work in progress. Some content may be incomplete, subject to change, or marked as TBD. We are actively updating this documentation and will continue to provide the most accurate and up-to-date information as development progresses. Thank you for your understanding!
Introduction
This document describes how Audio Weaver has been integrated on the Qualcomm Snapdragon SOC using low-level APIs. It bypasses Audio Reach and provides significant performance improvements. This document should be used in conjunction with the generic description of the Audio Weaver architecture described in Audio-Weaver--Architecture. The overall design is flexible enough to handle all automotive use cases and configurations. You should be able to fully engineer your automotive audio system using Audio Weaver without having to write custom Hexagon code. (Unless, of course, you want to write your own custom modules that execute on the Hexagon).
The platform specific code needed to wrap Audio Weaver is referred to as the Board Support Package (BSP). We will use the term BSP throughout this document to describe this code. The BSP code is based on Qualcomm low-level AudioLite APIs. This is a low-level software layer which provides an RTOS, TDM port I/O, and basic system features.
The document covers integrations on the Gen4 SA8255 and the Gen5 SA8397 / SA8797 “Nordy” chipsets. The integrations are very similar and when they diverge, we will separately document each integration.
Platform Features
Graphical development
Multicore support - distribute audio processing across all Hexagon DSPs and the Arm.
Unified signal flow showing an overall view of all cores and threads
Integrated profiling. Per core, per thread, and per module.
Highly optimized Hexagon and Arm NEON code. Gen5 includes HVX support providing a significant performance uplift.
Access to IP
Over 500 Audio Weaver modules
Qualcomm voice IP
Custom module API
3rd party ecosystem
Real-time audio features
TDM serial port configuration via Audio Weaver modules
Independent TDM ports automatically synchronize to within 1 sample
ALSA I/O configuration via Audio Weaver modules
Low latency - as low as 0.5 msec digital-in to digital-out using a 0.25 msec block size
Early audio within 1.5 seconds
Resynchronizes automatically after CPU overrun
Software integration
BSP configurable via a text initialization file
Run-time control via TinyMix APIs
Text based control API with integrated data type, range, and array bounds checking
Subsystem Restart (SSR) feature reboots DSPs and restarts the Audio Service if there is a critical run-time failure
Asynchronous event handling
Supports low power suspend and wake up
Integrated full-featured Matlab API for scripting and regression testing
Supports all automotive use cases with concurrent operation
TFLM and ONNX support
Fully documented
Online training available
Comparison with Audio Reach
Audio Reach | Audio Weaver |
Developed for power constrained mobile products. Single use case. | Developed for high-performance automotive audio. Multiple concurrent use cases. |
Variable processing load. | Constant / deterministic real-time load |
Must keep cores loaded < 70% | Can load cores to 90% |
Separate AMS framework needed for low latency support. End-to-end digital latency of 3 x block size. | Native low-latency support. End-to-end digital latency of 2 x block size. |
TDM ports aligned within 12 samples | TDM ports aligned within 1 sample |
SysMon does not provide actionable information to fully load the system. | Easy to understand profiling. Per module, per thread, and per core. Show average and peak CPU load. |
Only supports Hexagon DSPs; no Arm. | Supports all cores including Arm. |
QXDM is a poor fit for real-time debugging. | Includes integrated visual debugging tools and legacy QXDM. |
Numerous side effects. Many features can only be supported by Qualcomm. | Architecture is fully documented and information is publicly available. |