È stato pubblicato il rilascio del progetto Sound Open Firmware 2.2 (SOF), inizialmente creato da Intel per abbandonare la pratica di fornire firmware chiusi per i chip DSP legati all'elaborazione del suono. In seguito, il progetto è stato trasferito sotto l'ala della Linux Foundation e ora viene sviluppato con il coinvolgimento della comunità e con la partecipazione delle aziende AMD, Google e NXP. Il progetto sviluppa un SDK per semplificare lo sviluppo di firmware, un driver audio per il kernel Linux e un insieme di firmware pronti per vari chip DSP, per i quali vengono anche create build binarie firmate digitalmente. Il codice del firmware è scritto in linguaggio C con inserimenti di assembly e distribuito sotto licenza BSD.
Grazie alla struttura modulare, Sound Open Firmware può essere portato su diverse architetture DSP e piattaforme hardware. Ad esempio, tra le piattaforme supportate è dichiarato il supporto per vari chip Intel (Broadwell, Icelake, Tigerlake, Alderlake, ecc.), Mediatek (mt8195), NXP (i.MX8*) e AMD (Renoir), equipaggiati con DSP basati su architetture Xtensa HiFi 2, 3 e 4. Durante lo sviluppo può essere utilizzato un emulatore speciale o QEMU. L'utilizzo di firmware aperti per DSP consente di correggere e diagnosticare rapidamente i problemi nel firmware e offre agli utenti la possibilità di adattare autonomamente i firmware alle loro esigenze, apportare ottimizzazioni specifiche e creare versioni leggere di firmware che contengono solo le funzionalità necessarie nel prodotto.
Il progetto fornisce un framework per lo sviluppo, l'ottimizzazione e il collaudo di soluzioni legate all'elaborazione audio, nonché per la creazione di driver e programmi per interagire con i DSP. Comprende implementazioni di firmware, strumenti per il collaudo del firmware, utilità per convertire file ELF in immagini firmware, adatte per l'installazione su hardware, strumenti di debug, emulatore DSP, emulatore della piattaforma host (basato su QEMU), strumenti per la tracciatura del firmware, script in MATLAB/Octave per la messa a punto fine dei coefficienti per i componenti audio, applicazioni per organizzare l'interazione e lo scambio di dati con il firmware, esempi pronti di topologie per l'elaborazione audio.


Il progetto sviluppa anche un driver universale, che può essere utilizzato con dispositivi che sfruttano firmware basati su Sound Open Firmware. Il driver è già parte integrante del kernel Linux, a partire dalla versione 5.2, e viene fornito con una doppia licenza — BSD e GPLv2. Il driver gestisce il caricamento del firmware nella memoria DSP, il caricamento delle topologie audio nel DSP, l'organizzazione del funzionamento del dispositivo audio (gestisce l'accesso alle funzioni DSP dalle applicazioni) e fornisce punti di accesso delle applicazioni ai dati audio. Inoltre, il driver offre un meccanismo IPC per l'interazione tra il sistema host e il DSP, e un layer per accedere alle capacità hardware del DSP tramite un'API standard. Il DSP con firmware Sound Open Firmware appare per le applicazioni come un normale dispositivo ALSA, che può essere controllato tramite l'interfaccia software predefinita.

Novità chiave in Sound Open Firmware 2.2:
- Il componente per l'interazione con librerie esterne di codec è stato rinominato da codec_adapter a module_adapter e allineato all'API dei moduli di elaborazione del segnale, permettendo l'uso del codice degli elaboratori Windows senza modificarlo.
- L'API Frag è stata dichiarata obsoleta, la cui eliminazione ha consentito di migliorare le prestazioni di ogni componente di circa 1 MCPS (milioni di cicli al secondo).
- È stata aggiunta l'API Frame, che esegue il calcolo anticipato delle dimensioni dei blocchi per gli elaboratori basati su istruzioni SIMD e non. L'ottimizzazione ha permesso di aumentare le prestazioni di circa 0,25 MCPS.
- È stato aggiunto un nuovo modulo di mixing con supporto per HiFi4 per ridurre o aumentare il numero di canali audio nel flusso.
- Ampliate le possibilità di utilizzo come base firmware per l'ambiente Zephyr RTOS anziché XTOS. L'uso di Zephyr consente di semplificare e ridurre significativamente il codice delle applicazioni Sound Open Firmware. Nella nuova versione è stato aggiunto il supporto nativo per Zephyr per la registrazione di log e l'introduzione di ritardi. Nel prossimo rilascio si prevede il supporto integrato completo di Zephyr.
- Sono ampliate le possibilità di utilizzo del protocollo IPC4 per la cattura e la riproduzione audio su dispositivi con sistema operativo Windows (il supporto IPC4 consente di interagire da Windows con i DSP basati su Sound Open Firmware senza utilizzare un driver specifico).
Fonte: opennet.ru
