Die Ausgabe des Projekts Sound Open Firmware 2.2 (SOF) wurde veröffentlicht. Dieses Projekt wurde ursprünglich von Intel ins Leben gerufen, um von der Praxis der Bereitstellung geschlossener Firmware für DSP-Chips, die mit Audiobearbeitung verbunden sind, abzurücken. Später wurde das Projekt unter die Organisation Linux Foundation gestellt und wird nun mit Beteiligung der Community sowie Unternehmen wie AMD, Google und NXP weiterentwickelt. Im Rahmen des Projekts wird ein SDK entwickelt, um die Entwicklung von Firmware zu erleichtern, sowie ein Audiotreiber für den Linux-Kernel und eine Sammlung von vorgefertigten Firmwares für verschiedene DSP-Chips, für die auch digitale, signierte Binary-Builds erstellt werden. Der Code der Firmwares ist in C mit Assembly-Einfügungen geschrieben und wird unter einer BSD-Lizenz verbreitet.
Dank seiner modularen Struktur kann das Sound Open Firmware auf verschiedene DSP-Architekturen und Hardware-Plattformen portiert werden. Unterstützt werden beispielsweise verschiedene Intel-Chips (Broadwell, Icelake, Tigerlake, Alderlake usw.), Mediatek (mt8195), NXP (i.MX8*) und AMD (Renoir), die mit DSPs auf Basis der Xtensa HiFi 2, 3 und 4-Architekturen ausgestattet sind. Während der Entwicklung kann ein spezieller Emulator oder QEMU zum Einsatz kommen. Der Einsatz von Open-Source-Firmware für DSPs ermöglicht eine schnellere Fehlerbehebung und Diagnose von Firmware-Problemen und gibt den Nutzern die Möglichkeit, die Firmware nach ihren Anforderungen anzupassen, spezifische Optimierungen vorzunehmen und leichtgewichtige Firmware-Varianten zu erstellen, die nur die notwendige Funktionalität des Produkts enthalten.
Das Projekt stellt ein Framework zur Verfügung, das die Entwicklung, Optimierung und das Testen von Lösungen im Bereich der Audioverarbeitung unterstützt. Dazu gehört die Erstellung von Treibern und Software zur Interaktion mit DSPs. Enthalten sind Implementierungen von Firmware, Testtools für Firmware, Utilities zur Konvertierung von ELF-Dateien in installierbare Firmware-Images, Debugging-Tools, ein DSP-Emulator, ein Emulator für Host-Plattformen (basierend auf QEMU), Tools zur Firmware-Trace sowie MATLAB/Octave-Skripte für die Feinabstimmung von Koeffizienten für Audio-Komponenten. Des Weiteren werden Anwendungen zur Organisation der Interaktion und zum Datenaustausch mit der Firmware bereitgestellt sowie fertige Beispiele für Audioverarbeitungstopologien.


Das Projekt entwickelt auch einen universellen Treiber, der mit Geräten verwendet werden kann, die auf Sound Open Firmware basierende Firmware nutzen. Der Treiber ist bereits ab der Linux-Kernel-Version 5.2 Teil des Hauptkerns und wird unter dualer Lizenz — BSD und GPLv2 — angeboten. Der Treiber ist verantwortlich für das Laden der Firmware in den DSP-Speicher, das Laden von Klangtopologien in den DSP, die Organisation des Betriebs des Audiogeräts (er kümmert sich um den Zugriff auf die DSP-Funktionen aus Anwendungen) sowie die Bereitstellung von Zugriffspunkten für Anwendungen auf Audiodaten. Zudem bietet der Treiber 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. DSP mit Sound Open Firmware Firmware sieht für Anwendungen wie ein gewöhnliches ALSA-Gerät aus, das mit der üblichen Software-Schnittstelle gesteuert werden kann.

Wesentliche Neuerungen in Sound Open Firmware 2.2:
- Die Komponente zur Arbeit mit externen Codec-Bibliotheken wurde von codec_adapter in module_adapter umbenannt und an die API der Signalverarbeitungsmodulen angepasst, was die Nutzung von Code aus Windows-Handlern ohne Änderungen ermöglicht.
- Die veraltete Frag-API wurde deklariert, was zur Steigerung der Leistung jedes Komponenten um etwa 1 MCPS (Millionen Zyklen pro Sekunde) geführt hat.
- Eine neue Frame-API wurde hinzugefügt, die vorhersagende Berechnungen der Blockgrößen für SIMD-basierte und nicht SIMD-basierte Handler durchführt. Diese Optimierung hat die Leistung um etwa 0,25 MCPS erhöht.
- Ein neues Mischmodul mit HiFi4-Unterstützung wurde hinzugefügt, um die Anzahl der Audio-Kanäle im Stream zu reduzieren oder zu erhöhen.
- Die Möglichkeiten zur Nutzung von Zephyr RTOS als Firmware-Grundlage anstelle von XTOS wurden erweitert. Der Einsatz von Zephyr vereinfacht und verkürzt den Code von Sound Open Firmware-Anwendungen erheblich. In dieser neuen Version wurde die Unterstützung für Zephyr-eigene APIs zur Protokollierung und für Verzögerungen hinzugefügt. Im nächsten Release wird eine vollständige integrierte Unterstützung für Zephyr erwartet.
- Die Verwendung des IPC4-Protokolls zur Aufnahme und Wiedergabe von Audio auf Windows-Geräten wurde erweitert (die Unterstützung von IPC4 ermöglicht es Windows, ohne spezifischen Treiber mit DSPs, die auf Sound Open Firmware basieren, zu interagieren).
Quelle: opennet.ru
