工具/软件:Linux
您好、Bin、
详细信息:主板 AM572x、Linux 4.3.xx
问题:观察- 两次连续调用 USB 小工具完成处理程序之间的延迟为~2000微秒。
查询:如何减少延迟。
重现步骤:使用 g_webcam 应用程序。
请告诉我是否需要更多信息?
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
您好、Bin、
详细信息:主板 AM572x、Linux 4.3.xx
问题:观察- 两次连续调用 USB 小工具完成处理程序之间的延迟为~2000微秒。
查询:如何减少延迟。
重现步骤:使用 g_webcam 应用程序。
请告诉我是否需要更多信息?
下面添加了一些更多详细信息
平台:TI-AM572x
Linux 内核版本:4.9.28
TI-SDK: ti-processor-sdk-linux-am57xx-evm-04.01.00.06-Linux-x86-Install.bin
问题:USB 视频完成处理程序回调。
完成处理程序延迟:
使用 g_webcam.ko (补丁程序和 ko,按附件)和 USB_f_uvc.ko (补丁程序和 ko,按附件)将视频流式传输到 PC (1280x720)。
观察完成处理程序调用的延迟为~4000 usecs、而在另一个 ARM 平台中、此延迟为~800 usecs。
附加的日志文件示例(UVC-COMP-handler-delay-logs.txt)。
这种延迟会导致前几层中的视频数据包堆积。
注:
在 drivers/USB/gadget/functions/UVC_VIDON.c 文件中为 UVC 完成处理程序函数(UVC_VIDOO_COMPLETE)测量的延迟。
API (DE_gettimeofday)用于测量延迟。
e2e.ti.com/.../2664.NV12_5F00_Support.tar
e2e.ti.com/.../uvc_2D00_comp_2D00_handler_2D00_delay_2D00_logs.txt
2.视频和 HID 并行
另一个问题是视频和 HID 复合视频并行运行。
我们有一个定制的复合小工具驱动程序;当视频数据包提交到 DWC3并并行提交 HID 数据包时、端点中的视频将被阻止(它不会触发完成回调函数)。 但 HID 可以继续将数据排队到其端点。
当然、不能提供示例代码。
从主机 PC (流式 PC)执行视频流重新启动、错误恢复、视频完成处理程序开始工作。 (但进一步的 HID 事件会破坏视频完成处理程序)
TI 是否提供了任何用于并行检查视频、HID 的示例代码?
请告诉我是否需要一些其他详细信息。
箱、
为问题2附加从 UDC (drivers/USB/gadget/UDC/core.c)获取的日志、
e2e.ti.com/.../tilogs_5F00_video_5F00_working_5F00_without_5F00_hid.txt
e2e.ti.com/.../tilogs_5F00_video_5F00_hid_5F00_not_5F00_working.txt
e2e.ti.com/.../mem_2D00_crash.txt
以上日志中的观察结果是、
1.当视频在没有 HID 事件的情况下进行流式传输时、会调用"USB_gadget_giveba回_request:ISOC_UDC"(为等时 EP 添加了调试消息)。 (请参阅 tilogs_video_working_without hid.txt)
在 对几个 HID 事件"USB_gadget_giveba回_request:Int_UDC"(为中断 EP 添加了调试消息)排队后、我们看到"USB_gadget_giveba回 e_request:isoC_UDC"没有被调用来请求视频。 (请参阅 tilogs_video_hid_not working.txt)
3.等时 EP 阻塞后、视频数据包在队列中堆积、等待 USB 请求缓冲区会导致内存崩溃。 (请参阅 mem-crash.txt)
注意:我们只有视频请求缓冲队列大小为1024。
莫尼卡
我终于在内核 v4.15-rc6上启动并运行了测试用例-使用 USB config 小工具来创建具有 UVC 和 HID 功能的 USB 复合小工具。 HID 功能是一种键盘、可在1ms 间隔内馈送击键。 我在日志中注意到 HID 使用2ms 间隔。
但我看不到 HID 数据包事件阻止 UVC 传输的问题、也看不到 UVC 视频流中的任何帧速率下降(我认为这是您尝试解决的问题)。
这是 ftrace 日志的一部分。