版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Linux ALSA本實(shí)踐是在Linux ALSA本實(shí)踐是在Linux基礎(chǔ)培訓(xùn)(2)-2014-1-一、ALSA2014-1-一、ALSA2014-1-一、ALSA架構(gòu)簡一、ALSA架構(gòu)簡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ū)動(dòng)對libasound 的 API庫。用這些進(jìn)行寫程序不需要打開設(shè)備等括音件訪2014-1-一、 ALSA一、 ALSA2014-1-一、 ALSA架構(gòu)簡一、 ALSA架構(gòu)簡/dev/snd/pcmC0D0p核層的alsa-drivier驅(qū)動(dòng)再經(jīng)由sound core一、ALSA二、最一、ALSA二、最佳實(shí)踐的目標(biāo)、目的、方2014-1-ALSAapp app alsa-ALSAapp app alsa-alsa內(nèi)核alsa-2014-1-實(shí)現(xiàn)的最小化驅(qū)動(dòng)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ǎn),、方向鍵可以調(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ū)動(dòng)程序,添加到ens1371-playback.c3. 抽取ens1370.c(位于linux-source-2.6.26/sound/pci)中Linux通用驅(qū)動(dòng)程序,添加到ens1371-playb
5、ack.c中并make,測試??梢韵忍砑涌蚣?,再向框架中逐步添加函數(shù)??梢源蛴∵m當(dāng)?shù)膌og信息,不會(huì)影響ens13714.根據(jù)ens1370.c的代碼,向init和exit中添加實(shí)現(xiàn)函數(shù)。根據(jù)調(diào)用關(guān)系實(shí)現(xiàn)一個(gè)被調(diào)用函數(shù)的最小化定義(中的snd_audiopci_probe()和snd_audiopci_remove()),以填充調(diào)用函數(shù),并將無關(guān)部分注釋掉,減輕代碼量。注意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ù)中賦值而還沒有實(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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度冷鏈?zhǔn)称钒徇\(yùn)與儲存服務(wù)合同范本3篇
- 2025年版中英雙語國際租賃業(yè)務(wù)三方合同模板3篇
- 2025年蔬菜種植基地與保險(xiǎn)公司風(fēng)險(xiǎn)保障合同3篇
- 2025-2030年中國馬桶蓋市場競爭格局及投資前景分析報(bào)告
- 2025-2030年中國鋁型材防火門窗市場發(fā)展?fàn)顩r及投資前景規(guī)劃研究報(bào)告
- 2025-2030年中國金屬釩市場競爭格局及投資前景規(guī)劃研究報(bào)告
- 2025-2030年中國速凍食品市場運(yùn)行動(dòng)態(tài)及發(fā)展前景預(yù)測報(bào)告
- 2025-2030年中國葵花油市場運(yùn)行狀況及發(fā)展趨勢分析報(bào)告
- 2025-2030年中國苗圃產(chǎn)業(yè)現(xiàn)狀分析及發(fā)展前景規(guī)劃研究報(bào)告
- 2025-2030年中國臍橙行業(yè)運(yùn)行現(xiàn)狀及投資發(fā)展前景預(yù)測報(bào)告
- DB-T29-74-2018天津市城市道路工程施工及驗(yàn)收標(biāo)準(zhǔn)
- 小學(xué)一年級20以內(nèi)加減法混合運(yùn)算3000題(已排版)
- 智慧工廠數(shù)字孿生解決方案
- 病機(jī)-基本病機(jī) 邪正盛衰講解
- 品管圈知識 課件
- 非誠不找小品臺詞
- 2024年3月江蘇省考公務(wù)員面試題(B類)及參考答案
- 患者信息保密法律法規(guī)解讀
- 老年人護(hù)理風(fēng)險(xiǎn)防控PPT
- 充電樁采購安裝投標(biāo)方案(技術(shù)方案)
- 醫(yī)院科室考勤表
評論
0/150
提交評論