This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TUSB7340:TUSB73x0超高速 USB 3.0 xHCI 批量/等时错误

Guru**** 2391415 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1219898/tusb7340-tusb73x0-superspeed-usb-3-0-xhci-bulk-isochronous-error

器件型号:TUSB7340

大家好  

我们使用的是 德州仪器(TI) TUSB73x0超高速 USB 3.0 xHCI 主机控制器(修订版02)。 每个 xHCI HC 可直接连接到3个 USB 摄像头。  

摄像机1:  1200*1200*16*30=691200000b/s ~ 700MB/s

摄像机2:  1200*1200*16*30=691200000b/s ~ 700MB/s

摄像机3:1920*1200*16*20=737280000b/s ~ 740Mb/s

1200 x 1200或1920 x 1200是图片分辨率(每张图片的像素数)。

16是 YUV 编码、每个像素需要16位。  

30/20为帧速率。

批量传输可以完成。  有时、我们会在内核消息中遇到以下错误、重现此错误并不容易、但我们会不时遇到这些错误。

[Thu Apr 6 20:28:53 2023] uvcvideo: Non-zero status (-71) in video completion handler.
[Thu Apr 6 20:28:53 2023] xhci_hcd 0000:77:00.0: Transfer error for slot 2 ep 6 on endpoint
[Thu Apr 6 20:28:53 2023] uvcvideo: Non-zero status (-71) in video completion handler.
[Thu Apr 6 20:28:53 2023] xhci_hcd 0000:77:00.0: Transfer error for slot 2 ep 6 on endpoint
此内核代码的错误消息:
您是否知道这个误差是什么意思?  我们如何避免这些错误?
如果我们将摄像机更改为使用等时传输。  我们只能启用一个等时摄像头。
来自第二个 USB 摄像头、将获得以下错误。
usb 10-2: Not enough bandwidth for new device state.
usb 10-2: Not enough bandwidth for altsetting 1
详细信息日志。
[176505.200808] uvcvideo: Device requested 46080 B/frame bandwidth.
[176505.200811] uvcvideo: Selecting alternate setting 1 (46080 B/frame bandwidth).
[176505.200812] uvcvideo: Device requested 46080 B/frame bandwidth.
[176505.200814] uvcvideo: Selecting alternate setting 1 (46080 B/frame bandwidth).
[176505.200860] xhci_hcd 0000:49:00.0: add ep 0x83, slot id 3, new drop flags = 0x0, new add flags = 0x81
[176505.200864] xhci_hcd 0000:49:00.0: xhci_check_bandwidth called for udev 00000000dfb1a7cc
[176505.200876] xhci_hcd 0000:49:00.0: // Ding dong!
[176505.201309] xhci_hcd 0000:49:00.0: Successful Endpoint Configure command
[176505.201469] xhci_hcd 0000:49:00.0: add ep 0x83, slot id 2, new drop flags = 0x0, new add flags = 0x81
[176505.201473] xhci_hcd 0000:49:00.0: xhci_check_bandwidth called for udev 000000004bbf2dcd
[176505.201483] xhci_hcd 0000:49:00.0: // Ding dong!
[176505.201542] usb 10-2: Not enough bandwidth for new device state.
[176505.201547] xhci_hcd 0000:49:00.0: xhci_reset_bandwidth called for udev 000000004bbf2dcd
[176505.201620] usb 10-2: Not enough bandwidth for altsetting 1
[176505.201625] xhci_hcd 0000:49:00.0: xhci_check_bandwidth called for udev 000000004bbf2dcd
[176505.330084] xhci_hcd 0000:49:00.0: xhci_hub_status_data: stopping port polling.
[176505.687380] uvcvideo: Allocated 64 URB buffers of 8x46080 bytes each.
[176505.687615] xhci_hcd 0000:49:00.0: ERROR no room on ep ring, try ring expansion
[176505.687629] xhci_hcd 0000:49:00.0: ring expansion succeed, now has 4 segments
我在此处附加了 lsusb -v 结果:  
lsusb -d 04b4:1103 -v
Bus 012 Device 040: ID 04b4:1103 Cypress Semiconductor Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.10
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0         9
  idVendor           0x04b4 Cypress Semiconductor Corp.
  idProduct          0x1103
  bcdDevice            0.00
  iManufacturer           1
  iProduct                2
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          218
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass         14 Video
      bFunctionSubClass       3 Video Interface Collection
      bFunctionProtocol       0
      iFunction               2
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      1 Video Control
      bInterfaceProtocol      0
      iInterface              2
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         1
        bmCapabilities                   0x01
          Still image supported
        wWidth                           1920
        wHeight                          1200
        dwMinBitRate                737280000
        dwMaxBitRate                737280000
        dwMaxVideoFrameBufferSize     4608000
        dwDefaultFrameInterval        1000000
        bFrameIntervalType                  1
        dwFrameInterval( 0)           1000000
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               1
        bMaxBurst              14
        Mult                    2
我的问题是:  
USB 3.0理论 带宽为5.0Gb/s、 10b/8b 编码、大小为4.0Gb/s  我理解会产生一些协议开销、  
但每台摄像机的成本~ 700Mbps、 3台摄像机的总传输速率低于3Gbps。  
为什么不能对3个摄像头使用等时传输?
是否有任何建议可以提高这3个摄像头的稳定性?
您碰巧有任何可以与我们分享的 TUSB73x0基准测试结果吗?  谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    可能受 PCIe 限制。 我来看看系统开发人员。

    此致

    布赖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brian

    感谢您的答复。 你是否能从系统团队那里得到任何反馈? 我 在此附上了有关 TUSB73x0的 lspci 信息。  链路速度为5GT/s

    ~$ sudo lspci -s 75:00.0 -vvv
    [sudo] password for dev:
    75:00.0 USB controller: Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller (rev 02) (prog-if 30 [XHCI])
    	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx+
    	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    	Latency: 0, Cache Line Size: 64 bytes
    	Interrupt: pin A routed to IRQ 26
    	Region 0: Memory at c5e00000 (64-bit, non-prefetchable) [size=64K]
    	Region 2: Memory at c5e10000 (64-bit, non-prefetchable) [size=8K]
    	Capabilities: [40] Power Management version 3
    		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
    		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
    	Capabilities: [48] MSI: Enable- Count=1/8 Maskable- 64bit+
    		Address: 0000000000000000  Data: 0000
    	Capabilities: [70] Express (v2) Endpoint, MSI 00
    		DevCap:	MaxPayload 1024 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
    			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
    		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
    			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
    			MaxPayload 256 bytes, MaxReadReq 512 bytes
    		DevSta:	CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
    		LnkCap:	Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <512ns, L1 <64us
    			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp-
    		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk+
    			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
    		LnkSta:	Speed 5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
    		DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR-, OBFF Not Supported
    		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
    		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
    			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
    			 Compliance De-emphasis: -6dB
    		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
    			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
    	Capabilities: [c0] MSI-X: Enable+ Count=8 Masked-
    		Vector table: BAR=2 offset=00000000
    		PBA: BAR=2 offset=00001000
    	Capabilities: [100 v2] Advanced Error Reporting
    		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
    		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
    		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
    		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
    		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
    		AERCap:	First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
    	Capabilities: [150 v1] Device Serial Number 08-00-28-00-00-20-00-00
    	Kernel driver in use: xhci_hcd

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    系统工程师建议您咨询 admin@usb.org、他们可能会有更好的解释。

    此致

    布赖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,大脑

    我已经向 admin@usb.org 和 techadmin@usb.org 发送了电子邮件、但尚未收到任何回复?  

    不确定您的系统团队是否有任何其他建议? 谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    他没有其他建议、我们稍等一下、看看 USB.org 会说什么。

    寄存器

    布赖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,大脑

    我从 USB.org 得到了回应、他们说:"很遗憾、我必须回到 TI。" 把它视为死区循环。  我们可以执行的下一步是什么? 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、让我来探究一下 。

    此致

    布赖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,大脑

    我们在两者之间使用 USB 3.0协议分析器进行批量传输、当问题发生时、我们捕获了大量错误。  HOSTerr. 然后重试。

     来源于 https://www.ti.com/lit/ds/symlink/tusb7340.pdf?ts=1684093075880&ref_url=https%253A%252F%252Fwww.google.com%252F

    我的 SAW TUSB73x0还提供7.5.1.65去加重和摆幅控制寄存器。 请查看7.5.1.65。

    您是否有任何工具可以调节这个去加重功能?  

    为什么会发生 HostErr、TUSB73x0是否会提供任何调试寄存器? 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们有工具、您可以尝试。 您能接受我的友谊申请吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我接受了。 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    已发送

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Brain、

     分析仪相连。 我们发现 TUSB 73x0设置主机错误位。

    来自 http://www.softelectro.ru/usb30.pdf USB 3.0规范、第8.5.1节 确认(ACK)交易数据包 (第241页)

    主机错误(HE)。 仅当 ACK TP 从主机发送到设备时、此字段才有效。 如果主机由于内部主机问题而无法接受有效的数据包、则应设置该位。 当主机设置此域时、它还必须设置用于非等时传输的重试数据包字段。

    我的问题是: 为什么 TUSB 73x0设置主机错误?  我们是否有一些状态 寄存器或调试寄存器、我们可以转储以找到详细信息?  谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    让我看看我们的系统.

    此致

    布赖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,大脑

    您是否获得任何反馈? 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    抱歉、您能等吗?  他将于下周一回来。

    此致

    布赖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brian

    有人在这方面得到了机会吗? 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    可能是 Linux 驱动程序问题、您是否曾尝试从 Linux 社区获得帮助?

    此致

    布赖恩