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.

[参考译文] Linux/AM5726:USB 视频流在3KB 数据包大小下失败

Guru**** 2586805 points
Other Parts Discussed in Thread: AM5726

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/617295/linux-am5726-usb-video-stream-fails-with-3kb-packet-size

器件型号:AM5726

工具/软件:Linux

您好,

我们使用的是 AM572x 电路板。

Linux 内核版本- 4.4.41

如果 USB 数据包大小设置为3k、我们无法流式传输视频、但它适用于1K。

请告诉我任何想法。

Mahesh Kalmeshwar  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mahesh、

    我需要更多信息来了解您的用例。
    AM57x USB 处于主机模式还是器件模式?
    如何指定3k 数据包大小? 请描述测试方法的确切步骤/命令。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bin、
    它处于设备模式。
    将驱动程序网络摄像头传递参数加载为 STEASE_maxpacket=3062时。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mahesh、

    此功能直到 TI v4.9内核才能实现、因此请使用最新的处理器 Linux SDK v4.0来实现此功能。

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

    您好、Bin、

    此 USB 设备模式是否用作 USB.30?

    如果是、如何配置驱动程序以使用 usb3.0接口。

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

    [引用 user="Mahesh kalmeshwar "]此 USB 设备模式是否作为 usb.30工作?

    是的。

    [引用 user="Mahesh kalmeshwar "]如果是,如何将驱动程序配置为使用 usb3.0接口。

    g_webcam 小工具驱动程序支持 usb3.0超高速、您不需要任何软件配置更改、只要将 usb3.0数据信号引脚引出至插座、它就应该起作用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们正在使用 EVM 板(AM572x)、此板默认用作 USB3.0 (Gadget)吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不可以、AM572x EVM 使用 USB2.0 Micro-B 插座、因此该板不支持超高速器件模式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bin、

    AM572x EVM 在不更改硬件的情况下、主机 USB3.0可配置为器件模式?
    如果答案是肯定的、请告诉我流视频所需的配置更改是什么。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    遗憾的是、其中一个原因是 EVM 上有一个 USB 集线器、并且 USB 控制器连接到集线器上行端口。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bin、

    感谢您提供信息。
    请告诉我、是任何支持 USB3.0 (小工具)的 TI EVM 板。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    目前、AM57x 没有任何支持超高速小工具模式的 TI EVM。 但请检查

    www.ti.com/.../j6evm5777

    上面的链接显示了一个支持 USB 超高速小工具模式的 J6 EVM。 EVM 使用 DRA74x 器件、该器件具有与 AM57x 上相同的 USB 控制器。

    请注意、J6 EVM 和 DRA74x 器件属于 TI 汽车业务。 此 Sitara 论坛不支持这些功能。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bin、
    感谢您提供信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bin、
    '将 usb3.0数据信号引脚引出至插座。'
    请详细告诉我如何执行此操作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    请告诉我需要参考哪些文档来进行更改"将 usb3.0数据信号引脚引出至插座"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Mahesh kalmeshwar "]向插座提供 usb3.0数据信号引脚。"
    请详细告诉我如何执行此操作。[/报价]

    我打算在您的设计中使用超高速微型 B 或微型 AB 插座、然后将超高速 USB Rx/TX 引脚从 AM5726连接到插座、以便您可以使用超高速。

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

    您好!

    PLZ 告诉我在哪里可以获得电路板原理图。

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

    箱、

    请参阅有关 此帖子的离线邮件。

    此致、Bernd

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

    [引用 user="Mahesh kalmeshwar "]通过 Plz、我可以了解从何处获取电路板原理图。

    我们没有任何 AM57x 电路板具有 USB 超高速端口、因此我们无法共享电路板原理图。

    USB 是点对点连接、您必须将所有 USB 相关引脚从 AM57x 连接到超高速插座、您可以遵循我们的 USB 设计检查清单、AM57x TRM 和 USB3.0规范。

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

    AM57xx 原理图检查清单位于 Wiki 上、网址为 :http://processors.wiki.ti.com/index.php?title=AM57xx_Schematic_Checklist

    此致、Bernd

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

    您好、Bin、

    这与 TI USB 小工具控制器(DWC3)的某些不一致之处有关、尤其是在3K 模式下。
    我们使用的是自定义小工具驱动程序、但通过在 TI 平台上使用默认 USB 小工具驱动程序执行以下步骤、类似的情形很容易重现。

    硬件:TI AM572X EVM
    SDK: software-dl.ti.com/.../ti-processor-sdk-linux-am57xx-evm-04.00.00.04-Linux-x86-Install.bin

    重现问题的步骤
    1.下载 TI Linux 内核源文件4.9.28 (SDK 链接上方)

    2.为小工具驱动程序应用补丁- webcam.c (支持 NV12格式)
    2.1应用补丁0001_TI_Gadget_driver_NV12_support.patch
    $ patch -p0 < 0001_TI_Gadget_driver_NV12_support.patch
    webcam 路径.c = ti-processor-sdk-linux-am57xx-evm-04.00.04/board-support/linux-4.9.28+gitAUTOINC+eed43d1050-geed43d1050/drivers/USB/gadget/legacy

    gadget 驱动程序的3.Compilation - webcam.c (预编译二进制附件-g_webcam.ko)
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- Subdirs=drivers/USB/gadget/legace/

    4.编译应用程序(附加的预编译二进制文件- uvcgadget)
    随附的4.1是经修改的应用程序源代码- UVC-Gadget.c (随附)
    4.2使用随附的 Makefile 来构建应用程序(更新 kernel_DIR、cross_compile、arch)
    4.3更新 UVC-Gadget.c 中 uvc.h 的路径
    4.3为 TI 平台交叉编译 UVC 小工具应用程序
    $制造

    5.将二进制文件复制到 SD 卡
    5.1将'g_webcam.ko'复制到/media/user/rootfs/lib/modules/4.9.28/kernel/drivers/usb/gadget/legacy
    5.2.复制'uvcgadget'可执行文件/media/user/rootfs/home/root
    5.3.将示例 NV12映像复制到/media/user/rootfs/home/root

    6.插入 SD 卡并打开 TI 平台 AM572X 的电源

    7.执行(工作场景1k 模式)
    $ modprobe libcomposite
    $ modprobe g_webcam
    $./uvcgadget -d /dev/videoX -i
    例如:$./uvcgadget -d /dev/video1 -I 1280x720.YUV
    $./uvcgadget -d /dev/video1 -i 640x360。yUV
    在流式 Linux PC 上运行 VLC (2.1.2)并以相应的 YUV 分辨率1280x720 (或) 640x360开始流
    结果:图像流

    8.执行(非工作场景3k 模式)
    $ modprobe libcomposite
    $ modprobe g_webcam
    $ modprobe g_webcam streaming_maxpacket=3062
    $./uvcgadget -d /dev/videoX -i
    例如:$./uvcgadget -d /dev/video1 -I 1280x720.YUV
    $./uvcgadget -d /dev/video1 -i 640x360。yUV
    在流式 Linux PC 上运行 VLC (2.1.2)并以相应的 YUV 分辨率1280x720 (或) 640x360开始流。
    结果:图像不流式传输

    问题:
    1:数据传输不会丢失、但主机报告每帧的最后一个数据包出现错误(主机控制器返回 EPROTO)。
    注:
    这仅在3k 模式下观察到。
    当在其他 ARM 平台(非 TI)上以3K 模式使用相同的应用程序和驱动程序代码时、不会出现此问题。

    2.将3062字节的映像作为 streaming_maxpacket 进行流式传输时在小工具 TI 平台上发出警告(附加的内核日志- warn.txt)。

    3.需要能够在 streaming_maxpacket=3072中运行驱动程序,因为摄像机支持3072数据包大小的全高清以实现最大吞吐量。

    查询:
    在加载带有参数 streaming_maxpacket 的驱动程序时、maxpacket 的限制是什么?
    当驱动程序加载了 maxpacket 2688或小于1K (例如:944)时、我们使用的自定义驱动程序可以流式传输720p、但设置为3062时失败。
    大多数分辨率在 maxpacket 为3062时失败、但在设置为默认值1024或更低时工作正常。

    e2e.ti.com/.../NV12_5F00_Support.tar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mahesh、
    我们的专家将会了解这一点。

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

    Mahesh、

    [引用 USER="Mahesh kalmeshwar ]这 仅在3k 模式下可见。
    当在其他 ARM 平台(非 TI)上以3K 模式使用相同的应用程序和驱动程序代码时、不会出现此问题。[/quot]

    您知道另一个 ARM 平台上的 USB IP 是什么吗? 它也是 dwc3吗?

    此测试中的 Linux 内核版本是什么?

    maxpacket=3072的其他 ARM 平台上的测试是否通过?

    我想了解 TI AM57x 与另一个 ARM 平台之间的差异、以缩小问题范围。

    [引用 user="Mahesh kalmeshwar ]1. 使用参数 streaming_maxpacket 加载驱动程序时、maxpacket 有哪些限制。

    需要更多地了解这一点。 我上次查看 USB 总线数据包时没有发现任何明显的错误。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bin、
    使用的平台:IMX6qp。
    USB IP:ChipIdea。
    Linux 内核:4.1.xx。
    在此平台中、3k (3072)数据包大小正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mahesh、

    从内核 v4.13开始、3072 maxpacket 大小问题在主线 dwc3驱动程序中似乎已经解决了。 我正在尝试找出与此问题相关的补丁、并将它们返回到 TI v4.9.28内核。 似乎有多个补丁。 我会随时向您发布。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mahesh、

    请将下面附加的补丁应用到 TI v4.9内核、该内核解决了 streaming_maxpacket=3072问题。 它是主线内核的手动反向端口。

    e2e.ti.com/.../0001_2D00_usb_2D00_dwc3_2D00_gadget_2D00_Correct_2D00_ISOC_2D00_DATA_2D00_PIDs_2D00_for_2D00_short_2D00_pac.patch.txt

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

    您好、Bin、

    将很快更新。

    在哪里可以获得 AM572x 的4.3.xx 内核版本、

    http://www.ti.com/tool/processor-sdk-am57x 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最新的 TI 内核位于 v4.9上。
    我从 kernel.org 获得了 v4.13内核。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你、bin。

    新补丁现在可以使用。  

    新查询:

    1.音频和视频是单独工作的。

    集成音频和视频不工作(同时)。

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

    很高兴这个问题得到了解决。 感谢您的更新。

    您能否创建有关此音频/视频集成问题的帖子? 什么是测试用例以及它是如何失败的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    重新发布并链接: https://e2e.ti.com/support/arm/sitara_arm/f/791/t/635175

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Mahesh、让我们结束这个话题、并将谈话移至新话题。