美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区

產品分類

當前位置: 首頁 > 工業電子產品 > 其他電子產品 > 開發板,套件,編程器 > 開發板

類型分類:
科普知識
數據分類:
開發板

i.MX6 SGTL5000音頻驅動程序調試

發布日期:2022-10-14 點擊率:50

SGTL5000是Freescale推出的一款包含耳機的低功率立體聲編解碼器,可為需要線路輸入、麥克風輸入、線路輸出、耳機輸出和數字I/O的便攜式產品提供全面的音頻解決方案。Freescale官方的i.MX6Q SABRESD參考設計使用的Audio CODEC型號是Wolfson公司的WM8962,由于WM8962的引腳間距特別小,而且球也很小,所以不得不將其更換為SGTL5000的設計,筆者在調試SGTL5000的設備驅動程序中遇到了不少問題,在此分享給讀者。

SGTL5000_BD

首先來講一下硬件。此硬件基于Freescale i.MX6Q SABRESD參考設計,音頻部分相對于參考設計作出的改動如下:

1. 參考設計CSI0部分引腳用于連接Audio CODEC,I2C1,UART1(調試接口),此硬件中用于連接視頻解碼器。

2. 參考設計使用WM8962作為Audio CODEC,此硬件使用SGTL5000。

不用多說,熟悉的讀者一定知道需要更改I2S,I2C1及UART1接口的引腳復用定義。在經過了一番折騰,筆者成功地實現了I2S,I2C1及UART1的引腳功能,主要更改的文件就是

linux-3.0.35/arch/arm/mach-mx6/board-mx6q_sabresd.h,變更過后的部分文件內容如下:

/*Audio Codec*/

MX6Q_PAD_DISP0_DAT20__AUDMUX_AUD4_TXC,

MX6Q_PAD_DISP0_DAT21__AUDMUX_AUD4_TXD,

MX6Q_PAD_DISP0_DAT22__AUDMUX_AUD4_TXFS,

MX6Q_PAD_DISP0_DAT23__AUDMUX_AUD4_RXD,

/* I2C1, WM8958 */

MX6Q_PAD_EIM_D21__I2C1_SCL,

MX6Q_PAD_EIM_D28__I2C1_SDA,

/* UART1*/

MX6Q_PAD_SD3_DAT7__UART1_TXD,

MX6Q_PAD_SD3_DAT6__UART1_RXD,

接下來講述漫長的音頻驅動程序調試過程,當然本文只能記錄要點部分。

1. 經過比較仔細的代碼閱讀,發現不同參考設計的主要區別就是1個.c文件和1個.h文件。例如,board-mx6q_sabresd.c和board-mx6q_sabresd.h就是與i.MX6Q SABRESD參考設計相關的文件,其中board-mx6q_sabresd.c定義了很多的結構體,外設初始化程序,外設注冊程序等,board-mx6q_sabresd.h定義了引腳復用功能。

2. 無意間發現i.MX6Q SABRELITE中使用的就是SGTL5000作為音頻CODEC,其相關的代碼寫在了board-mx6q_sabrelite.c中。對于筆者這種不熟悉驅動程序的工程師來說,有現成的代碼當然要用。仔細研讀board-mx6q_sabrelite.c代碼,其中與SGTL5000部分相關的代碼主要做了以下事情:

定義了14個結構體

mx6_sabrelite_audio_data,mx6_sabrelite_audio_device

sgtl5000_sabrelite_consumer_vdda,sgtl5000_sabrelite_vdda_reg_initdata,sgtl5000_sabrelite_vdda_reg_config,sgtl5000_sabrelite_vdda_reg_devices

sgtl5000_sabrelite_consumer_vddio,sgtl5000_sabrelite_vddio_reg_initdata,sgtl5000_sabrelite_vddio_reg_config,sgtl5000_sabrelite_vddio_reg_devices

sgtl5000_sabrelite_consumer_vddd,sgtl5000_sabrelite_vddd_reg_initdata,sgtl5000_sabrelite_vddd_reg_config,sgtl5000_sabrelite_vddd_reg_devices

定義了2個函數

mx6_sabrelite_sgtl5000_init,imx6q_init_audio

仿照board-mx6q_sabrelite.c,筆者將這些結構體及函數復制到board-mx6q_sabresd.c中。更改mx6_sabrelite_audio_data中的Audio端口為4,并將SGTL5000的I2C地址填寫到mxc_i2c0_board_info[] __initdata結構體中。

3. 編譯過程中出現了一些錯誤,不過都是很容易解決的,在此略過。

4. 將編譯得到的Kernel及Rootfs下載至eMMC中,板子可以正常啟動,但是未看到任何有關SGTL5000相關的Log,直覺告訴筆者,這一定是有問題的。經過了很長時間的代碼閱讀,終于發現在linux-3.0.35/sound/soc/imx/imx-sgtl5000.c

的代碼中做了限制,筆者記不清原來的代碼是怎樣的,只記得更改后的代碼如下:

if ( machine_is_mx6q_sabrelite() || machine_is_mx6q_sabresd())
imx_sgtl5000_dai[0].codec_name = "sgtl5000.0-000a";
else
imx_sgtl5000_dai[0].codec_name = "sgtl5000.1-000a";

按照原來的代碼,imx_sgtl5000_dai[0].codec_name為sgtl5000.1-000a,這與board-mx6q_sabresd.c中的0-000a是不符的,所以一定行不通。

5. 更改過后的代碼啟動過程中可以打印出SGTL5000相關的Log,但是仍不能正常識別,報錯信息如下:

sgtl5000 0-000a: Device with ID register 0 is not a sgtl5000

sgtl5000 0-000a: asoc: failed to probe CODEC sgtl5000.0-000a: –19

asoc: failed to instantiate card sgtl5000-audio: –1

查看imx-sgtl5000.c代碼,發現是在注冊Regulator設備時出錯的。仔細查看硬件設計,發現SGTL5000的VDDD引腳電壓僅為0.8V,這與Datasheet中要求的1.1~2.0V是不符合的,也就是說代碼驅動程序想要將SGTL5000的內部LDO設置為1.2V,結果沒成功,所以返回了這樣的錯誤。回想當時做電路設計時,根據SGTL5000 Datasheet中的“This external VDDD power supply is required for new designs.”描述為將VDDD連接至了外部的LDO,而Freescale的設計中卻并沒有連接,那么問題應該就出在這里。將VDDD引腳的磁珠取下,再次啟動板子,終于看到了正確的打印信息:

sgtl5000 0-000a: sgtl5000 revision 17

asoc: sgtl5000 <-> imx-ssi.1 mapping ok

asoc: mxc-hdmi-soc <-> imx-hdmi-soc-dai.0 mapping ok

ALSA device list:

#0: sgtl5000-audio

#1: imx-hdmi-soc

其實到這一步,筆者大概經歷了3天的時間,總算是有了比較大的突破,筆者相信很多讀者也會遇到這樣的問題。

6. 然而,事情并沒有這樣完全OK。進入系統后,根據Freescale的官方文檔,運行aplay命令,竟然提示找不到這個命令!在網上檢索了一段時間,才終于得知,默認的編譯選項沒有選擇alsa-lib及alsa-utils,于是運行./ltib –m config,在Packages List中選擇了alsa-lib及alsa-utils。再次編譯的Kernel及Roofts下載到板子中后,終于有了aplay,并且可以通過aplay -l命令看到當前的聲卡設備,如下:

aplay-l

7. 此時使用aplay播放mp3,發現耳機中終于有聲音了!哦,是噪音!通過網上搜索,得知aplay無法解碼mp3,所以不得不使用madplay軟件。madplay是筆者之前在OpenWRT平臺上使用的音樂播放軟件,而且這款軟件剛好集成在LTIB中。再次運行./ltib –m config,在Packages List中選擇了madplay,結果再次編譯的Kernel及Roofts下載到板子中后仍然存在問題,提示找不到/dev/dsp設備,手動ls /dev目錄,確實沒有dsp設備,看來這個問題也需要解決。

8. 再次在網上尋找答案,得知ALSA這種結構默認不會在/dev下創建dsp,audio,mixer等常規設備,所以madplay無法正常工作。在編譯時,打開配置Kernel的選項,在

---Device drivers

--<*>Sound card support---->

--<*>Advanced Linux Sound Architecture--->

中選擇OSS Mixer API及OSS PCM (digital audio) API,如下圖

ALSA-OSS

madplay終于可以工作了!

9. 以下是madplay正常工作的截圖,耳機中傳來的音質還是相當不錯的。

madplay

下一篇: PLC、DCS、FCS三大控

上一篇: Atheros SDK研究與使

推薦產品

更多
美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区


        精品国产一区二区三区麻豆免费观看完整版| 亚洲另类春色国产| 欧美在线free| 欧美亚洲免费在线一区| 欧美在线啊v一区| 欧美日韩情趣电影| 337p亚洲精品色噜噜噜| 精品免费国产一区二区三区四区| 久久综合九色综合久久久精品综合| 精品国精品自拍自在线| 欧美激情一区二区三区蜜桃视频| 中文字幕一区二区三区四区| 亚洲国产精品久久人人爱 | 亚洲免费三区一区二区| 亚洲黄网站在线观看| 亚洲成人福利片| 激情综合色综合久久综合| 成人一区二区在线观看| 国产精品区一区二区三含羞草| 欧美一区2区三区4区公司二百 | 麻豆视频成人| 尤物国产精品| 日韩一级大片在线| 国产精品电影一区二区三区| 亚洲国产视频网站| 国产乱理伦片在线观看夜一区| 999国内精品视频在线| 日韩亚洲不卡在线| 在线播放欧美女士性生活| 久久久久久99精品| 亚洲一级二级在线| 高清免费成人av| 久久精品国产第一区二区三区最新章节 | 中文字幕第一页久久| 亚洲高清不卡在线观看| 国产成人在线免费观看| 国产欧美一区二区在线播放| 在线观看日韩av先锋影音电影院| 久久综合丝袜日本网| 香蕉加勒比综合久久| 99免费精品视频| 亚洲精品一区二区三区四区五区| 91精品国产综合久久精品app| 国产精品无码永久免费888| 麻豆一区二区在线| 久久精品二区| 欧美大胆人体bbbb| 婷婷综合在线观看| 成人xxxxx色| 欧美色图12p| 日韩毛片精品高清免费| 国产经典欧美精品| 亚洲资源视频| 亚洲欧洲精品一区二区精品久久久| 极品少妇xxxx偷拍精品少妇| 欧美精品在线一区| 久久蜜臀中文字幕| 激情都市一区二区| 亚洲人成人77777线观看| 久久久青草青青国产亚洲免观| 蜜臀av一区二区在线免费观看| 精品在线视频一区二区| 精品奇米国产一区二区三区| 男女男精品网站| 免费久久久一本精品久久区| 久久久综合精品| 国产经典欧美精品| 欧美性色黄大片| 调教+趴+乳夹+国产+精品| 精品在线视频一区二区三区| 精品成a人在线观看| 精品一区二区三区视频在线观看 | 高清日韩电视剧大全免费| 亚洲图片欧洲图片日韩av| 国产精品美女一区二区三区 | 亚洲精品日韩一| 99在线影院| 精品免费日韩av| 国产激情视频一区二区在线观看 | 亚洲欧美另类在线| 国产成人免费观看| 久久午夜老司机| 99视频精品全部免费在线| 欧美一区二区三区免费大片| 男女视频一区二区| 在线观看免费亚洲| 蜜桃av一区二区在线观看 | 欧美日韩精品综合在线| 日韩影院在线观看| 亚洲无玛一区| 石原莉奈在线亚洲三区| 亚洲成人一区二区三区| 一级中文字幕一区二区| 日韩影视精品| 无码av免费一区二区三区试看| 五月天婷亚洲天综合网鲁鲁鲁| 亚洲精品免费在线观看| 久久青青草原| 一区2区3区在线看| 亚洲视频小说| 麻豆一区二区三| 91精品国产全国免费观看 | 亚洲精品国产精品国自产| 亚洲高清在线视频| 中文字幕在线观看一区二区三区| 日韩高清一级片| 色94色欧美sute亚洲线路一久 | 午夜电影一区二区| 伊人av成人| 久久精品国产亚洲一区二区三区| 欧美午夜精品久久久久久孕妇 | 欧美高清在线精品一区| 国产精品日韩欧美一区二区三区| 国产精品视频一二| 精品国产乱码久久久久久久软件| 午夜精品久久久久久久99樱桃| 四虎永久国产精品| 色妞www精品视频| 色吧成人激情小说| 亚洲精品欧美激情| 91九色视频在线观看| 综合久久给合久久狠狠狠97色| 亚洲国产另类av| 麻豆精品视频| 午夜亚洲国产au精品一区二区| 欧美日韩一区二区视频在线观看| 精品成人私密视频| 欧美岛国在线观看| 精品区一区二区| 自拍偷拍国产精品| 奇米在线7777在线精品| 香蕉久久一区二区不卡无毒影院| 最新久久zyz资源站| 成人免费小视频| 三级久久三级久久久| 热久久一区二区| 秋霞影院一区二区| 国产成人午夜高潮毛片| 精品国产一区二区三区久久久久久 | 亚洲欧洲国产专区| 午夜私人影院久久久久| 国产成人超碰人人澡人人澡| 国产ts人妖一区二区| 国产精品视频免费观看| 日本精品免费观看高清观看| 欧美精品一区二区久久婷婷| 欧美大片在线观看| 五月天丁香久久| 国产精品欧美久久| 欧美午夜精品电影| 国产嫩草影院久久久久| 亚洲一区二区在线免费观看视频| 精品夜夜嗨av一区二区三区| 日韩精品大片| 日韩欧美国产小视频| 最新中文字幕一区二区三区| 99riav一区二区三区| 欧美日韩视频在线第一区| 亚洲丝袜另类动漫二区| y111111国产精品久久婷婷| 国产老肥熟一区二区三区| 午夜精品久久久久久久99樱桃| 综合久久久久久| 国产精品久久久久久久久久免费看 | 1区1区3区4区产品乱码芒果精品| 国产精品亚洲第一区在线暖暖韩国| 天堂成人免费av电影一区| 一区二区三区日韩欧美精品| 国产精品国产三级国产专播品爱网 | 亚洲观看高清完整版在线观看| 亚洲欧美另类图片小说| 最好看的中文字幕久久| 亚洲欧洲日韩一区二区三区| 中文字幕一区av| 亚洲人成网站色在线观看| 椎名由奈av一区二区三区| 日韩毛片在线免费观看| 一区二区三区91| 亚洲一区二区三区四区五区黄| 亚洲黄色小说网站| 午夜免费久久看| 日本不卡高清视频| 久久99精品国产91久久来源| 国内精品第一页| 国产精品亚洲成人| 成人一区在线看| 99国产精品久久久久老师| 国产精品日韩二区| 欧美精品一区二区三区在线四季 | 日韩一区二区三区视频在线观看| 欧美日韩高清在线| 欧美α欧美αv大片| 久久精品一区二区三区不卡| 国产婷婷一区二区| 亚洲欧洲精品一区二区三区不卡| 伊人夜夜躁av伊人久久| 日韩专区欧美专区| 国产综合久久久久影院| 99视频在线精品| 精品一区二区三区自拍图片区|