Sound Open Firmware 2.2 (SOF) 專案已發布,該專案最初由英特爾創建,旨在擺脫為與音訊處理相關的 DSP 晶片提供封閉韌體的做法。 該專案隨後被轉移到 Linux 基金會的旗下,目前正在社群以及 AMD、Google 和 NXP 的參與下進行開發。 該專案正在開發一個用於簡化韌體開發的 SDK、一個用於 Linux 核心的聲音驅動程式以及一組用於各種 DSP 晶片的現成固件,並為其生成二進位組件,並通過數位簽名進行認證。 韌體程式碼是用帶有彙編插入的 C 語言編寫的,並在 BSD 許可證下分發。
由於其模組化結構,Sound Open Firmware 可以移植到各種 DSP 架構和硬體平台。 例如,支援的平台中,支援基於Xtensa HiFi配備DSP的各種Intel晶片(Broadwell、Icelake、Tigerlake、Alderlake等)、Mediatek(mt8195)、NXP(i.MX8*)和AMD(Renoir)架構如2、 3和4所述。在開發過程中,可以使用特殊的模擬器或QEMU。 使用DSP 的開放韌體可讓您更快地修正和診斷韌體中的問題,並且還使用戶有機會根據自己的需求獨立調整韌體、進行特定優化並創建僅包含以下功能所需的輕量級韌體版本:產品。
該專案提供了一個框架,用於開發、優化和測試與音訊處理相關的解決方案,以及創建與 DSP 互動的驅動程式和程式。 此組合包括韌體實作、測試韌體的工具、用於將ELF 檔案轉換為適合安裝在裝置上的韌體映像的實用程式、偵錯工具、DSP 模擬器、主機平台模擬器(基於QEMU)、追蹤韌體的工具、MATLAB 腳本/Octave 用於微調音訊元件的係數、用於組織與韌體的互動和資料交換的應用程式、音訊處理拓撲的現成範例。
該專案還在開發一種通用驅動程序,可與使用基於 Sound Open Firmware 的韌體的裝置一起使用。 從版本 5.2 開始,該驅動程式已包含在主 Linux 核心中,並採用雙重授權 - BSD 和 GPLv2。 驅動程式負責將韌體載入到 DSP 記憶體中,將音訊拓撲載入到 DSP 中,組織音訊裝置的操作(負責從應用程式存取 DSP 功能),並提供應用程式對音訊資料的存取點。 該驅動程式還提供了用於主機系統和 DSP 之間通訊的 IPC 機制,以及用於透過通用 API 存取 DSP 硬體功能的層。 對於應用而言,具有聲音開放韌體的 DSP 看起來就像常規的 ALSA 設備,可以使用標準軟體介面進行控制。
Sound Open Firmware 2.2 的主要創新:
- 用於處理外部編解碼器庫的元件已從 codec_adapter 重新命名為 module_adapter,並與訊號處理模組的 API 保持一致,這將允許您使用 Windows 處理程序中的程式碼而無需更改它。
- Frag API 已被棄用,每個組件的效能提高了大約 1 MCPS(每秒百萬週期)。
- 新增了 Frame API,它根據 SIMD 和非 SIMD 指令對處理程序執行區塊大小的前向計算。 優化使性能提高了約 0.25 MCPS。
- 新增了支援 HiFi4 的新混音器,以減少或增加串流中的音訊通道數量。
- 使用 Zephyr RTOS 代替 XTOS 作為環境韌體基礎的可能性得到了擴展。 使用 Zephyr 可以顯著簡化和減少 Sound Open Firmware 應用程式的程式碼。 新版本增加了對本機 Zephyr API 的支持,用於記錄和引入延遲。 預計下一版本將提供對 Zephyr 的全面原生支援。
- 使用 IPC4 協定在運行 Windows 的裝置上捕獲和播放聲音的能力得到了擴展(IPC4 支援允許 Windows 與基於聲音開放韌體的 DSP 進行交互,而無需使用特定的驅動程式)。
來源: opennet.ru