久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区

Rss & SiteMap

曙海教育集團論壇 http://www.bjzhda.cn

曙海教育集團論壇
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
[瀏覽完整版]

標題:SEP4020的Linux音頻驅動設計開發

1樓
wangxinxin 發表于:2010-11-24 10:50:52

為了實現mp3播放,我們最近在sep4020上完成了i2s的驅動,主要經驗總結如下:

 

1.       首先是要在probe函數里進行一系列的初始化,這些初始化對于i2s是很重要的,而且很多

     配置操作codecL3gpio口線;

L3接口相對于一個混音器控制接口,也就是對應在驅動中的mixer結構體,在這里我們需要利用3gpio口線實現對L3的控制,以下是初始化代碼:

*(volatile unsigned long*)(GPIO_PORTD_DIR_V) &= ~(0xd<<1);       //GPB[4:1]=00_0 Output(L3CLOCK):Output(L3DATA):Output(L3MODE)  

 

*(volatile unsigned long*)(GPIO_PORTD_SEL_V) |= (0xd<<1);      

 //GPD[4:1] 1 1010

     配置端口為放音功能,因為sep4020只支持單獨放音和錄音,不能全雙工,因此我們在這里配置為放音,是通過一個口線置高置低實現的,具體代碼:

       *(volatile unsigned long*)(GPIO_PORTG_DIR_V) &= ~(0x1<<11);

*(volatile unsigned long*)(GPIO_PORTG_SEL_V) |= 0x1<<11;

       *(volatile unsigned long*)(GPIO_PORTG_DATA_V) |= 0x1<<11;

     配置pwm,實現對codec時鐘的供給:

*(volatile unsigned long*)PWM4_CTRL_V =0x00;

*(volatile unsigned long*)PWM4_DIV_V =0x4; //88MHz/(4*2)=11Mhz 11M/256fs=42.96k

 *(volatile unsigned long*)PWM4_PERIOD_V =0x2;   //計數時鐘為總線的DIV分頻

 *(volatile unsigned long*)PWM4_DATA_V =0x1;     //周期為兩個計數時鐘

 *(volatile unsigned long*)PWM_ENABLE_V =0x1<<3;     //高電平為一個計數時鐘

     初始化codecUDA1341,實際這一步是和第一步配置控制L3口線一起的,配置好口線后,通過這些口線將codec的參數配置好,當然具體codec的參數要看uda1341的手冊,其中的uda1341_l3_addressuda1341_l3_data是單獨為其編寫的函數:

*(volatile unsigned long*)(GPIO_PORTD_DATA_V) &= ~(L3M|L3C|L3D);

*(volatile unsigned long*)(GPIO_PORTD_DATA_V) |= (L3M|L3C); //Start condition : L3M=H, L3C=H

//以下配置可能需要修改 marked at 11-08

uda1341_l3_address(0x14 + 2);

uda1341_l3_data(0x61);               //1110 dc-filtering開不開無所謂 不能像三星的選成MSB

uda1341_l3_address(0x14 + 2);

uda1341_l3_data(0x21);

uda1341_l3_address(0x14 + 2);

uda1341_l3_data(0xc1);        //Status 1,Gain of DAC 6 dB,Gain of ADC 0dB,ADC non-inverting,DAC non-inverting,Single speed playback,ADC-Off DAC-On

              uda1341_l3_address(0x14 + 0);

uda1341_l3_data(0x0f);        //00,00 ffff  : Volume control (6 bits)  -14dB

              uda1341_l3_address(0x14 + 0);

uda1341_l3_data(0x7b);        //01,11 10,11 : Data0, Bass Boost 18~24dB, Treble 6dB

              uda1341_l3_address(0x14 + 0);

uda1341_l3_data(0x83);

     配置dma,主要實現了對dma通道的使能,清除中斷標志位,具體對dma的緩沖區分配等會在使用dma之前的一個dmasetup函數中實現,并且有對應的dmaclear清除緩沖區。

 

2.       音頻驅動的audio結構體,和mixer結構體

在音頻驅動中主要就是實現這兩個結構體的operation函數:

static struct file_operations sep4020_audio_fops = {

llseek: sep4020_audio_llseek,

write: sep4020_audio_write,

read: sep4020_audio_read,

poll: sep4020_audio_poll,

ioctl: sep4020_audio_ioctl,

open: sep4020_audio_open,

release: sep4020_audio_release

};

 

static struct file_operations sep4020_mixer_fops = {

ioctl: sep4020_mixer_ioctl,

open: sep4020_mixer_open,

release: sep4020_mixer_release

};

sep4020_audio_fops這個結構體主要實現了i2s控制器的操作,包括讀寫,控制,查詢(poll),打開,釋放等等。Audio主要實現了接受上層應用數據,并將數據傳遞給codec進行播放(放音);從codec接受數據,并傳遞給上層的功能(錄音)。這部分中又以writeread函數最為重要,ioctl可以沿用別人的,因此我們的主要工作也是集中在writeread函數上。

 

sep4020_mixer_fops則主要實現了對codec參數的配置,我們也可以很清晰的看到它的operation結構體中只有控制函數,沒有讀寫。并且由于codec的通用性,這部分的代碼基本上可以沿用別人的,如2410

 

3.       關于sep4020_audio_write函數:

這個是整個驅動的核心,也是難點,牽涉了dma操作,buffer ring的思想,linux中信號量的思想。一下內容讀起來會有點吃力,請好好理解代碼

●關于dma

dma的操作,在這里使用了一個buffer ring的思想,這里我們來看一下建立dma緩沖環的代碼來理解這種buffer ring

static int audio_setup_buf(audio_stream_t * s)

{

int frag;

int dmasize = 0;

char *dmabuf = 0;

dma_addr_t dmaphys = 0;

 

if (s->buffers)

共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

Copyright © 2000 - 2009 曙海教育集團
Powered By 曙海教育集團 Version 2.2
Processed in .01563 s, 2 queries.
久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区
高清视频一区二区| 久久影视一区二区| 九九九九精品| 成人欧美一区二区三区在线观看| 国产高清一区日本| 国产一区二区三区免费观看| 美腿丝袜一区二区三区| 久久99精品国产.久久久久久 | 色综合天天综合色综合av| 伊人久久大香线蕉成人综合网| 亚洲二区三区四区| 91豆麻精品91久久久久久| 欧美猛男gaygay网站| 欧美一区二区二区| 中日韩av电影| 亚洲gay无套男同| 精品一区二区三区免费| 成人性生交大片免费看视频在线 | 色女孩综合网| 在线观看亚洲a| 日韩一级视频免费观看在线| 久久久国产精品午夜一区ai换脸| 中文字幕成人网| 亚洲成年人网站在线观看| 国模娜娜一区二区三区| 91网免费观看| 翔田千里亚洲一二三区| 884aa四虎影成人精品一区| 久久久美女毛片| 亚洲国产中文字幕| 国产精品538一区二区在线| 成人av资源网| 中文字幕一区二区三区最新| 精品区一区二区| 亚洲综合在线免费观看| 国产精品自在欧美一区| yy111111少妇影院日韩夜片 | 91.麻豆视频| 国产精品你懂的在线| 亚洲aⅴ怡春院| av在线不卡电影| 亚洲高清视频一区| 26uuu亚洲婷婷狠狠天堂| 一区二区在线免费观看| 久久99精品久久久久久久青青日本 | 久久精品72免费观看| 国产精品一级在线| http;//www.99re视频| 亚洲一区二区三区四区中文| 欧美一区二区视频观看视频| 国产精品福利一区二区| 青青草国产精品亚洲专区无| 99久久99久久| 欧美三级电影精品| 中文字幕在线一区二区三区| 久久成人久久爱| 久久综合给合久久狠狠色| 欧美久久久影院| 综合在线观看色| 粉嫩一区二区三区在线看| 日韩电影天堂视频一区二区| 精品国产一区二区三区av性色| 亚洲综合一区二区精品导航| av不卡一区二区三区| 91高清视频免费看| 综合久久给合久久狠狠狠97色 | www.欧美.com| 日本黄色一区二区| 亚洲色大成网站www久久九九| 国产成人自拍网| 日本道色综合久久| 亚洲精选视频在线| 99久久久无码国产精品| 欧美日韩一本到| 五月天欧美精品| 欧美日韩另类综合| 国产亚洲1区2区3区| 国产91色综合久久免费分享| 欧洲人成人精品| 亚洲bt欧美bt精品| 欧美日韩一区在线观看视频| 国产三级三级三级精品8ⅰ区| 国产经典欧美精品| 欧美日韩免费一区二区三区视频| 五月天丁香久久| 午夜精品区一区二区三| 亚洲日本一区二区| 国产亚洲精品久久飘花| 久久久久久黄色| 99国产精品久久久久| 日韩午夜激情电影| 国产一区二区精品久久| 欧美亚洲动漫精品| 麻豆久久一区二区| 欧美中文字幕久久| 日产国产欧美视频一区精品 | 国产毛片精品一区| 欧美性受极品xxxx喷水| 手机精品视频在线观看| 色爱区成人综合网| 五月婷婷激情综合| 色94色欧美sute亚洲线路一久| 夜夜亚洲天天久久| 先锋影音欧美| 午夜影院久久久| 一区二区三区欧美成人| 午夜成人免费电影| 亚洲国产日韩综合一区| 亚洲成人自拍偷拍| 中文字幕成人一区| 免费日本视频一区| 欧美日韩电影在线播放| 丁香六月综合激情| 国产视频一区二区在线观看| 成人av影视在线| 亚洲免费观看高清完整版在线 | 欧美日韩在线三区| 国内外成人在线| 欧美xxxxx牲另类人与| av成人免费在线| 国产女人18水真多18精品一级做 | 欧美mv和日韩mv国产网站| 国产专区欧美精品| 日韩午夜精品电影| 欧美无人高清视频在线观看| 久久成人精品无人区| 日韩一区二区三区免费观看 | 99re资源| 亚洲免费电影在线| 色网综合在线观看| 国模套图日韩精品一区二区| 日韩欧美国产精品| 国产视频精品网| 香蕉加勒比综合久久| 欧美久久久久久久久久| 91在线看国产| 亚洲黄色小视频| 在线观看亚洲专区| 成人av资源站| 18成人在线观看| 在线观看不卡一区| 3d精品h动漫啪啪一区二区| 亚洲精品国产第一综合99久久| 色婷婷av一区二区三区之一色屋| 国精产品一区一区三区mba桃花| 久久久久成人黄色影片| 日本免费高清不卡| 精品亚洲免费视频| 国产视频一区在线观看| 亚洲免费久久| 99在线视频精品| 亚洲国产裸拍裸体视频在线观看乱了| 在线视频一区二区免费| 97免费资源站| 日本美女视频一区二区| 久久综合资源网| 一级特黄录像免费播放全99| 北条麻妃国产九九精品视频| 一区二区日韩av| 日韩免费在线观看| 日本欧洲国产一区二区| 风间由美性色一区二区三区| 一区二区欧美视频| 欧美xxx久久| 中文字幕在线中文字幕日亚韩一区| 高清成人在线观看| 亚洲一级电影视频| 亚洲精品在线一区二区| 一本一道久久久a久久久精品91| 99国产精品久久久久久久久久| 亚洲成在人线在线播放| 久久精品亚洲精品国产欧美| 欧美主播一区二区三区| 久久国产精品高清| 成人丝袜18视频在线观看| 午夜精品久久久久久久| 欧美激情艳妇裸体舞| 在线播放欧美女士性生活| 人禽交欧美网站免费| 99在线观看| 国产一区二区91| 天天综合网天天综合色| 欧美激情综合五月色丁香小说| 欧美性猛片aaaaaaa做受| 久久手机视频| 91久久精品国产91久久性色tv | 成人成人成人在线视频| 亚洲成人一区二区在线观看| 日本一区二区视频在线| 91精品国产综合久久久久| 色婷婷精品久久二区二区蜜臂av| 国产欧美一区二区三区另类精品 | 韩国女主播成人在线观看| 亚洲一区二区三区三| 国产精品蜜臀av| 日韩欧美在线影院| 欧美精品在线观看播放| 色欧美片视频在线观看| 色综合久久久久久久久五月| 精品日产一区2区三区黄免费|