急问:2440+wince5.0 碰到奇怪的音频问题!
原来系统没有问题,将显示驱动由16bit该为24bit之后显示没有问题,但是奇怪的是音频竟然出问题了:
跑explore时有开机声音,但只是一开始响一下就没了,有时是开始正常,点触摸屏几下后或打开个文件夹后触摸点击声就没了!
该回16bit后一切正常!
这音频驱动怎么会和受显示驱动影响了呢?
望高手指点!
你有驱动的源码吗?你得看看在分辨率调高了之后,显示驱动当中都做了什么事情,是不是有碰到声音的IO口
有可能是时序的问题,在音频驱动的OutputDMA中,最后起动DMA前加点延时5ms等待一下看看
首先确定声音播放的速度和效果是否正确,播放下mp3看看。然后增大WAV驱动线程的优先级,能改善效果。
还有一个现象:我把新加的八根管脚,即八根数据线屏蔽掉,情况就有改善
引用: 引用 2 楼 BEYONDMA 的回复:
你有驱动的源码吗?你得看看在分辨率调高了之后,显示驱动当中都做了什么事情,是不是有碰到声音的IO口
查过了,没有用到声音IO口,新加的八根线原来没有用到
可否告知你用的 Audio Codec and Touch ADC 用的是哪一顆 Chip.
還可否告知你原來所 clone 的 BSP, 原始線路圖中, VD16 ~ VD23 是接去做什麼了, 還是單純地 floating.
Paul, Chao @ Techware
引用: 引用 9 楼 paul_chao 的回复:
可否告知你用的 Audio Codec and Touch ADC 用的是哪一顆 Chip.
還可否告知你原來所 clone 的 BSP, 原始線路圖中, VD16 ~ VD23 是接去做什麼了, 還是單純地 floating.
Paul, Chao @ Techware
Audio Codec 为WM9711
Touch直接到2440
原始線路圖中, VD16 ~ VD23 是设为output, 且 floating
24-bits display 可能是用 4 bytes 來儲存一個 pixel, 故其資料量是 16-bits 的兩倍
不知是不是 Audio DMA 發生 Underrun 的錯誤, 而程式碼又沒處理好, 建議你可將 display pixel clock 先減半試試看, 是否 audio 就沒錯誤發生, 那就可以判別是不是這個錯誤, 不過螢幕會閃很厲害就是了.
當然這只是猜測, 或許會害你做白工
另外, 你在 7 樓描述 "还有一个现象:我把新加的八根管脚,即八根数据线屏蔽掉,情况就有改善", 不知何謂 "屏蔽", 還是你的硬體有 "互相干擾" 的問題, 那就不是軟體能解決的了.
Paul, Chao @ Techware
另外, 你在 7 樓描述 "还有一个现象:我把新加的八根管脚,即八根数据线屏蔽掉,情况就有改善", 不知何謂 "屏蔽", 還是你的硬體有 "互相干擾" 的問題, 那就不是軟體能解決的了.
就是把那八个管脚由VD重新改为output
这样的话,数据量没有变化,好像不像是DMA的问题
不知是不是 Audio DMA 發生 Underrun 的錯誤, 而程式碼又沒處理好, 建議你可將 display pixel clock 先減半試試看, 是否 audio 就沒錯誤發生, 那就可以判別是不是這個錯誤, 不過螢幕會閃很厲害就是了.
试过了,我把分辨率减半,这样数据量就减半了,但还是不行,不过还是很感谢你的!
郁闷了!
另:这位大哥在Techwell任职么?
引用: 引用 5 楼 hzdysymbol 的回复:
有可能是时序的问题,在音频驱动的OutputDMA中,最后起动DMA前加点延时5ms等待一下看看
加过了,没改善好像
你把 分辨率 (應該是 resolution 吧) 減半, 但若是 pclk 沒變, 那 vsync 是不是會加倍呢?? 這樣數據量可能就沒變了.
可否請你拿示波器 (Oscilloscope) 量一下 vsync 來做個確認, 也許是我的觀念錯誤.
Paul, Chao @ Techware
我后面要转成模拟信号的,所以vsync确定是60hz,否则无法显示,行数不变,分辨率 (即每行的点数) 減半,pclk也减半,所以数据量也减半了
关键是声音不是一直没有,而是一种不定态,有时放map3三四分钟就没声音了,有时开机声音完了就没声音了!
没思路了,难道就我一人碰到这种问题了?
再仔细看下音频驱动!
没有声音后发现上层给下来的数据正常吗?还是说根本就没有数据下来了
检查一下这个时候Codec的通路有没有问题?
检查一下这个时候Codec的通路有没有问题?
我打印串口信息,发现没声音时DMA就没有触发中断了!
你這種現象, 可能的原因可能有
1. I/O conflict -- 看來你已排除
2. DMA arbitrator fail -- 據你所稱, DMA 資料量減半後, 現象仍然不變, 故似也可排除
3. 硬體干擾, 如 VD16-VD23 與 AC97 的 clock, sync 等信號干擾 -- 請自行量測, 沒法幫你
4. Audio driver 不夠 robust, 一些 hardware error 沒去處理, ac97 沒法繼續工作. -- 軟體上的可能原因
建議你 build debug mode, 或是開始狂加 RETAILMSG, 尤其是 IST 的部份.
我之前遇過, 2440 的 audio driver IST 內有一個 while loop, 偶會跑不出來, 要加 retry times 的限制.
Paul, Chao @ Techware