版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Linux ALSA本實踐是在Linux ALSA本實踐是在Linux基礎培訓(2)-2014-1-一、ALSA2014-1-一、ALSA2014-1-一、ALSA架構簡一、ALSA架構簡2014-1-一、ALSA支持SMP一、ALSA支持SMP兼容OSS2014-1-一、 ALSAALSA是AdvancedLinux Sound Architecture,高提供了音頻和MIDI(MusicalInstrument一、 ALSAALSA是AdvancedLinux Sound Architecture,高提供了音頻和MIDI(MusicalInstrumentDigital 包含API Lin
2、uxALSA包含一系列內(nèi)核驅(qū)動對libasound 的 API庫。用這些進行寫程序不需要打開設備等括音件訪2014-1-一、 ALSA一、 ALSA2014-1-一、 ALSA架構簡一、 ALSA架構簡/dev/snd/pcmC0D0p核層的alsa-drivier驅(qū)動再經(jīng)由sound core一、ALSA二、最一、ALSA二、最佳實踐的目標、目的、方2014-1-ALSAapp app alsa-ALSAapp app alsa-alsa內(nèi)核alsa-2014-1-實現(xiàn)的最小化驅(qū)動insmod,remod,以及 playback stop 的過程。使 (capture)s10一、ALSA20
3、14-1-一、ALSA2014-1-使用alsa自帶的aplay,可以用alsamixerapt-getinstallalsa-使用alsa自帶的aplay,可以用alsamixerapt-getinstallalsa-#紅色文字表示apt-getinstallalsa-alsamixeralsamixer、方向鍵可以調(diào)整焦點,、方向鍵可以調(diào)整音量,esc鍵退出。也可以用數(shù)字或+、-(2) 檢查使用的PC的聲卡是否是# 2014-1-#02:02.0Multimediaaudiocontroller:EnsoniqES1371AudioPCI-97(rev ifneqobj-m:=ens137
4、1-KBUILD:=/lib/modules/uname-make-C$(KBUILD)pwd)rm-f*.o *core.depend.*.cmd*.ko*.mod.c*.order rm-rfs. 2014-1-#define CHIP1371 #includeens1370.c“3. 抽取ens1370.c(位于linux-source-2.6.26/sound/pci)中Linux通用驅(qū)動程序,添加到ens1371-playback.c3. 抽取ens1370.c(位于linux-source-2.6.26/sound/pci)中Linux通用驅(qū)動程序,添加到ens1371-playb
5、ack.c中并make,測試??梢韵忍砑涌蚣?,再向框架中逐步添加函數(shù)。可以打印適當?shù)膌og信息,不會影響ens13714.根據(jù)ens1370.c的代碼,向init和exit中添加實現(xiàn)函數(shù)。根據(jù)調(diào)用關系實現(xiàn)一個被調(diào)用函數(shù)的最小化定義(中的snd_audiopci_probe()和snd_audiopci_remove()),以填充調(diào)用函數(shù),并將無關部分注釋掉,減輕代碼量。注意2014-1-#define#include#defineENS1371_DEBUG #ifdef ENS1371_DEBUG#defineFUNC_LOG() k(KERN_ERR “FUNC_LOG: *%d+*%s()
6、+n, , initic void exit#define#include#include#define#ifdef#defineFUNC_LOG()k(KERN_ERRFUNC_LOG:%d:%s()n, LINE , FUNCTION #defineDRIVER_NAME#define#include#include#define#ifdef#defineFUNC_LOG()k(KERN_ERRFUNC_LOG:%d:%s()n, LINE , FUNCTION #defineDRIVER_NAMEicstructpci_device_idsnd_audiopci_ids=/#ifdef0
7、 x1274,0 x5000,PCI_ANY_ID, PCI_ANY_ID, 0,0,0,/*ES1370#ifdef0 x1274,0 x1371,PCI_ANY_ID, PCI_ANY_ID, 0,0,0,0 x1274,0 x5880,PCI_ANY_ID, PCI_ANY_ID, 0,0,0,0 x1102,0 x8938,PCI_ANY_ID, PCI_ANY_ID, 0,0,0,0, /*ES1371/*ES1373- CT5880/*EctivaEV1938 s devinit snd_audiopci_probe(structpci_dev *pci, conststructp
8、ci_device_idreturnsicvoid devexit snd_audiopci_remove(struct pci_devsicstructpci_driverdriver =.name=.id_table =.probe= .remove = #ifdef/.suspend=/.resume= init icvoid exit 25make、insmod、5make、insmod、 DRIVER_NAME后,insmod的模塊打印的log 6. 仿照snd_audiopci_probe()和 snd_audiopci_remove()的填充與alsa_card_ens137x_
9、init()和alsa_card_ens137x_exit()6. 仿照snd_audiopci_probe()和 snd_audiopci_remove()的填充與alsa_card_ens137x_init()和alsa_card_ens137x_exit()出聲音。 對于snd_audiopci_probe()面函數(shù)中賦值而還沒有實現(xiàn)的部分,可以先用if#define#include#include#include#include#define#ifdef#defineFUNC_LOG()k(KERN_ERRFUNC_LOG:%d:%s()n, LINE , FUNCTION #defi
10、neDRIVER_NAMEicstructpci_device_idsnd_audiopci_ids=indexSNDRV_CARDS =/*Index0-MAXic char *idSNDRV_CARDS = SNDRV_DEFAULT_STR;/* ID for this card */ enableSNDRV_CARDS = SNDRV_DEFAULT_ENABLE_PNP;/*Enableswitches*/ structensoniq devinit snd_ensoniq_1371_mixer(struct ensoniq *ensoniq, devinit snd_ensoniq
11、_pcm(struct ensoniq * ensoniq,device,structsnd_pcm*return devinit snd_ensoniq_create(struct snd_card*card, structpci_dev *pci, structensoniq * rensoniq)return2 6s devinit snd_audiopci_probe(structpci_dev conststructpci_device_idstrcpy(card-driver,strcpy(card-shortname,Ensoniq#ifdefstructsnd_cardstru
12、ctensoniq*ensoniq; err, pcm_devs2;f(card-longname,%s%sat 0 x%lx,irq6s devinit snd_audiopci_probe(structpci_dev conststructpci_device_idstrcpy(card-driver,strcpy(card-shortname,Ensoniq#ifdefstructsnd_cardstructensoniq*ensoniq; err, pcm_devs2;f(card-longname,%s%sat 0 x%lx,irq if(dev=return-if(!enabled
13、ev)return-if(err=snd_card_register(card) 0)return return0;card=snd_card_new(indexdev, iddev,THIS_MODULE, if(card= return-if(err=snd_ensoniq_create(card, pci,&ensoniq) private_data=sicvoid devexit snd_audiopci_remove(struct pci_devpci_set_drvdata(pci, NULL);pcm_devs0 =0;pcm_devs1 =/#ifdefif(err=snd_ensoniq_1370_mixer(ensoniq) 0)return err;sicstructpci_driverdriver =.name=.id_table =.probe= .remove= devexit_p(snd_audiopci_remove), #ifdefCONFIG_PM/.suspend=/.resume=/#ifdefif(err=snd_ensoniq_1371_mixer(ensoniq, spdifdev,lineiodev)0)returnif(err=snd_ensoniq_pcm(ensoniq, 0,NULL)0)return e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國畫故宮課件教學課件
- 2024年保衛(wèi)服務合同
- (完整版)特種設備應急預案
- 2024年建筑工地木工班組勞務承包合同
- 2024年度生態(tài)補償機制實施合同
- 2024年應急運輸響應合同
- 激勵學生課件教學課件
- 2024年度教育設備采購與維護合同
- 2024年度歐洲汽車制造與銷售合同
- 2024年大宗商品物流合同
- 第十二講溝通
- 歐洲合同法PECL韓世遠譯
- 上海市徐匯區(qū)初三英語二模精美含答案聽力材料
- 成都住房公積金單位繳存登記表
- 西師大版二年級上冊數(shù)學《 5.7 小小測量員》PPT課件
- 海洋生物活性物質(zhì)-活性多糖
- 防止機車乘務員超勞細化實施辦法
- (完整版)小學生AABB式詞語大全及簡單版
- 六年級家長會家長代表演講稿-PPT.ppt
- 淺談以體育游戲促進幼兒體能發(fā)展
- 事業(yè)單位處分條例2021事業(yè)單位工作人員處分條例
評論
0/150
提交評論