美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成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在线一区二区_欧美不卡一区二区_欧美影视一区二区三区


        欧美日韩国产精品一区二区| 国产欧美日韩亚州综合| 国产成人精品一区二区三区福利| 国产精品18久久久久久久久久久久| 久久国产三级精品| 玖玖九九国产精品| 国产精品影视天天线| 激情欧美一区二区三区在线观看| 国产尤物一区二区在线| 国产高清无密码一区二区三区| 福利视频网站一区二区三区| 大白屁股一区二区视频| 97超碰人人看人人| 九色91视频| 色一区在线观看| 欧美日韩三级在线| 欧美一级生活片| 日本一区免费视频| 一区二区三区产品免费精品久久75| 亚洲国产日韩在线一区模特| 美女视频黄a大片欧美| 国产**成人网毛片九色 | 欧美一二三区精品| 久久精品亚洲精品国产欧美| 亚洲欧美在线高清| 日韩精品乱码免费| 成人黄色网址在线观看| 91精品国产高清久久久久久91裸体 | 3d成人动漫网站| 久久久久97国产精华液好用吗| 中文字幕在线观看不卡| 亚洲国产一区视频| 国产精品一二三区在线| 国产精品大全| 欧洲av一区二区嗯嗯嗯啊| 欧美刺激午夜性久久久久久久| 中文字幕av不卡| 日韩国产在线观看一区| 成人动漫一区二区| 日韩欧美一区二区视频在线播放| 欧美日韩国产一区| 日韩伦理免费电影| 国产成人av影院| 欧美二区三区在线| 91精品国产色综合久久| 中文字幕一区免费在线观看| 国内精品国产成人| 麻豆久久久av免费| 日韩一级片网址| 亚洲一区在线观看免费观看电影高清| 国产一区999| 日本在线观看一区二区| 欧美videossexotv100| 亚洲综合视频在线| 91香蕉国产在线观看软件| 色欲综合视频天天天| 国产欧美一区二区在线观看| 免费成人你懂的| 精品乱码一区二区三区| 欧美一区二区三区影视| 天堂va蜜桃一区二区三区 | 国产精品日韩精品欧美在线| 免费亚洲电影在线| 国产精品一区二区欧美| 91精品午夜视频| 午夜精品久久久| 久久99国产精品| 26uuu欧美日本| 国产在线一区二区综合免费视频| 欧美日韩一区二区视频在线观看| 欧美哺乳videos| 久久精品国产一区二区三 | 亚洲精品在线免费观看视频| 日本va欧美va精品| 欧美主播一区二区三区美女 久久精品人| 欧美一级日韩免费不卡| 麻豆国产精品777777在线| 日韩精品无码一区二区三区| 中文一区二区完整视频在线观看| 国产91丝袜在线观看| 欧美午夜精品久久久久久超碰 | 99中文字幕| 日韩免费观看高清完整版| 蜜桃av噜噜一区二区三区小说| 鲁丝一区二区三区免费| 日本一区二区不卡视频| 北条麻妃国产九九精品视频| 欧美肥妇bbw| 免费av成人在线| 一区二区三区欧美成人| 一卡二卡三卡日韩欧美| 久久久久久高清| 国产精品女主播av| 成人av电影免费| 国产午夜久久久久| 91在线视频18| 精品国产免费人成在线观看| 成人听书哪个软件好| 日韩精品中午字幕| youjizz久久| 国产无遮挡一区二区三区毛片日本| 国产98色在线|日韩| 欧美一区二区三区在线观看视频| 国产剧情一区二区| 欧美久久久影院| 成人免费毛片嘿嘿连载视频| 日韩欧美一级片| 成人动漫一区二区在线| 2023国产精华国产精品| 1卡2卡3卡精品视频| 国产精品天天看| 欧美凹凸一区二区三区视频| 一区二区三区中文字幕| 相泽南亚洲一区二区在线播放| 亚洲高清免费一级二级三级| 中国一区二区三区| 另类中文字幕网| 日韩一区二区三区av| 91污在线观看| 亚洲欧美国产三级| 一区二区三区四区欧美日韩| 奇米影视一区二区三区小说| 欧美丰满美乳xxx高潮www| 99久久久久久99| 亚洲欧洲国产日本综合| 亚洲韩国在线| 国产一区二区三区免费在线观看 | 亚洲综合一区二区三区| 亚洲精品乱码久久久久久蜜桃91 | 99久久综合99久久综合网站| 日本一区二区视频在线| 久久青青草综合| 热久久久久久久| 欧美成人一区二区三区在线观看| 成人免费观看网站| 亚洲国产欧美一区二区三区丁香婷| 在线视频你懂得一区二区三区| 国产精品 欧美精品| 欧美激情一区三区| 婷婷五月色综合| 国产精品88888| 国产精品国产精品国产专区不片 | 国产亚洲精品bt天堂精选| 日本视频一区二区不卡| 久久精品国产一区二区三| 久久品道一品道久久精品| 欧美极品一区二区| 狠狠色丁香久久婷婷综| 国产欧美精品一区二区三区四区| 色狠狠久久av五月综合| 国产精品综合一区二区三区| 国产精品视频yy9299一区| 色综合天天综合| 91九色对白| 麻豆一区二区在线| 国产精品萝li| 欧美精品在线一区二区| 精品欧美国产| 国产成人三级在线观看| 亚洲在线一区二区三区| 精品国产乱码久久久久久夜甘婷婷| 另类小说综合网| 成人爱爱电影网址| 日韩精品1区2区3区| 国产日韩欧美精品一区| 欧美日韩亚洲高清一区二区| 久久久久久草| 91网站黄www| 乱一区二区av| 亚洲一区中文日韩| 欧美国产激情一区二区三区蜜月| 欧美在线不卡一区| 欧美日韩一区二区三区在线观看免| 风间由美一区二区三区在线观看| 亚洲风情在线资源站| 国产农村妇女毛片精品久久麻豆| 欧美日韩1区2区| 亚洲欧美日韩精品在线| 都市激情久久久久久久久久久| 狠狠狠色丁香婷婷综合激情| 亚洲一区电影777| 国产精品少妇自拍| 精品国产一区二区三区久久久蜜月 | 欧美激情一区二区三区| 欧美日韩中文字幕一区| 青娱乐一区二区| 国产精品一区二区a| 国产成人av电影在线| 另类成人小视频在线| 亚洲高清免费视频| 亚洲视频一区二区免费在线观看| 日韩精品一区二区三区老鸭窝 | 91福利小视频| 日韩福利影院| 精品一区二区三区自拍图片区| 成a人片亚洲日本久久| 极品少妇xxxx偷拍精品少妇| 午夜久久久久久| 一区二区欧美在线观看| 国产精品久久毛片a|