1. 程式人生 > >ALSA語音庫移植到OK6410

ALSA語音庫移植到OK6410

   出於對安全性方面的考慮,Linux下的應用程式無法直接對音效卡這類硬體裝置進行操作,而是必須通過核心提供的驅動程式才能完成。在Linux上進行音訊程式設計的本質就是要藉助於驅動程式,來完成對音效卡的各種操作。

   對硬體的控制涉及到暫存器中各個位元位的操作,通常這是與裝置直接相關並且對時序的要求非常嚴格,如果這些工作都交由應用程式設計師來負責,那麼對音效卡的程式設計將 變得異常複雜而困難起來,驅動程式的作用正是要遮蔽硬體的這些底層細節,從而簡化應用程式的編寫。目前Linux下常用的音效卡驅動程式主要有兩種:OSS 和ALSA。

   最早出現在Linux上的音訊程式設計介面是OSS(Open Sound System),它由一套完整的核心驅動程式模組組成,可以為絕大多數音效卡提供統一的程式設計介面。OSS出現的歷史相對較長,這些核心模組中的一部分 (OSS/Free)是與Linux核心原始碼共同免費釋出的,另外一些則以二進位制的形式由4Front Technologies公司提供。由於得到了商業公司的鼎力支援,OSS已經成為在Linux下進行音訊程式設計的事實標準,支援OSS的應用程式能夠在絕 大多數音效卡上工作良好。

   雖然OSS已經非常成熟,但它畢竟是一個沒有完全開放原始碼的商業產品,ALSA(Advanced Linux Sound Architecture)恰好彌補了這一空白,它是在Linux下進行音訊程式設計時另一個可供選擇的音效卡驅動程式。ALSA除了像OSS那樣提供了一組內 核驅動程式模組之外,還專門為簡化應用程式的編寫提供了相應的函式庫,與OSS提供的基於ioctl的原始程式設計介面相比,ALSA函式庫使用起來要更加方便一些。

       alsa-driver,alsa-firwware是核心開發者所接觸的東西,對於已經正常執行硬體,通常意味著這一部分已經整合到核心當中,無需修改.       而alsa-utils主要是測試一些小工具.       因此對於一個應用程式開發者,或者嵌入式應用開發者,接觸到主要是alsa-lib編譯出來的libasound
.so等庫