USB
笃行笔记
这个作者很懒,什么都没留下…
展开
-
USB/PCIE/ROOT COMPLEX & Windows/Linux Driver
好久没有写了总结一下工作多年所涉及的内容:1. USB Device: USB1.1, USB2.0, USB3.0, USB3.12. USB Host: xHCI3. PCIe: EP, Switch, Root Complex4. IOMMU5. APIC: IO-APIC, Local APIC软件(驱动)层面:1. Windows AVStream/BDA driver -- USB/PCI PCTV case (WHQL passed)2. Window.原创 2020-06-06 09:55:34 · 1232 阅读 · 0 评论 -
第二十八篇: 项目杂记
最近一直在学一些零零碎碎的东西,首先,将《鸟哥的 Linux 私房菜 -- 基础学习篇》过了一遍。因为有了Windows驱动,PCI/PCIe, USB, xHCI, Windows内核编程的基础,加上自己以前也动手写过Linux设备驱动, 研究过Makefile, KConfig, make menuconfig, GIT的部分内容鸟哥的这本书确实写得非常通俗易懂,帮原创 2014-10-24 15:18:07 · 2001 阅读 · 0 评论 -
第二十六篇:USB3.0高带宽ISO(48KBytes/125us)实战
USB3.1技术已经推出, 10Gbps的速率足以满足数据, HD视频传输的要求.要步入USB3.1的研发, 还得将USB3.0的基础打扎实.微软提供的SUPER MUTT只包含一个接口0, 其下有两个ALT, ALT 1与ALT 2, 分别包含了两对ISO IN/OUT端点, 不过, 只有ALT 2下的ISO OUT EP的bMaxBurst为1, 而其它三个ISO EP的b原创 2014-07-12 11:03:28 · 4614 阅读 · 1 评论 -
第二十五篇:找微软的麻烦--在微软提供的MUTT中发现的软件与硬件问题
Tools in the MUTT software packagehttp://msdn.microsoft.com/en-US/library/windows/hardware/dn376875(v=vs.85).aspx这几天在用微软的MUTT USB Device测试针对于USB3.0高带宽(high bandwidth, 48KB/125us) ISO原创 2014-07-09 13:34:17 · 2481 阅读 · 0 评论 -
第二十四篇:SuperSpeed/HighSpeed USB的ISO传输
WDK 7600.16385.1中关于USB ISO传输的驱动例子, 是针对于USB2.0与USB1.1的, 即HS与FS.这个例子没有非常特别之处, 但对于USB2.0的ISO传输的数据分割算法, 还是挺有意思的.根据MSDN参考文章:http://msdn.microsoft.com/en-us/library/windows/hardware/hh406225.asp原创 2014-07-07 11:19:01 · 10859 阅读 · 2 评论 -
第二十篇:DDR内存读写问题-USB Display项目
最近在实际的项目中碰到这样的问题:嵌入式系统DDR (RBC row, bank, columne), 每块1Gbit816, 两块由片选决定读写其中的一块.Memory controller通过AXI连接在SOC中.1.在I-CACHE没有使能的情况下, 通过MC访问DDR有三路TRAFFIC, 分别是取指令, CPU刷/写FRAME BUFFER, DMA取/读FRAM原创 2014-06-06 13:56:01 · 5001 阅读 · 1 评论 -
第十九篇:USB Audio/Video Class设备协议
众所周知, USB是一个成功的协议从USB1.0, USB1.1, USB2.0 480Mbps 到USB3.0 5Gbps, 再到最新的USB3.1 10Gbps, 不断在发展,不断在更新.同时, 对USB设备方面有所了解的软件,硬件工程师,也应该知道, USB包含了Storage, audio, video, hid, printer, 只要是做过USB的工程师,都或多或少对这几个类有原创 2014-06-04 11:34:06 · 12585 阅读 · 1 评论 -
第十八篇:融汇贯通--谈USB Video Class驱动
USB Video Class驱动是WINDOWS系统包含的一个针对于USB VIDEO 类的驱动程序.好多工程师都做过USB VIDEO设备端的开发, 主要的工作内容为: 使用FIRMWARE,或者LIINUX GADGET驱动程序, 构建USB VIDEO设备的描述符, 通过这些描述符的TOPOLOGY关系, 让系统了解,设备所支持的某些控制, 支持的视频格式, 系统驱动通过对这些原创 2014-05-30 10:58:00 · 3165 阅读 · 0 评论 -
第七篇:风起于青萍之末-电源管理请求案例分析(下)
第五篇:风起于青萍之末-电源管理请求案例分析(上)http://blog.csdn.net/u013140088/article/details/18180249第六篇:风起于青萍之末-电源管理请求案例分析(中)http://blog.csdn.net/u013140088/article/details/18218593原创 2014-01-14 13:14:25 · 3785 阅读 · 4 评论 -
第六篇:风起于青萍之末-电源管理请求案例分析(中)
续:1.这是什么类型的电源管理IRP,即他的MINOR FUNCTION是什么?2.哪个物理设备对象是该IRP的接收者?3.这种MAJOR/MINOR组合的IRP系统能够接收的处理时间范围是多少?4.而这个IRP到底又被阻塞了多少时间?5.为什么这个IRP会被阻塞?以上五个问题,我已经在上篇 --第五篇:风起于青萍之末-电源管原创 2014-01-13 17:09:33 · 3371 阅读 · 12 评论 -
第五篇:风起于青萍之末-电源管理请求案例分析(上)
前一阵子,软件组的同事向我提交了一系列的BSOD转储文件,原创 2014-01-12 21:50:14 · 5325 阅读 · 17 评论 -
第四篇:两利相权取其重-多个USB设备通用驱动程序的综合比较
PDIUSBD12CYPRESSWinUSB原创 2013-12-24 17:21:15 · 2626 阅读 · 0 评论 -
第三篇:知其然,知其所以然-USB音频设备的开发过程
最近原创 2013-12-19 15:05:42 · 11382 阅读 · 2 评论 -
第二篇:欲善其事,先利其器-USB3.0 Kernel debug extension
从第一份工作,主要从事USB dongle PCTV AVStream/BDA Windows驱动的开发,到现在从事USB3.0 device/xHCI host IP的开发,我的工作内容中,始终离不开一个词:通用串行接口--USB。所以,我的第一篇技术博文,也从USB开始谈起。USB3.0 IP的开发包括两大部分.第一大部分是遵照>协议的USB3.0 device I原创 2013-12-14 23:41:49 · 8165 阅读 · 3 评论 -
第三十二篇:Windbg中USB2.0调试环境的搭建
2011年的时候,为了开发USB Mass storage -- UASP (USB attached SCSI Protocol)的设备驱动程序,从米国买了两个USB2.0的调试小设备(如下图,每个似乎80美刀,贼贵的东西)。主要是用来替代串口115200波特率的响应速度慢,以便解决调试效率的问题。当时,根据WINDBG的HELP文档,而且也GOOGLE了一些网上的相关参考内容,原创 2014-12-24 10:50:45 · 3616 阅读 · 4 评论 -
第三十三篇:Win8.1中USB xHCI驱动的符号列表
在笔者的第四篇博文中提到过USB3.0 驱动栈的结构图:第四篇:两利相权取其重-多个USB设备通用驱动程序的综合比较http://blog.csdn.net/u013140088/article/details/17416415USB子系统的工作是一个长期的,也是系统的项目:长期是指,从USB1.0的1.5Mbps发展到现如今的USB3.1:10Gbps, 十多年的原创 2015-01-07 15:40:52 · 3744 阅读 · 0 评论 -
第四十七篇:Linux中的USB XHCI HOST TRANSFER RING的相关数据结构 (2)
struct xhci_segment {union xhci_trb*trbs;/* private to HCD */struct xhci_segment*next;dma_addr_t dma;/* Max packet sized bounce buffer for td-fragmant alignment */dma_addr_t bounce原创 2017-02-21 11:29:19 · 4173 阅读 · 4 评论 -
第四十六篇:Linux中的USB XHCI HOST TRANSFER RING的相关数据结构 (1)
记录相关数据结构之前,先上一张图,这样就基本一目了然了USB XHCI HOST有三种RING分别为COMMAND, EVENT 与TRANSFER这里所说的是TRANSFER RING一个RING可能由一个或者多个SEGMENT构成每一个SEGMENT则有多个TRB构成多个SEGMENT的链接是由LINK TRB来实现的,LINK就像一个单链表,最原创 2017-02-17 17:35:32 · 6410 阅读 · 4 评论 -
第四十五篇:USB Type-C Spec知识点摘要
1. 缩写Downstream-Facing Port (DFP)Upstream-Facing Port (UFP)Dual-Role Port (DRP)Electronically Marked Cable Assembly (EMCA) VCONNECTOR(VCONN)USB Type-C bus wire used to power the原创 2017-02-09 11:35:02 · 3659 阅读 · 1 评论 -
第四十四篇:重写U-BOOT中的xHCI host代码
U-BOOT的代码用来检测XHCI HOST IP集成成SOC中是否成功,太复杂。所以,根据XHCI SPEC,重新写了一份。下面这张图,就是总纲。原创 2017-01-20 16:36:49 · 1710 阅读 · 1 评论 -
第四十三篇:U-BOOT中,USB相关两个数据结构解说
不说没用的直接上两个重要的数据结构:第一个:struct xhci_ctrl {#ifdef CONFIG_DM_USBstruct udevice *dev;#endifstruct xhci_hccr *hccr;/* R/O registers, not need for volatile */struct xhci_hcor *hcor;struct原创 2017-01-05 17:30:19 · 2049 阅读 · 0 评论 -
第四十二篇:U-BOOT-USB 代码注释
最近都在看U-BOOT的代码首先,归类一下U-BOOT中的USB代码主要分为以下几种:1. 与具体的XHC相关的代码比如XHCI, UHCI, OHCI, EHCIXHCI是最新的USB HOST SPECEHCI针对USB2.0U/OHCI针对USB1.0/1.1我的精力主要在XHCI上面相关的代码包括:\drivers\usb\h原创 2017-01-05 16:09:50 · 1656 阅读 · 12 评论 -
第四十一篇:U-BOOT中的USB XHCI HOST代码错误
06到10年,都在做Windows WDM驱动,包括了AVSTREAM/BDA PCTV DRVIER for USB Dongle/PCI Card, USB Audio Class Lower Filter Driver.11年,做过一个USB General functional driver, 是KMDF Arch.15年的时候,做过一个中间件,上面是WDDM Graphic, 下原创 2016-12-13 11:29:13 · 2011 阅读 · 0 评论 -
第四十篇:USB Mass Storage Device & USB Attached SCSI Protocol
这几天在看USB3.1的bulk streaming协议。该协议是针对USB Attached SCSI Protocol Device Class而定的。bulk streaming协议太复杂,而USB Attached SCSI Protocol相对于USB Mass Storage Device Class也复杂了很多。造成的结果就是,类似USB-IF提出的USB 2.5 W原创 2016-12-01 14:31:06 · 8004 阅读 · 2 评论 -
第三十九篇:通过xHCI USB3.1 Gen 1 PC Certification认证,发文纪念
8月份通过了xHCI USB3.1 Gen 1 Embedded host certification. 中国第一家时隔三个月不到11月,通过了xHCI USB3.1 Gen 1 PC host certification. 中国第一家下了个目标:xHCI USB3.1 Gen 1 PC host certification.原创 2016-11-30 14:16:16 · 1114 阅读 · 0 评论 -
第三十八篇:USB3.0/3.1 xHCI host controller第二次开发(第一次彻底开发),基本完成,写博纪念
在前一家跨国IC大公司,曾经一度参与过USB3.0/3.1 xHCI host controller IP的开发,但后来被BOSS安排去做基于我们自己开发的USB3.0 Device controller IP的参考设计。其中一个是世界第一个通过USB-IF官方认证的USB3.0 Audio Device Reference Kit.另外一个是世界第一个通过USB-IF官方认证的USB3.原创 2016-10-21 21:34:05 · 7572 阅读 · 2 评论 -
第三十六篇:WinUSB调试实例
有人问我,前面列出x0: kd> lm vm winusbstart end module namefffff800`caab5000 fffff800`caace000 WinUSB (pdb symbols) c:\e\symcache\winusb.pdb\661781CAB404408原创 2015-01-08 11:30:18 · 7595 阅读 · 2 评论 -
第三十五篇:Win8.1中ucx01000驱动的符号列表
1: kd> lm vm ucx01000start end module namefffff801`698db000 fffff801`6990d000 ucx01000 (deferred) Image path: ucx01000.sys Image name: ucx010原创 2015-01-07 15:48:02 · 2625 阅读 · 0 评论 -
第三十四篇:Win8.1中USB3 hub驱动的符号列表
1: kd> lm vm UsbHub3start end module namefffff801`69a00000 fffff801`69a78000 UsbHub3 (deferred) Image path: UsbHub3.sys Image name: UsbHub3.原创 2015-01-07 15:45:09 · 3862 阅读 · 0 评论 -
第四十八篇:Hardware design: USB Type-C systems
该文是微软MSDN中的相关的摘要与注释https://msdn.microsoft.com/en-us/library/windows/hardware/mt745033(v=vs.85).aspxA typical USB Type-C system has these components:USB Dual-Role controller is capabl原创 2017-02-21 17:22:31 · 1217 阅读 · 0 评论