我们公司GSM部门有个双模智能手机的项目。MTK平台和EVDO平台通过USB进行通信。结果在项目测试过程中发现,当MTK做HOST控制EVDO做Device时,HOST控制Device进行suspend和resume状态切换过程中发现状态出现故障。即设备进入suspend之后无法被唤醒。刚开始MTK认为是我们的问题。我们自己验证发现,该功能没有问题。于是让对方换PC做HOST验证。但是因为手机终端的特点和PC大不相同。因此MTK认为无法定位问题在他们。后来我们提供了串口打印设备状态的接口给他们,发现设备状态和现象是一致的。

MTK仍然不确信我们的终端驱动没有问题。本着能定位和解决问题的目的,就专门出差到深圳。经过两天的联调测试,终于发现MTK的HOST实现suspend和resume中的remote wake up不符合USB协议规范。在咨询公司的一位技术专家后,更加确认了。MTK工程师修改了HOST代码后再次测试,果然发现问题没有出现了。现在就只需要在MTK的质检部门经过验证测试就能最终关闭该问题。经过这个事情后,证明高通的底层驱动还是十分可靠的。

最新更新:

后来测试发现上次修改的办法似乎还是有点问题。这个时候我已经对HOST端处理USB协议规范性已经产生了怀疑。因此不主张从设备端的代码来分析问题了,我强烈要求对比USB分析仪日志,分析正常和异常情况,协议包的差异。可是问题有时候总会朝意料之外发展。分析仪好像无法正常工作了,怎么都不能抓到所需的数据包。在和MTK工程师邮件交流的过程中,我开始怀疑他们resume信号的时间是否符合规范的要求。MTK工程师后来反馈,他们这个时间是靠硬件来保证的,但似乎太过临界了。于是他认为用软件做了个信号冗余,从实际效果来看问题概率似乎降到了零。所以这也印证了我的猜想。而高通对该SR的回复也没什么新意,和我的意见一样,让我们提供USB协议包。本来我对这一块并不是很懂的,但这次借助这个机会把这块的代码和基本原理摸了一遍,对自己也是有益无害的。不过这次机会给我最大的锻炼是系统分析能力,至少在之前对这块不是很清楚的情况下能尽快分析出并定位问题。本来之前我对高通驱动部分还是有一丝怀疑的,不过现在我开始相信他们驱动的可靠性了。

usb 进入suspend_解决了USB中suspend和resume的一个问题 | 学步园相关推荐

  1. Java解决递归栈溢出_方法递归调用中java栈溢出的问题 及 解答 | 学步园

    为什么运行如下程序 , 方法sum2 不会导致栈溢出, 方法sum 会导致栈溢出? --------output----------- 32004000 java.lang.StackOverflow ...

  2. python float字节数_float型的数在内存中的表示 附:python3解析函数 | 学步园

    32为操作系统中float型的数是4个字节(32位),小数0.002122二进制格式如下: 00111011000010110001000101000001 左起第1位:是整个数的符号位,0正 1 负 ...

  3. java convert函数_自己实现 java中 Convert.toDouble(String str)处理函数 | 学步园

    今天在superWaba上看到Convert.toDouble(String str),由于底层问题比较大的数就出错,现在自己写了一个 程序中info()是我加的打印,可以去掉 java中 Conve ...

  4. matlab矩阵除以一个数字,matlab矩阵中每一行数除以一个数 | 学步园

    例如:用a中每一行数除以x中相对应的每一个数 x=[5 10 6 8 16 6 8 8 22 11]; a=[4 4 4 5 4 4 4 4 3 4 6 8 6 2 6 8 8 6 8 6 4 4 4 ...

  5. php变量名动态生成,PHP中动态创建变量名(可变变量) | 学步园

    PHP中,我们可以动态地创建一个变量名.例如,你想要使用与数据库查询得到的字段名称一致的变量名. 使用PHP中"可变变量"的语法,即在一个其值为你想作为变量名称的变量前面加一个$: ...

  6. java 上下键_用键盘的上下左右键控制JAVA SWING UI中的组件的移动等事件 | 学步园...

    用键盘的上下左右键控制JAVA SWING UI中的组件的移动等事件 import java.awt.*; import java.awt.event.*; import javax.swing.*; ...

  7. matlab 摄氏度符号怎么打,MATLAB中如何打角标和希腊字母 | 学步园

    声明:这是转载 很多时候都要在matlab画图的时候添加一些公式符号之类的,有一些特殊的字符并不能直接从键盘上输入,比如希腊字母等等.但是有想用,因为这样使图看起来漂亮而且容易理解. 例如:我想输入摄 ...

  8. php 数组下标初始化,php中如何初始化一个数组 | 学步园

    初始化一个数组一般有2种方法:一个是单独给数组中的元素赋值:还有一种是把所有的元素一起初始化. 下面简要介绍初始化数组的2种方法: 第一种方法: $a["color"]=" ...

  9. oracle index include,oracle中与索引相关的视图—all_indexes | 学步园

    ALL_INDEXES描述了与索引有关的信息,为了使部分字段的内容更准确,我们需要通过analyze或者dbms_stats包来收集与索引有关的统计信息(这部分字段标记为带*). 首先看一下官网给出的 ...

最新文章

  1. 一个新手上课的路程!!!
  2. 对于java的命名规范(标识符)
  3. 5. 最长回文子串——暴力法---动态规划解法---扩展中心法
  4. 科大星云诗社动态20220102
  5. 制作类似QQ截图软件
  6. python画樱桃小丸子_每天坚持画画|简笔画练习“樱桃小丸子”
  7. 语言认知偏差_我们的认知偏差正在破坏患者的结果数据
  8. C++:13---继承(单一继承、多重继承、多级继承、菱形继承、虚继承)
  9. STL之双向循环链表(List)的内部关系
  10. 【报告分享】2020中国短视频行业洞察报告.pdf(附下载链接)
  11. generatorConfig 指定列的java数据类型
  12. 写出更易懂的代码(一)
  13. iOS 证书, provision profile作用
  14. TCPIP详解 习题一
  15. solidworks电气元件3d库_丨软件丨如何提高电气配线的生产效率?
  16. MATLAB雷达信号处理
  17. VC6.0 TeeChart5.ocx注册
  18. 做IT精英还是IT民工? 从事IT只是个体力活
  19. (16)万能查询还是万恶查询?
  20. 从零开始安卓端相机功能开发(一)了解用什么去开发以及流程

热门文章

  1. 浙江工商大学计算机考试科目,浙江工商大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  2. 论文 | 图理论 | 2021年斯坦福大学Jiaxuan You博士论文《用图赋能深度学习》译读 摘要和感谢
  3. 《白帽子讲Web安全 》 随手记(一)
  4. 3月18日作业-监理师培训
  5. Django 实现搜索结果分页(筛选结果分页),以及优雅添加多个筛选条件
  6. php中文的正则表达式_php汉字正则表达式
  7. 为什么大数据使用相关关系而不是因果分析?
  8. 网页字体转换——实习僧
  9. 基于深度学习的图像隐写分析综述 阅读
  10. 【nacos】springboot @Value @NacosValue 使用时可能无效