La version 2.2 du projet Sound Open Firmware (SOF) a été publiée, initialement créée par Intel pour abandonner la pratique de fournir des firmwares fermés pour les puces DSP liées au traitement audio. Par la suite, le projet a été adopté par la Linux Foundation et est maintenant développé avec la participation de la communauté et des entreprises telles qu'AMD, Google et NXP. Le projet développe un SDK pour faciliter le développement de firmwares, un driver audio pour le noyau Linux et un ensemble de firmwares prêts à l'emploi pour différents DSP, pour lesquels des compilations binaires sont également fournies, signées numériquement. Le code des firmwares est écrit en C avec des insertions en assembleur et est distribué sous la licence BSD.
Grâce à sa structure modulaire, le Sound Open Firmware peut être porté sur différentes architectures DSP et plateformes matérielles. Parmi les plateformes prises en charge, on trouve divers chips Intel (Broadwell, Icelake, Tigerlake, Alderlake, etc.), Mediatek (mt8195), NXP (i.MX8*) et AMD (Renoir), équipés de DSP basés sur les architectures Xtensa HiFi 2, 3 et 4. Un émulateur spécial ou QEMU peut être utilisé pendant le développement. L'utilisation de firmwares ouverts pour DSP permet de corriger et de diagnostiquer plus rapidement les problèmes de firmware, tout en donnant aux utilisateurs la possibilité d'adapter les firmwares à leurs besoins, d'apporter des optimisations spécifiques et de créer des versions allégées de firmwares contenant uniquement les fonctionnalités nécessaires au produit.
Le projet fournit un cadre pour le développement, l'optimisation et le test de solutions liées au traitement audio, ainsi que pour la création de drivers et de programmes d'interaction avec le DSP. Il comprend des implémentations de firmwares, des outils pour tester les firmwares, des utilitaires pour convertir des fichiers ELF en images de firmwares prêtes à être installées sur le matériel, des outils de débogage, un émulateur DSP, un émulateur de plateforme hôte (basé sur QEMU), des outils pour le traçage des firmwares, des scripts MATLAB/Octave pour peaufiner les coefficients des composants audio, des applications pour organiser l'interaction et l'échange de données avec le firmware, ainsi que des exemples de topologies de traitement audio.


Le projet développe également un pilote universel qui peut être utilisé avec des appareils utilisant des firmwares basés sur Sound Open Firmware. Ce pilote est déjà inclus dans le noyau Linux à partir de la version 5.2 et est distribué sous une double licence — BSD et GPLv2. Le pilote est responsable du chargement du firmware en mémoire DSP, du chargement des topologies sonores dans le DSP, de l'organisation du fonctionnement de l'appareil sonore (il gère l'accès aux fonctions DSP à partir des applications) et de la fourniture de points d'accès aux applications pour les données audio. Le pilote offre également un mécanisme IPC pour l'interaction entre le système hôte et le DSP, ainsi qu'une couche d'accès aux capacités matérielles du DSP via une API standard. Un DSP avec un firmware Sound Open Firmware apparaît pour les applications comme un appareil ALSA ordinaire, dont le contrôle peut être effectué via l'interface logicielle standard.

Les nouveautés clés dans Sound Open Firmware 2.2 :
- Le composant pour travailler avec des bibliothèques de codecs externes a été renommé de codec_adapter en module_adapter et a été aligné sur l'API des modules de traitement du signal, ce qui permettra d'utiliser du code issu des gestionnaires Windows sans modification.
- L'API Frag a été déclarée obsolète, son abandon ayant permis d'augmenter la performance de chaque composant d'environ 1 MCPS (million de cycles par seconde).
- Une API Frame a été ajoutée, effectuant le calcul préventif des tailles de blocs pour les gestionnaires basés sur des instructions SIMD et sans. L'optimisation a permis d'augmenter la performance d'environ 0.25 MCPS.
- Un nouveau module de mixage avec support HiFi4 a été ajouté pour réduire ou augmenter le nombre de canaux audio dans le flux.
- Les capacités d'utilisation de l'environnement Zephyr RTOS comme base pour le firmware ont été élargies, au lieu de XTOS. L'utilisation de Zephyr permet de simplifier et de réduire considérablement le code des applications Sound Open Firmware. La nouvelle version a ajouté le support natif de l'API Zephyr pour la journalisation et l'introduction de délais. On attend un support complet de Zephyr dans la prochaine version.
- La possibilité d'utiliser le protocole IPC4 pour capturer et reproduire du son sur des appareils avec Windows a été étendue (le support IPC4 permet depuis Windows d'interagir avec le DSP basé sur le firmware Sound Open Firmware sans avoir besoin de pilote spécifique).
Source : opennet.ru
