È stata pubblicata la versione 2.2 del progetto Sound Open Firmware (SOF), originariamente creato da Intel per allontanarsi dalla pratica di fornire firmware chiusi per i chip DSP legati all'elaborazione audio. In seguito, il progetto è stato trasferito sotto l'ala della Linux Foundation ed è ora sviluppato con il coinvolgimento della comunità e della partecipazione di aziende come AMD, Google e NXP. Il progetto sta sviluppando un SDK per semplificare lo sviluppo di firmware, un driver audio per il kernel Linux e un insieme di firmware pronti per diversi chip DSP, per i quali vengono anche create le versioni binarie firmate digitalmente. Il codice del firmware è scritto in linguaggio C con inserimenti in assembly e distribuito sotto la licenza BSD.
Grazie alla sua struttura modulare, Sound Open Firmware può essere portato su diverse architetture DSP e piattaforme hardware. Ad esempio, tra le piattaforme supportate figurano vari chip Intel (Broadwell, Icelake, Tigerlake, Alderlake, ecc.), Mediatek (mt8195), NXP (i.MX8*) e AMD (Renoir), dotati di DSP basati su architetture Xtensa HiFi 2, 3 e 4. Durante il processo di sviluppo, può essere utilizzato un emulatore speciale o QEMU. L'uso di firmware open source per DSP consente di risolvere e diagnosticare rapidamente i problemi del firmware, oltre a offrire agli utenti la possibilità di adattare il firmware alle proprie esigenze, apportare ottimizzazioni specifiche e creare versioni leggere del firmware che contengano solo le funzionalità necessarie al prodotto.
Il progetto fornisce un framework per lo sviluppo, l'ottimizzazione e il collaudo di soluzioni legate all'elaborazione audio, oltre alla creazione di driver e software per interagire con DSP. Comprende implementazioni di firmware, strumenti per il collaudo del firmware, utility per la conversione di file ELF in immagini di firmware pronte per l'installazione sull'hardware, strumenti di debug, un emulatore DSP, un emulatore della piattaforma host (basato su QEMU), strumenti per la tracciatura del firmware, script in MATLAB/Octave per la messa a punto dei coefficienti per i componenti audio, applicazioni per la gestione dell'interazione e dello scambio dati con il firmware, e esempi pronti di topologie per l'elaborazione audio.


Il progetto sta sviluppando anche un driver universale che può essere utilizzato con i dispositivi che impiegano firmware basati su Sound Open Firmware. Il driver è già incluso nel kernel Linux a partire dalla versione 5.2 e viene fornito con una doppia licenza — BSD e GPLv2. Il driver è responsabile del caricamento del firmware nella memoria DSP, del caricamento delle topologie audio nel DSP, dell'organizzazione del funzionamento del dispositivo audio (gestisce le chiamate alle funzioni DSP dalle applicazioni) e fornisce punti di accesso per le applicazioni ai dati audio. Inoltre, il driver fornisce un meccanismo IPC per l'interazione tra il sistema host e il DSP, e un livello per accedere alle capacità hardware del DSP attraverso un'API standard. Il DSP con firmware Sound Open Firmware appare per le applicazioni come un comune dispositivo ALSA, il cui controllo può avvenire tramite l'interfaccia software standard.

Novità principali in Sound Open Firmware 2.2:
- Il componente per l'interazione con le librerie esterne dei codec è stato rinominato da codec_adapter a module_adapter ed è stato adattato all'API dei moduli di elaborazione dei segnali, il che consentirà di utilizzare il codice degli handler Windows senza modificarlo.
- API Frag dichiarato obsoleto, la quale eliminazione ha permesso di aumentare le prestazioni di ogni componente di circa 1 MCPS (milioni di cicli al secondo).
- Aggiunta l'API Frame, che esegue il calcolo predittivo delle dimensioni dei blocchi per gli handler basati su istruzioni SIMD e non. L'ottimizzazione ha permesso di aumentare le prestazioni di circa 0.25 MCPS.
- Aggiunto un nuovo modulo di mixing con supporto HiFi4 per ridurre o aumentare il numero di canali audio nel flusso.
- Ampliate le possibilità di utilizzo come base del firmware dell'ambiente Zephyr RTOS invece di XTOS. L'adozione di Zephyr consente di semplificare e ridurre notevolmente il codice delle applicazioni Sound Open Firmware. Nella nuova versione è stato aggiunto il supporto per le API native di Zephyr per la registrazione dei log e l'introduzione di ritardi. Nella prossima versione è prevista l'integrazione completa del supporto per Zephyr.
- Espanso l'uso del protocollo IPC4 per catturare e riprodurre audio su dispositivi con sistema operativo Windows (il supporto IPC4 consente a Windows di interagire con i DSP basati su Sound Open Firmware senza un driver specifico).
Fonte: opennet.ru
