18.01.2022

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

Опубликован выпуск проекта Sound Open Firmware 2.0 (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.0:

  • Значительно повышена производительность функций копирования звуковых данных и сокращено число операций обращения к памяти. В некоторых сценариях обработки звука наблюдается сокращение нагрузки до 40% при сохранении прежнего качества звука.
  • Повышена стабильность работы на многоядерных платформах Intel (cAVS), в том числе обеспечена поддержка запуска обработчиков на любом ядре DSP.
  • Для платформы Apollo Lake (APL) в качестве основы прошивки задействовано окружение Zephyr RTOS вместо XTOS. Уровень интеграции ОС Zephyr достиг паритета в функциональности для некоторых платформ Intel. Применение Zephyr позволяет значительно упростить и сократить код приложений Sound Open Firmware.
  • Реализована возможность использования протокола IPC4 для базовой поддержки захвата и воспроизведения звука на некоторых устройствах Tiger Lake (TGL) с ОС Windows (поддержка IPC4 позволяет из Windows взаимодействовать с DSP на базе прошивок Sound Open Firmware без применения специфичного драйвера).

Источник.