Android Qcom USB Driver学习(六)
眼图基础知识与详解
10分钟教会你看眼图
USB2.0 HUB眼图调试经验总结
一篇文章教你如何全面了解眼图测试!
预加重与去加重对眼图的影响
关于 USB 通信阻抗匹配的问题
硬件调试——眼图几个经典案例
眼图常见问题分析包含双眼皮的情况
PHY Tunning
devicetree:
qusb_phy0: qusb@1613000 {
compatible = "qcom,qusb2phy";
reg = <0x01613000 0x180>,
<0x003cb250 0x4>,
<0x01b40258 0x4>,
<0x01612000 0x4>;
qcom,qusb-phy-init-seq = <0xF8 0x80 QUSB_TUNE1 0x01613000+0x80 = 0x01613080
0xB3 0x84 QUSB_TUNE2
0x83 0x88 QUSB_TUNE3
0xC0 0x8C QUSB_TUNE4 (0x90 TUNE5)
0x30 0x08
0x79 0x0C
0x21 0x10
0x14 0x9C
0x9F 0x1C
0x00 0x18>;
...
kernel:
kernel/msm-4.19/drivers/usb/phy/phy-msm-qusb.c
qusb_phy_probe
qusb_phy_create_debugfs
qphy->root = debugfs_create_dir(dev_name(qphy->phy.dev), NULL);
debugfs_create_x8("tune1", 0644, qphy->root, &qphy->tune1);
debugfs_create_x8("tune2", 0644, qphy->root, &qphy->tune2);
qusb_phy_init
if (qphy->qusb_phy_init_seq)
qusb_phy_write_seq(qphy->base, qphy->qusb_phy_init_seq,
qphy->init_seq_len, 0);
/* If tune modparam set, override tune value */
if (qphy->tune1) {
writel_relaxed(qphy->tune1,
qphy->base + QUSB2PHY_PORT_TUNE1);
}
if (qphy->tune2) {
writel_relaxed(qphy->tune2,
qphy->base + QUSB2PHY_PORT_TUNE2);
}
...
override:
cd /sys/kernel/debug/1613000.qusb
tune1 tune2 tune3 tune4 tune5
echo 0xxF8 > tune1
Eye diagram

信号不可能每次高低电平的电压值都保持完全一致,也不能保证每次高低电平的上升沿、下降沿都在同一时刻。如图,由于多次信号的叠加,眼图的信号线变粗,出现模糊(Blur)的现象。所以眼图也反映了信号的噪声和抖动:
在纵轴电压轴上,体现为电压的噪声(Voltage Noise = 眼幅高与眼高之间的差值);
在横轴时间轴上,体现为时域的抖动(Jitter = 眼交叉比),太大会造成误码率增加,越小信号质量越好,发生误码的机率越低。
由于噪声和抖动,眼图上的空白区域变小。在除去抖动和噪声的基础上,眼图上空白的区域在横轴上的距离称为眼宽(Eye Width),在眼图上叠加的数据足够多时,眼宽很好的反映了传输线上信号的稳定时间;同理,眼图上空白的区域在纵轴上的距离称为眼高(Eye Height),在眼图上叠加的数据足够多时,眼高很好的反映了传输线上信号的噪声容限,同时,眼图中眼高最大的地方,即为最佳判决时刻。
套住模板只是眼图的最基本的要求,如果有覆盖到红色区域的,一般眼图的质量是最差的,可能更多的需要硬件去rework;如果出现双眼皮的情况,在上面转载的最后的两篇博客中写道,有可能是阻抗不匹配,也有可能有串扰需要加重处理。
tune1 HS output impedance from 45 Ω Nominal in FSLS mode
Tx swing等于输出电流乘以并联QCM/QCS USB 2.0 PHY 输出阻抗和接收器终端电阻的电阻,
在低速ls和全速模式fs下是电压驱动的,但在高速hs模式下是电流驱动的,所以仅能调整fsls的输出阻抗,
一般DP DM上有45Ω接地,USB线的特性阻抗为90Ω,想源端与USB线匹配就需要串电阻,具体阻值是要根据驱动器的输出阻抗来决定
tune2 HS output current to increase Vlogic_high level + HSTX slew-rate
slew-rate应该是影响眼图的斜率,tune1 + tune2 + tune4 结合可以调整眼图的质量,增加usb的驱动能力
tune3 Receiver sensitivity, adjust the squelch threshold to compensate for a USB bus series loss
接受灵敏度作用时PCB上传输线的长度的增加,信道的损耗会变大,眼图的高度会变小,但不是说所有走线越短越好。
tune4 add pre-emphasis to amplitude or no pre-emphasis
在高速信号传输中,信号链路对高频信号的衰减大于对低频信号的衰减,这就会导致高速信号中高频和低频之间巨大的幅度差,
反应在眼图上就是减小了眼高,并增大了Jitter(眼皮的厚度),预加重目的就是为了提升信号中的高频部分,尽量平衡高频和低频的分量
tune5 Disconnection voltage,the software does not override this register
这个就字面意思上,应该时不需要去tunning的吧
qcom,tune2-efuse-correction: The value to be adjusted from fused value for improved rise/fall times.
高通的有些平台可能会将生产时的fuse校准值写入 TUNE1 或 TUNE2 寄存器,所以还需要dtsi中做特殊处理
如果是qusb v2 driver的版本,支持一组单独的参数qusb-phy-host-init-seq在host模式下
眼图测试还分近端和远端,一般近端的要求会比远端的苛刻,并不说是只跟数据线的距离有关
以上是我的个人理解的基础知识,不同平台用的寄存器含义是不同的,所以基础原理我觉得差不多,具体问题具体平台需要具体分析。
Android Qcom USB Driver学习(六)的更多相关文章
- Delphi 调试连接 任意Android手机/平板/盒子(要安装Google USB Driver,并且还有USB的相关许多文章)
Delphi有时候无法连接调试一些手机,解决方案: 1.安装Google USB Driver 2.通过设备管理器查看手机或平板USB的VID,PID 3.修改你的电脑上的android_winusb ...
- CVE-2016-2502-drivers/usb/gadget/f_serial.c in the Qualcomm USB driver in Android. Buffer Overflow Vulnerability reported by #plzdonthackme, Soctt.
CVE-2016-2502-drivers/usb/gadget/f_serial.c in the Qualcomm USB driver in Android.Buffer Overflow Vu ...
- Android自动化测试之Monkeyrunner学习笔记(一)
Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyr ...
- Android Wear(手表)开发 - 学习指南
版权声明:欢迎自由转载-非商用-非衍生-保持署名.作者:Benhero,博客地址:http://www.cnblogs.com/benhero/ Android Wear开发 - 学习指南 http: ...
- Android群英传笔记——第六章:Android绘图机制与处理技巧
Android群英传笔记--第六章:Android绘图机制与处理技巧 一直在情调,时间都是可以自己调节的,不然世界上哪有这么多牛X的人 今天就开始读第六章了,算日子也刚好一个月了,一个月就读一半,这效 ...
- Android 音视频开发学习思路
Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 初级入门篇: Android 音视频开发(一) ...
- Head First Android --- Enable USB debugging on your device
1. Enable USB debugging on your device On your device, open “Developer options” (in Android 4.0 o ...
- Android命令行工具学习总结
15.setting命令 setting命令可以很方便的更改系统设置中的参数(如修改系统默认输入法) 安卓Settings模块浅析:https://www.jianshu.com/p/ed8508fe ...
- 移动设备 小米2S不显示CD驱动器(H),便携设备,MTP,驱动USB Driver,MI2感叹号的解决方法
小米2S不显示CD驱动器(H),便携设备,MTP,驱动USB Driver,MI2感叹号的解决方法 by:授客 QQ:1033553122 用户环境 操作系统:Win7 手机设备:小米2S 问题描 ...
- android的USB MTP && USB CDC/USBnet(ECM, NCM, ACM) && USB gardget
MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套媒体文件传输协议.早在智能手机普及前,数码相机和MP3播放器等都使用了MTP的前身PTP(Pictu ...
随机推荐
- springsecurity流程梳理与总结
springsecurity的基本使用方法学习完了,还是有些懵圈,再回过头来梳理一下流程以及使用情况 1-4.传一个User实体,new一个UserPasswordAuthenticationToke ...
- jfinal实验体会
这次实验我使用的是vue前端+jfinal后端,出现了非常多的问题,因此也花费了我不少时间.在一开始啃jfinal的文档的时候,我感觉jfinal是一个和springboot非常类似的框架,但是使用中 ...
- ios证书免费分享
首先,ios证书能不能分享给别人使用,能否用别人的证书打包呢? 这个问题的答案在技术上是肯定可以的,但是我要解释一下,技术上可以,不代表真的就可以这样做,为什么呢? 首先,假如用别人的苹果开发者账号的 ...
- python实例化对象过程
python实例化对象过程 Python中存在着一种静态的__new__()方法,通常在定义类时不会重写__new__()方法,于是Python在调用类时会自动寻找该类的继承对象(本例中为Object ...
- Jmeter函数助手7-timeShift
timeShift函数用于获取移动时间变化后的指定格式时间. Format string for DateTimeFormatter (optional) (default unix timestam ...
- 【SqlServer】01 概念及笔记
视频地址: https://www.bilibili.com/video/BV1qW411y7Bq 一.什么是数据库? 狭义定义: 数据仓库 广义定义: 对数据进行存储和操作的软件,和数据本身合并称为 ...
- “Vanilla” 在计算机科学和技术领域中的专业翻译
"Vanilla" 在计算机科学和技术领域中通常指的是某个系统或软件的"原始"或"基础"版本,即没有任何修改.扩展或定制的版本.它可以翻译为 ...
- 阿里提供的免费pypi镜像服务器
介绍页地址: https://developer.aliyun.com/mirror/pypi 具体的镜像地址: https://mirrors.aliyun.com/pypi/
- 【转载】 Parallel Computing in Python using mpi4py
原地址: https://research.computing.yale.edu/sites/default/files/files/mpi4py.pdf ====================== ...
- 【转载】 PyTorch下训练数据小文件转大文件读写(附有各种存储格式对比)
版权声明:本文为CSDN博主「Liekkas Kono」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接: https://blog.csdn.net/s ...