工具/软件:Linux
您好,
我们使用的是 AM572x 电路板。
Linux 内核版本- 4.4.41
如果 USB 数据包大小设置为3k、我们无法流式传输视频、但它适用于1K。
请告诉我任何想法。
报
Mahesh Kalmeshwar
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.
[引用 user="Mahesh kalmeshwar "]此 USB 设备模式是否作为 usb.30工作?
是的。
[引用 user="Mahesh kalmeshwar "]如果是,如何将驱动程序配置为使用 usb3.0接口。
g_webcam 小工具驱动程序支持 usb3.0超高速、您不需要任何软件配置更改、只要将 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或更低时工作正常。
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 总线数据包时没有发现任何明显的错误。
Mahesh、
请将下面附加的补丁应用到 TI v4.9内核、该内核解决了 streaming_maxpacket=3072问题。 它是主线内核的手动反向端口。
您好、Bin、
将很快更新。
在哪里可以获得 AM572x 的4.3.xx 内核版本、
您好、Bin、
重新发布并链接: https://e2e.ti.com/support/arm/sitara_arm/f/791/t/635175