1. 程式人生 > >Linux音效卡驅動移植和測試

Linux音效卡驅動移植和測試

一、分析驅動程式,根據開發板修改程式碼

程式碼太長,就不貼了,幾個注意點:

1、 檢視開發板原理圖和S3C2410的datasheet,UDA1341的L3MODE、L3DATA、L3CLOCK分別與S3C2410的GPB2、GPB3、GPB4相連,IISLRCK=GPE0, IISSCLK=GPE1, CDCLK=GPE2,IISSDI=GPE3, IISSDO=GPE4,部分程式碼如下:


2、 兩個重要結構體:audio_buf_t和audio_stream_t,其中audio_stream_t 為音訊流資料組成了一個環形緩衝區;


3、 file_operations結構體,open()、write()、read()、ioctl()、release()等函式的底層實現;



4、 DMA的原理;

5、 驅動載入和解除安裝等;

二、向核心中新增音效卡驅動

1、  配置核心中的音效卡選項;

注意:UDA1341的驅動程式s3c2410-oss.c在linux/sound/oss/目錄下(核心版本:Linux-2.6.8.1)。

在核心樹目錄下輸入make menuconfig,會跳出核心配置介面:


然後按鍵盤的向下導航鍵,下拉至Sound選項:


按回車,進入Sound選項介面:


選中“Open Sound System”選項,回車進入OSS選項介面:


分別選中“Open Sound System(DEPRECATED)”和“S3C2410 audio support”兩項,按空格,直到選項前面<>內變成*,然後按Tab鍵退出,儲存配置資訊:


ps*表示將驅動程式編譯進核心,空表示不編譯驅動程式,M表示將驅動程式編譯成模組。

2、  編譯核心,生成核心映象zImage;

在核心樹目錄下,輸入命令make zImage,編譯成功後會在linux/arch/arm/boot/目錄下生成zImage檔案。

3、  開啟Samba伺服器,將核心映象zImage共享到windows平臺下,再通過DNW軟體將zImage下載到開發板上;

經過以上步驟,就成功地將音效卡驅動程式新增進核心。

三、測試音效卡

1、啟動開發板,檢視音效卡裝置;


從顯示結果可以看出,驅動程式已經成功地在核心中註冊了兩個字元裝置:dsp和mixer,dsp的主裝置號是14,次裝置號是3;mixer的主裝置號也是14,次裝置號是0。

2、檢視音效卡能否正常錄音和播放;


建立臨時資料夾audio,使用命令實現錄音,生成音訊檔案audio.wav,使用命令實現放音,通過測試,發現音效卡工作正常。

遇到的問題:

測試音效卡時,出現錯誤“cat :Read  error:Illegal  seek”。

解決辦法:

修改音效卡驅動程式,將驅動程式裡的smdk2410_audio_read函式中的部分程式碼註釋了,如下圖紅色圈出部分。


注意:修改驅動程式後,需要重新編譯核心,生成zImage檔案並下載到開發板上。

2014年6月13日星期五16:23