Доступен Sound Open Firmware 2.2, набор открытых прошивок к DSP-чипам

Опубликован выпуск проекта Sound Open Firmware 2.2 (SOF), изначально созданного компанией Intel для ухода от практики поставки закрытых прошивок для DSP-чипов, связанных с обработкой звука. Впоследствии проект был переведён под крыло организации Linux Foundation и теперь разрабатывается с привлечением сообщества и при участии компаний AMD, Google и NXP. Проектом развивается SDK для упрощения разработки прошивок, звуковой драйвер для ядра Linux и набор готовых прошивок для различных DSP-чипов, для которых в том числе формируются бинарные сборки, заверенные цифровой подписью. Код прошивок написан на языке Си с ассемблерными вставками и распространяется под лицензией BSD.

Благодаря модульной структуре Sound Open Firmware может быть портирован на различные архитектуры DSP и аппаратные платформы. Например, среди поддерживаемых платформ заявлена поддержка различных чипов Intel (Broadwell, Icelake, Tigerlake, Alderlake и т.п.), Mediatek (mt8195), NXP (i.MX8*) и AMD (Renoir),
комплектуемых DSP на базе архитектур Xtensa HiFi 2, 3 и 4. В процессе разработки может применяться специальный эмулятор или QEMU. Использование открытых прошивок для DSP позволяет более оперативно исправлять и диагностировать проблемы в прошивке, а также даёт пользователям возможность самостоятельно адаптировать прошивки для своих нужд, вносить специфичные оптимизации и создавать легковесные варианты прошивок, содержащие только необходимую в продукте функциональность.

Проектом предоставляется фреймворк для разработки, оптимизации и тестирования решений, связанных с обработкой звука, а также с созданием драйверов и программ для взаимодействия с DSP. В состав входят реализации прошивок, инструментарий для тестирования прошивок, утилиты для преобразования ELF-файлов в образы прошивок, пригодные для установки на оборудование, отладочные инструменты, эмулятор DSP, эмулятор хост-платформы (на базе QEMU), инструменты для трассировки прошивок, скрипты на MATLAB/Octave для тонкой настройки коэффициентов для звуковых компонентов, приложения для организации взаимодействия и обмена данными с прошивкой, готовые примеры топологий обработки звука.




Проектом также развивается универсальный драйвер, который может применяться с устройствами, использующими прошивки на базе Sound Open Firmware. Драйвер уже входит в основной состав ядра Linux, начиная с выпуска 5.2, и поставляется под двойной лицензией – BSD и GPLv2. Драйвер отвечает за загрузку прошивки в память DSP, загрузку звуковых топологий в DSP, организацию работы звукового устройства (отвечает за обращение к функциям DSP из приложений) и предоставление точек доступа приложений к звуковым данным. Драйвер также предоставляет механизм IPC для взаимодействия между хост-системой и DSP, и слой для обращения к аппаратным возможностям DSP через типовой API. DSP c прошивкой Sound Open Firmware выглядит для приложений как обычное устройство ALSA, для управления которым можно использовать штатный программный интерфейс.


Ключевые новшества в Sound Open Firmware 2.2:

  • Компонент для работы с внешними библиотеками кодеков переименован из codec_adapter в module_adapter и приведён к соответствию API модулей обработки сигналов, что позволит использовать код из Windows-обработчиков без его изменения.
  • Объявлен устаревшим API Frag, отказ от которого позволил повысить производительность каждого компонента примерно на 1 MCPS (миллион тактов в секунду).
  • Добавлен API Frame, выполняющий упреждающее вычисление размеров блоков для обработчиков на базе инструкций SIMD и без них. Оптимизация позволила увеличить производительность примерно на 0.25 MCPS.
  • Добавлен новый модуль смешивания с поддержкой HiFi4 для сокращения или увеличения числа звуковых каналов в потоке.
  • Расширены возможности использования в качестве основы прошивки окружения Zephyr RTOS вместо XTOS. Применение Zephyr позволяет значительно упростить и сократить код приложений Sound Open Firmware. В новой версии добавлена поддержка родных для Zephyr API для ведения логов и внесения задержек.
    В следующем выпуске ожидается полная встроенная поддержка Zephyr.
  • Расширена возможность использования протокола IPC4 для захвата и воспроизведения звука на устройствах с ОС Windows (поддержка IPC4 позволяет из Windows взаимодействовать с DSP на базе прошивок Sound Open Firmware без применения специфичного драйвера).

Release. Ссылка here.