版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Linux ALSA本實踐是在Linux ALSA本實踐是在Linux基礎(chǔ)培訓(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ū)動對libasound 的 API庫。用這些進行寫程序不需要打開設備等括音件訪2014-1-一、 ALSA一、 ALSA2014-1-一、 ALSA架構(gòu)簡一、 ALSA架構(gòu)簡/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ù)??梢源蛴∵m當?shù)膌og信息,不會影響ens13714.根據(jù)ens1370.c的代碼,向init和exit中添加實現(xiàn)函數(shù)。根據(jù)調(diào)用關(guān)系實現(xiàn)一個被調(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ù)中賦值而還沒有實現(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微課在初中數(shù)學概念課中的運用
- 面部皮膚腫瘤局部皮瓣手術(shù)治療的效果觀察-國際臨床研究雜志
- 河南省土地平整項目檢驗與評定表格
- 53模擬試卷初中語文九年級下冊01中考真題分項精練(一)
- DB13-T 5720-2023 建筑物防雷裝置檢查內(nèi)容和測量參數(shù)的確定規(guī)范
- 高中化學:化學反應與能量變化-化學反應中的熱效應
- 酷玩節(jié)奏課件教學課件
- 跨境電商平臺助力產(chǎn)業(yè)帶轉(zhuǎn)型升級背景研究分析報告
- 混凝土學教案
- 福建省2018年中考化學真題試卷(含答案)
- 跨學科實踐活動1 微型空氣質(zhì)量“檢測站”的組裝與使用課件-2024-2025學年九年級化學人教版(2024)上冊
- 湖南省長沙市2024年中考英語真題【附真題答案】
- 云南省交通投資建設集團限公司下屬經(jīng)營公司管理人員社會招聘(高頻重點提升專題訓練)共500題附帶答案詳解
- 2024至2030年中國合同能源管理行業(yè)發(fā)展運行現(xiàn)狀及投資策略研究報告
- 2024年全國一級造價師之建設工程造價管理考試歷年考試題附答案
- 計算機控制系統(tǒng)課后作業(yè)
- 《城市軌道交通》課件
- 2024年第30批歐盟REACH法規(guī)240項高度關(guān)注物質(zhì)SVHC清單
- 2024年福建泉州市工會專干招聘36人歷年【重點基礎(chǔ)提升】模擬試題(共500題)附帶答案詳解
- 同花順內(nèi)置函數(shù)
- 如果歷史是一群喵課件
評論
0/150
提交評論