一次DEBUG经历
2009-06-20 13:57
225 查看
不久前在项目中遇到一个BUG,解决的过程不算复杂,但能说明一些问题。
项目背景:
在项目中我负责的保全模块中(这个以后也写写),当用户开关保全以及设定条件被触发时使用音频解码通道播放一段G726格式音频。
相关硬件:HI3510 ,WM8731 相关软件:音频解码播放代码,WM8731 driver
问题描述:测试人员发现有时会出现无声现象。
解决过程:
1.怀疑编码不当导致解码通道操作错误,检查代码后排除。
2.仔细观察问题发生状况,发现问题有如下特点,如果该板在启动后无声,则一直无声,而如果启动时声音正常则运行过程中不会出现无声现象。初步定位到系统初始化阶段。
3.检查应用程序初始化过程,无果,怀疑DRIVER出现问题。
4.用示波器观察HI3510 I2S输出通道,发现在有声和无声的情况下I2S总线上均有正常数据,怀疑驱动有时将WM8731初始化为静音,询问驱动开发人员得知静音接口未暴露给应用层,猜测错误。
5.因为I2S数据一直正确,可以判定应用层音频解码无误,问题出在DRIVER,但编写驱动的同事较忙,而WM8731驱动并不复杂,索性自己检查。
6.仔细检查驱动代码,并无逻辑错误,仔细阅读DATASHEET,在一个不起眼的地方有如下一句:
it is recommendded that between changing any content of Digital Audio Interface or Sampling Control Register that the active bit is reset then set
对照驱动代码,正好忽略了这一点,而系统的驱动恰恰加载了两次,才造成了音频接口出错出现无声,在设置sample rate 的地方关掉接口然后再打开,一切OK。
结论:一个59页的DATASHEET,被忽略了的两行造就了这个BUG,在万事俱备的情况下,细节决定成败。为了避免这样的隐患,在做的过程中尽量细心,不放过任何一个细节,。
项目背景:
在项目中我负责的保全模块中(这个以后也写写),当用户开关保全以及设定条件被触发时使用音频解码通道播放一段G726格式音频。
相关硬件:HI3510 ,WM8731 相关软件:音频解码播放代码,WM8731 driver
问题描述:测试人员发现有时会出现无声现象。
解决过程:
1.怀疑编码不当导致解码通道操作错误,检查代码后排除。
2.仔细观察问题发生状况,发现问题有如下特点,如果该板在启动后无声,则一直无声,而如果启动时声音正常则运行过程中不会出现无声现象。初步定位到系统初始化阶段。
3.检查应用程序初始化过程,无果,怀疑DRIVER出现问题。
4.用示波器观察HI3510 I2S输出通道,发现在有声和无声的情况下I2S总线上均有正常数据,怀疑驱动有时将WM8731初始化为静音,询问驱动开发人员得知静音接口未暴露给应用层,猜测错误。
5.因为I2S数据一直正确,可以判定应用层音频解码无误,问题出在DRIVER,但编写驱动的同事较忙,而WM8731驱动并不复杂,索性自己检查。
6.仔细检查驱动代码,并无逻辑错误,仔细阅读DATASHEET,在一个不起眼的地方有如下一句:
it is recommendded that between changing any content of Digital Audio Interface or Sampling Control Register that the active bit is reset then set
对照驱动代码,正好忽略了这一点,而系统的驱动恰恰加载了两次,才造成了音频接口出错出现无声,在设置sample rate 的地方关掉接口然后再打开,一切OK。
结论:一个59页的DATASHEET,被忽略了的两行造就了这个BUG,在万事俱备的情况下,细节决定成败。为了避免这样的隐患,在做的过程中尽量细心,不放过任何一个细节,。
相关文章推荐
- 一次Debug经历
- 一次难忘的ASP.NET DEBUG经历,按钮不能提交
- [Navicat for Mysql] Error 1452 一次神器的debug经历
- 用DELL的一次DEBUG惨痛经历(两天啊)
- 一次因“CST”时区协商问题导致数据库时间戳错误的 debug 经历
- 【软件测试_hw1】记一次debug的经历
- 一次随机crash的debug经历
- 记一次debug经历,基础的重要性
- 软件测试(一) 近期的一次debug的经历
- 记录一次iis发布的经历<compilation debug="true" targetFramework="4.0">报错,默认画面不起作用
- [转]一次有趣的Google面试经历
- 一次Ajax查错的经历(转自酷壳)
- 数据同步的一次经历
- 去YY欢聚时代的一次面试经历
- 一次windows程序消息分析的曲折经历
- 使用cpio命令导致系统几乎崩溃的一次经历
- 解决grub引导错误的一次经历
- 记一次内存溢出的分析经历——thrift带给我的痛orz
- 一次nmidahena.com/1.js 式sql 注入攻击的处理经历
- 记录一次http切换成https,并修改域名过程的坑自己的经历