SOF Project
latest
SOF project website
Introduction to the SOF Project
SDK Introduction and Overview
SOF source code, tools, and topologies
Host OS Drivers
Firmware Toolchain
DSP Emulator
General FAQ
Toolchain FAQ
Getting Started Guides
Build SOF
Build SOF from scratch
Build SOF
Build Linux kernel
Build SOF with Docker
Set up the workspace directory
Set up Docker
Build with Docker
Build SOF with a 3rd Party Toolchain
Cadence® Tensilica® Xtensa® C/C++ Compiler (XCC)
Build SOF with Zephyr
Prepare
Check out and build
Run
Set up SOF on hardware
Set up SOF on MinnowBoard Turbot
MinnowBoard resources
Development
Set up SOF on Up Squared board with Hifiberry DAC+ (STD)
Prerequisites
Setup Instructions
Set up a Ktest-based environment
Introduction
Prerequisites on the target device
Configure SSH without password
Create a linux development environment
Debug Audio issues on Intel platforms
Overview of Intel hardware platforms
ACPI platforms (introduced before and up to 2015)
PCI devices (introduced after 2016)
User space and filesystem requirements
Suggestions before filing an SOF bug
Run alsa-info
Disable SOF on PCI/HDaudio devices to test audio playback
Try booting into Windows first, then reboot into Linux
Make sure the ME is enabled
Test at the ALSA ‘hw’ device level
Verify mixer settings
Enable dynamic debug
Install sof-logger
Supported Architectures
Host Architecture
SOF Driver Architecture
Linux Driver
DSP Architecture
Adding a new DSP architecture to SOF
Method 1 - New HAL
Method 2 - Use existing RTOS
Vendor Specific Architecture Information
Intel
Platforms
Supported Platforms
Minimum Platform Requirements
Footprint
DSP Clock Speed
Toolchain
Platform Specific Information
Intel Hifi2-EP Platforms
Intel Merrifield
Intel Baytrail/CherryTrail
Intel Broadwell
Intel CAVS Platforms
CAVS Commons
Intel Apollo Lake
Intel Cannon Lake
Intel Ice Lake
Intel Tiger Lake
Algorithms
Supplied Processing Algorithms
Algorithm Specific Information
Sample Rate Conversion
Introduction
Use of SRC generator tool
Test the SRC component
Polyphase decomposition
References
Multiplexer/Demultiplexer
Introduction
Time Domain Fixed Beamformer (TDFB)
Introduction
Beamformer types
Microphone array geometries
Filter bank design procedure
Design examples
Simulation
Developer Guides
Introduction
SOF Core Concepts
Firmware
Hello World Tutorial
Part I - Adding a Component Code to FW
Part II - Modifying the Topology & Driver
Part III - Adding Run-time Parameter Control
Part IV - Working with Exception Reports
Memory Management
Heap Memory Zones
System Zone
Runtime Zone
Buffer Zone
Shared Data
Power Management
Power Management for DSP Cores
cAVS pm-runtime for DSP core 0
API
Schedulers
Scheduler Registration
Low Latency Scheduler
EDF Scheduler
Drivers
Registering the Devices
Probing on Demand
API
Components
Overview
Managing the Components
Pipelines
Creating a Pipeline
Executing an Operation
Resetting Pipeline
Configuring Audio Parameters & Preparing for Use
Scheduling
Processing
Porting Guides
Architecture Porting Guide
Platform Porting Guide
Keyword detection
Keyword Detection integration
CMake Arguments
Firmware & Unit Tests
Firmware
Unit Tests
Host Testbench
Unit Tests
Prerequisites
Configuring for unit tests
Example: Running tests for APL
Wrapping objects for unit tests
Notes
Xtensa Simulator (xt-run)
Prerequisites
Standalone programs
Unit tests
SOF Topology
1. Topology Ingredients
1.1 Widgets
1.2 Tokens/Vendor Tuples
1.3 Kcontrols
1.4 Pipelines
1.5 Backend DAI
1.6 Backend DAI link Config
1.7 DSP Core Index
2. Create a new topology
2.1 Example topology with single pipeline
2.2 Example topology with multiple pipelines
3. Debug topology
4. Acronyms
UUID Usage in SOF
Why UUIDs
UUID allocation
UUID in topology
Linux topology driver
UUID arrays stored section
UUID to component driver mapping
ABI alignment for UUID support
Debugability
Traces
Building & Processing Traces
Enabling Traces
Adding Traces
Logger
Logger usage
Trace filtering
Coredump-reader
Coredump-reader usage
Probes
Requirements
Enabling Probes
Data extraction
Data parsing
sof-ri-info
Examples
Runtime Tuning
Find out effect numids
Example equalizer settings
Help
Rimage
Extended Manifest
Build flow
Add a new element
Build flow
SOF Linux Driver
SOF Driver Architecture
Overview
Driver Probe
SOF Platform Driver
IPC Processing
PCM Driver
Power Management
Intel Drivers
Support for High Definition Audio (HD-Audio)
Kernel Configuration/Kconfig
Debug Options
Third Party Features User Guides
Keyword Detection Driver Implementation and User Guide
SOF VirtIO design
General information
SOF VirtIO design
Communication channels
Topology
DPCM audio routing
Implementation
Initialization
Streaming
Deactivation
Run SOF VirtIO
General information
1. Create a VM image
2. Build the Linux kernel
3. Build QEMU
4. Build the SOF firmware
5. Run QEMU
Fuzzing
Fuzzing in Docker
Instructions
Important notes
Build a Fuzzing Testbench with AFL
Install AFL
Build a testbench with AFL instrumentation
Run AFL
Example
Testbench
Build and Run Testbench
host-testbench.sh
Debug Component in Testbench
GDB and DDD
Valgrind
Gprof
Prepare a New Component for Testbench
Test Audio Quality
Technical Notes
Build Cmocka for Xtensa
Cmocka fork
Simple build on Linux
Cross-platform build
Build on Windows 10 with WSL
Prerequisites
Enable 32-bit binaries
Fix stat in 32-bit binaries
Compile
Release
Firmware and Tools
Git
Source and Binary Releases
Linux Driver
Contributing to the Project
Contribution Guidelines
Licensing
Developer Certification of Origin (DCO)
DCO Sign-Off Methods
Prerequisites
Documentation Guidelines
Headings
Content Highlighting
Lists
Multi-column lists
File names and Commands
Internal Cross-Reference Linking
Non-ASCII Characters
Code and Command Examples
Tabs, spaces, and indenting
Documenting the Source Code
Basic Rules
Examples
Bug Tracking
Life Cycle of a Bug
Labels
Solution Labels
Priority Labels
Plaform and Branch Labels
Other optional Labels
How to Report a Bug
How to Close a Bug
SOF Documentation Generation
Documentation overview
Set up documentation working folders
Install documentation tools
Documentation presentation theme
Run documentation processors
Publish content
Installation troubleshooting
Windows troubleshooting
Diagram compilation troubleshooting
SOF ABI Change Process
SOF ABI definitions
Change process
Document modified fields
ABI change approvers
TSC
SOF driver
Linux SOF drivers
Background
Instructions for SOF developers
ABI changes
Development branch
Rebasing tree
Upstream merges
Development flow
SOF Linux maintainers
SOF maintainers process
Development summary
Technical Steering Committee (TSC)
TSC Representatives
TSC Meetings
SOF admin, maintainers and code owners
SOF admin
Merge rights
SOF code owners
API Documentation
UUID API
DMA Drivers API
DAI Drivers API
PM Runtime API
Platform API
Memory Allocation API
Audio Stream API
Component API
Component API Ext
uAPI
Presentations
SOF Mentions
SOF Project
»
Platforms
»
Intel CAVS Platforms
»
Intel Tiger Lake
Intel Tiger Lake
¶
The Intel Tiger Lake (TGL) platform is built on cAVS 2.5 HW and uses Xtensa DSP architecture.
TGL Memory
TGL Configuration