Die Version 2.2 des Sound Open Firmware-Projekts (SOF) wurde veröffentlicht. Dieses ursprünglich von Intel ins Leben gerufene Projekt zielt darauf ab, die Bereitstellung proprietärer Firmware für DSP-Chips im Bereich der Audiobearbeitung zu beenden. Später wurde das Projekt unter die Schirmherrschaft der Linux Foundation übertragen und wird nun mit Unterstützung der Community sowie von Unternehmen wie AMD, Google und NXP weiterentwickelt. Es entstehen ein SDK zur Vereinfachung der Firmware-Entwicklung, ein Soundtreiber für den Linux-Kernel und eine Sammlung fertiger Firmwares für verschiedene DSP-Chips, für die unter anderem binäre Builds mit digitaler Signatur bereitgestellt werden. Der Code der Firmwares ist in C mit Assembler-Einspritzungen geschrieben und unter der BSD-Lizenz veröffentlicht.
Dank der modularen Struktur kann Sound Open Firmware auf verschiedene DSP-Architekturen und Hardware-Plattformen portiert werden. Beispielsweise sind verschiedene Intel-Chips (Broadwell, Icelake, Tigerlake, Alderlake usw.), Mediatek (mt8195), NXP (i.MX8*) und AMD (Renoir) als unterstützte Plattformen gelistet, ausgestattet mit DSPs auf Basis der Xtensa HiFi 2, 3 und 4 Architektur. Während der Entwicklung kann ein spezieller Emulator oder QEMU verwendet werden. Der Einsatz von Open-Source-Firmwares für DSP ermöglicht eine schnellere Behebung und Diagnose von Firmware-Problemen und bietet den Nutzern die Möglichkeit, die Firmwares an ihre Bedürfnisse anzupassen, spezifische Optimierungen vorzunehmen und schlanke Versionen von Firmwares zu erstellen, die nur die im Produkt benötigte Funktionalität enthalten.
Das Projekt stellt ein Framework für die Entwicklung, Optimierung und das Testing von Lösungen zur Audiobearbeitung bereit, sowie für die Erstellung von Treibern und Anwendungen zur Interaktion mit DSP. Es umfasst Implementierungen von Firmwares, Werkzeuge zum Testen von Firmwares, Utilities zur Umwandlung von ELF-Dateien in Firmware-Images, die für die Installation auf Hardware geeignet sind, Debugging-Tools, einen DSP-Emulator, einen Host-Plattform-Emulator (basierend auf QEMU), Tools zur Firmware-Trace, Skripte in MATLAB/Octave zur Feinabstimmung von Koeffizienten für Audiokomponenten, Anwendungen zur Organisation der Interaktion und des Datenaustausches mit der Firmware sowie fertige Beispiele von Audiobearbeitungstopologien.


Das Projekt entwickelt auch einen universellen Treiber, der mit Geräten verwendet werden kann, die Firmware auf Basis von Sound Open Firmware verwenden. Der Treiber ist bereits Bestandteil des Hauptkerns von Linux seit Version 5.2 und wird unter einer dualen Lizenz – BSD und GPLv2 – bereitgestellt. Der Treiber ist verantwortlich für das Laden der Firmware in den Speicher des DSP, das Laden von Audiotopologien in den DSP, die Organisation des Betriebs des Audiogeräts (verantwortlich für den Zugriff auf die DSP-Funktionen durch Anwendungen) und die Bereitstellung von Zugriffsstellen für Anwendungen auf die Audiodaten. Der Treiber bietet auch einen IPC-Mechanismus für die Interaktion zwischen dem Host-System und dem DSP sowie eine Schicht für den Zugriff auf die Hardwarefähigkeiten des DSP über eine standardisierte API. Der DSP mit Sound Open Firmware-Firmware erscheint für die Anwendungen wie ein übliches ALSA-Gerät, dessen Verwaltung über die Standard-Programmierschnittstelle erfolgt.

Wesentliche Neuerungen in Sound Open Firmware 2.2:
- Die Komponente zur Zusammenarbeit mit externen Codec-Bibliotheken wurde von codec_adapter in module_adapter umbenannt und an die API der Signalverarbeitungs-Module angepasst, was es ermöglicht, Code aus Windows-Handlern ohne Änderungen zu verwenden.
- Die API Frag wurde als veraltet erklärt, was den Verzicht darauf ermöglichte, die Leistung jeder Komponente um etwa 1 MCPS (Millionen Takte pro Sekunde) zu steigern.
- Eine neue API Frame wurde hinzugefügt, die eine vorausschauende Berechnung der Blockgrößen für Handler auf Basis von SIMD-Instruktionen und ohne diese durchführt. Die Optimierung ermöglichte eine Leistungssteigerung von etwa 0,25 MCPS.
- Ein neues Mischmodul mit Unterstützung für HiFi4 wurde hinzugefügt, um die Anzahl der Audiokanäle im Stream zu reduzieren oder zu erhöhen.
- Die Möglichkeiten zur Nutzung der Zephyr RTOS-Umgebung als Firmware-Basis anstelle von XTOS wurden erweitert. Die Verwendung von Zephyr ermöglicht eine erhebliche Vereinfachung und Verkürzung des Codes der Anwendungen von Sound Open Firmware. In der neuen Version wurde Unterstützung für die Zephyr-eigenen APIs zur Protokollierung und zum Setzen von Verzögerungen hinzugefügt. In der nächsten Version wird eine vollständige integrierte Unterstützung für Zephyr erwartet.
- Die Verwendung des IPC4-Protokolls für die Erfassung und Wiedergabe von Audio auf Geräten mit Windows-Betriebssystem wurde erweitert (die Unterstützung von IPC4 ermöglicht es, aus Windows mit DSP auf der Grundlage von Sound Open Firmware-Firmware zu interagieren, ohne einen spezifischen Treiber zu verwenden).
Quelle: opennet.ru
