急问:2440+wince5.0 碰到奇怪的音频问题!

lj107   2009-3-28 17:20 楼主

原来系统没有问题,将显示驱动由16bit该为24bit之后显示没有问题,但是奇怪的是音频竟然出问题了:
跑explore时有开机声音,但只是一开始响一下就没了,有时是开始正常,点触摸屏几下后或打开个文件夹后触摸点击声就没了!
该回16bit后一切正常!

这音频驱动怎么会和受显示驱动影响了呢?

望高手指点!

回复评论 (23)

是挺奇怪,关注


点赞  2009-3-28 21:57
你有驱动的源码吗?你得看看在分辨率调高了之后,显示驱动当中都做了什么事情,是不是有碰到声音的IO口
点赞  2009-3-29 07:59
谢谢,我再查查看
点赞  2009-3-29 12:17
关注
点赞  2009-3-29 18:49
有可能是时序的问题,在音频驱动的OutputDMA中,最后起动DMA前加点延时5ms等待一下看看
点赞  2009-3-29 21:47
首先确定声音播放的速度和效果是否正确,播放下mp3看看。然后增大WAV驱动线程的优先级,能改善效果。
点赞  2009-3-30 09:37
还有一个现象:我把新加的八根管脚,即八根数据线屏蔽掉,情况就有改善
点赞  2009-3-30 10:16
引用: 引用 2 楼 BEYONDMA 的回复:
你有驱动的源码吗?你得看看在分辨率调高了之后,显示驱动当中都做了什么事情,是不是有碰到声音的IO口


查过了,没有用到声音IO口,新加的八根线原来没有用到
点赞  2009-3-30 10:19
可否告知你用的 Audio Codec and Touch ADC 用的是哪一顆 Chip.

還可否告知你原來所 clone 的 BSP, 原始線路圖中, VD16 ~ VD23 是接去做什麼了, 還是單純地 floating.

Paul, Chao @ Techware
点赞  2009-3-30 10:53
引用: 引用 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
点赞  2009-3-30 11:12
24-bits display 可能是用 4 bytes 來儲存一個 pixel, 故其資料量是 16-bits 的兩倍

不知是不是 Audio DMA 發生 Underrun 的錯誤, 而程式碼又沒處理好, 建議你可將 display pixel clock 先減半試試看, 是否 audio 就沒錯誤發生, 那就可以判別是不是這個錯誤, 不過螢幕會閃很厲害就是了.

當然這只是猜測, 或許會害你做白工

另外, 你在 7 樓描述 "还有一个现象:我把新加的八根管脚,即八根数据线屏蔽掉,情况就有改善", 不知何謂 "屏蔽", 還是你的硬體有 "互相干擾" 的問題, 那就不是軟體能解決的了.

Paul, Chao @ Techware
点赞  2009-3-30 11:55
另外, 你在 7 樓描述 "还有一个现象:我把新加的八根管脚,即八根数据线屏蔽掉,情况就有改善", 不知何謂 "屏蔽", 還是你的硬體有 "互相干擾" 的問題, 那就不是軟體能解決的了.


就是把那八个管脚由VD重新改为output
这样的话,数据量没有变化,好像不像是DMA的问题
点赞  2009-3-30 12:32
不知是不是 Audio DMA 發生 Underrun 的錯誤, 而程式碼又沒處理好, 建議你可將 display pixel clock 先減半試試看, 是否 audio 就沒錯誤發生, 那就可以判別是不是這個錯誤, 不過螢幕會閃很厲害就是了.

试过了,我把分辨率减半,这样数据量就减半了,但还是不行,不过还是很感谢你的!
郁闷了!

另:这位大哥在Techwell任职么?
点赞  2009-3-31 10:14
引用: 引用 5 楼 hzdysymbol 的回复:
有可能是时序的问题,在音频驱动的OutputDMA中,最后起动DMA前加点延时5ms等待一下看看


加过了,没改善好像
点赞  2009-3-31 10:31
你把 分辨率 (應該是 resolution 吧) 減半, 但若是 pclk 沒變, 那 vsync 是不是會加倍呢?? 這樣數據量可能就沒變了.

可否請你拿示波器 (Oscilloscope) 量一下 vsync 來做個確認, 也許是我的觀念錯誤.

Paul, Chao @ Techware
点赞  2009-3-31 19:20
我后面要转成模拟信号的,所以vsync确定是60hz,否则无法显示,行数不变,分辨率 (即每行的点数) 減半,pclk也减半,所以数据量也减半了

关键是声音不是一直没有,而是一种不定态,有时放map3三四分钟就没声音了,有时开机声音完了就没声音了!

没思路了,难道就我一人碰到这种问题了?

再仔细看下音频驱动!

点赞  2009-3-31 20:12
没有声音后发现上层给下来的数据正常吗?还是说根本就没有数据下来了
检查一下这个时候Codec的通路有没有问题?
点赞  2009-3-31 22:29
检查一下这个时候Codec的通路有没有问题?

我打印串口信息,发现没声音时DMA就没有触发中断了!
点赞  2009-4-1 08:45
你這種現象, 可能的原因可能有
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
点赞  2009-4-1 10:03
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复