Foi lançado o software Sound Open Firmware 2.2 (SOF), originalmente criado pela Intel para abandonar a prática de fornecer firmware fechado para chips DSP relacionados ao processamento de áudio. Posteriormente, o projeto foi transferido para a Linux Foundation e agora está sendo desenvolvido com a contribuição da comunidade e com a participação das empresas AMD, Google e NXP. O projeto desenvolve um SDK para facilitar a criação de firmware, um driver de áudio para o kernel Linux e um conjunto de firmwares prontos para vários chips DSP, para os quais também são criados pacotes binários, assinados digitalmente. O código dos firmwares é escrito em C com inserções em assembly e é distribuído sob a licença BSD.
Graças à estrutura modular, o Sound Open Firmware pode ser portado para várias arquiteturas de DSP e plataformas de hardware. Por exemplo, entre as plataformas suportadas estão vários chips Intel (Broadwell, Icelake, Tigerlake, Alderlake, etc.), Mediatek (mt8195), NXP (i.MX8*) e AMD (Renoir), equipados com DSP baseados nas arquiteturas Xtensa HiFi 2, 3 e 4. Durante o desenvolvimento, pode ser utilizado um emulador especial ou QEMU. O uso de firmwares abertos para DSP permite identificar e corrigir problemas no firmware de forma mais ágil, além de oferecer aos usuários a possibilidade de adaptar o firmware às suas necessidades, realizar otimizações específicas e criar versões leves do firmware, contendo apenas as funcionalidades necessárias para o produto.
O projeto fornece uma estrutura para o desenvolvimento, otimização e teste de soluções relacionadas ao processamento de áudio, bem como para a criação de drivers e programas para interagir com DSP. Inclui implementações de firmwares, ferramentas para testar firmwares, utilitários para converter arquivos ELF em imagens de firmware adequadas para instalação em hardware, ferramentas de depuração, emulador de DSP, emulador de plataforma host (baseado em QEMU), ferramentas para rastreamento de firmwares, scripts em MATLAB/Octave para ajuste fino de coeficientes para componentes de áudio, aplicativos para facilitar a interação e troca de dados com o firmware, e exemplos prontos de topologias de processamento de áudio.


O projeto também está desenvolvendo um driver universal que pode ser utilizado com dispositivos que usam firmwares baseados em Sound Open Firmware. O driver já faz parte do núcleo do Linux a partir da versão 5.2 e é oferecido sob uma licença dupla - BSD e GPLv2. O driver é responsável pelo carregamento do firmware na memória DSP, pelo carregamento de topologias sonoras no DSP, pela organização do funcionamento do dispositivo de áudio (respondendo às funções DSP a partir de aplicativos) e pela disponibilização de pontos de acesso para aplicativos aos dados de áudio. O driver também fornece um mecanismo IPC para interação entre o sistema host e o DSP, e uma camada para acessar as capacidades de hardware do DSP através de uma API típica. O DSP com firmware Sound Open Firmware aparece para os aplicativos como um dispositivo ALSA regular, que pode ser controlado utilizando a interface de programação padrão.

Principais inovações no Sound Open Firmware 2.2:
- O componente para trabalhar com bibliotecas externas de codecs foi renomeado de codec_adapter para module_adapter e foi compatibilizado com a API de módulos de processamento de sinal, permitindo usar código de manipuladores Windows sem modificações.
- A API Frag foi declarada obsoleta, e sua remoção permitiu aumentar o desempenho de cada componente em cerca de 1 MCPS (milhões de ciclos por segundo).
- Foi adicionada a API Frame, que realiza o cálculo preemptivo do tamanho dos blocos para manipuladores baseados em instruções SIMD e não SIMD. A otimização permitiu um aumento no desempenho de aproximadamente 0,25 MCPS.
- Um novo módulo de mistura foi adicionado com suporte a HiFi4 para reduzir ou aumentar o número de canais de áudio em um stream.
- Foram ampliadas as possibilidades de uso do ambiente Zephyr RTOS como base para o firmware em vez do XTOS. A implementação do Zephyr simplifica significativamente o código dos aplicativos Sound Open Firmware. Na nova versão, foi adicionada suporte para APIs nativas do Zephyr para registro de logs e implementação de delays. Uma total compatibilidade do Zephyr é esperada para a próxima versão.
- A capacidade de uso do protocolo IPC4 foi ampliada para captura e reprodução de áudio em dispositivos com sistema operacional Windows (o suporte IPC4 permite que o Windows interaja com DSPs baseados em firmwares Sound Open Firmware sem um driver específico).
Fonte: opennet.ru
