Se ha publicado la versión 2.2 del proyecto Sound Open Firmware (SOF), originalmente creado por Intel para alejarse de la práctica de suministrar firmware cerrado para chips DSP relacionados con el procesamiento de audio. Posteriormente, el proyecto fuetransferido a la organización Linux Foundation y ahora se desarrolla con la colaboración de la comunidad y la participación de empresas como AMD, Google y NXP. El proyecto incluye un SDK para simplificar el desarrollo de firmware, un controlador de audio para el núcleo de Linux y un conjunto de firmware listos para diversos chips DSP, para los cuales también se generan compilaciones binarias firmadas digitalmente. El código del firmware está escrito en C con inserciones en ensamblador y se distribuye bajo la licencia BSD.
Gracias a su estructura modular, el Sound Open Firmware puede ser portado a diversas arquitecturas DSP y plataformas de hardware. Por ejemplo, entre las plataformas compatibles se incluye soporte para varios chips de Intel (Broadwell, Icelake, Tigerlake, Alderlake, etc.), Mediatek (mt8195), NXP (i.MX8*) y AMD (Renoir), equipados con DSP basados en las arquitecturas Xtensa HiFi 2, 3 y 4. Durante el proceso de desarrollo, se puede utilizar un emulador especial o QEMU. El uso de firmware abierto para DSP permite diagnosticar y corregir problemas en el firmware de manera más ágil, y también brinda a los usuarios la posibilidad de adaptar el firmware a sus necesidades, realizar optimizaciones específicas y crear versiones livianas del firmware que contengan solo las funcionalidades necesarias en el producto.
El proyecto ofrece un marco para el desarrollo, optimización y prueba de soluciones relacionadas con el procesamiento de audio, así como para la creación de controladores y programas para interactuar con los DSP. Incluye implementaciones de firmware, herramientas para probar el firmware, utilidades para convertir archivos ELF en imágenes de firmware adecuadas para instalar en hardware, herramientas de depuración, un emulador DSP, un emulador de plataforma anfitriona (basado en QEMU), herramientas para la trazabilidad del firmware, scripts en MATLAB/Octave para afinar coeficientes para componentes de audio, aplicaciones para organizar la interacción y el intercambio de datos con el firmware, y ejemplos listos de topologías de procesamiento de audio.


El proyecto también está desarrollando un controlador universal que se puede utilizar con dispositivos que utilizan firmware basado en Sound Open Firmware. El controlador ya forma parte del núcleo de Linux desde la versión 5.2 y se ofrece bajo una doble licencia: BSD y GPLv2. El controlador se encarga de cargar el firmware en la memoria del DSP, cargar las topologías de sonido en el DSP, organizar el funcionamiento del dispositivo de sonido (responsable de acceder a las funciones del DSP desde las aplicaciones) y proporcionar puntos de acceso a las aplicaciones a los datos de audio. El controlador también proporciona un mecanismo IPC para la interacción entre el sistema host y el DSP, y una capa para acceder a las capacidades de hardware del DSP mediante una API estándar. Un DSP con firmware de Sound Open Firmware se presenta para las aplicaciones como un dispositivo ALSA común, cuyo control se puede realizar utilizando la interfaz de programación estándar.

Las principales innovaciones en Sound Open Firmware 2.2:
- El componente para trabajar con bibliotecas de códecs externos ha sido renombrado de codec_adapter a module_adapter y alineado con la API de módulos de procesamiento de señales, lo que permitirá utilizar código de controladores de Windows sin modificaciones.
- Se ha declarado obsoleta la API Frag, cuya eliminación ha permitido mejorar el rendimiento de cada componente en aproximadamente 1 MCPS (millones de ciclos por segundo).
- Se ha añadido una API Frame que realiza cálculos anticipados de los tamaños de los bloques para controladores basados en instrucciones SIMD y no SIMD. Esta optimización ha permitido aumentar el rendimiento en aproximadamente 0.25 MCPS.
- Se ha añadido un nuevo módulo de mezcla con soporte HiFi4 para reducir o aumentar el número de canales de sonido en el flujo.
- Se han ampliado las capacidades de utilizar como base el firmware del entorno Zephyr RTOS en lugar de XTOS. La aplicación de Zephyr permite simplificar y reducir significativamente el código de las aplicaciones de Sound Open Firmware. La nueva versión incluye soporte nativo para la API de Zephyr para el registro de logs y la introducción de retardos. En la próxima versión se espera soporte completamente integrado para Zephyr.
- Se han ampliado las capacidades del protocolo IPC4 para la captura y reproducción de sonido en dispositivos con el sistema operativo Windows (el soporte de IPC4 permite que desde Windows se interactúe con el DSP basado en firmware de Sound Open Firmware sin la necesidad de un controlador específico).
Fuente: opennet.ru
