工具/软件:Linux
大家好、
我只想了解一些有关内核的信息。 USB 小工具枚举失败。 为此、我使用 VISION SDK 内核交叉检查主线内核。
我知道 VISION SDK 内核是围绕 TI SOC 构建的。
1->他们是否对适用于 TI SOC 的 USB 主线内核中的 VISION SDK 内核进行了任何更改?
2->等时端点的 USB dwc3小工具模式是否已测试? 如何知道等时端点工作?
此致、
Ganesh
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
大家好、
我只想了解一些有关内核的信息。 USB 小工具枚举失败。 为此、我使用 VISION SDK 内核交叉检查主线内核。
我知道 VISION SDK 内核是围绕 TI SOC 构建的。
1->他们是否对适用于 TI SOC 的 USB 主线内核中的 VISION SDK 内核进行了任何更改?
2->等时端点的 USB dwc3小工具模式是否已测试? 如何知道等时端点工作?
此致、
Ganesh
Ganesh
>> 1->他们是否对适用于 TI SOC 的 USB 主线内核中的 VISION SDK 内核进行了任何更改?
除了通过 debugfs 接口启用 DRD 角色切换外、主线驱动程序对 USB 驱动程序没有 TI 特有的更改
>>2->是否测试了等时端点的 USB dwc3小工具模式? 如何知道等时端点工作?
在主机模式下已验证等时传输、在小工具模式下未验证。
此致
Ravi
尊敬的 Ravi B (711789),
内核版本- 4.4.
Vision SDK - 02_12
UVC 器件的 USB 小工具模式。
对于小工具大容量存储、端点81被分配、dwc3 (core.c)中488d0000 USB 端口的 IRQ 475被分配、当我们连接到主机时、它们被触发并且 ISR 正在被调用、但当我们转到 UVC 时、 当我们运行演示 UVC-Gadget 应用程序时、IRQ 为475、其中 EP81和 EP82不会触发 IRQ。 在主机端、USB 器件没有为 UVC 枚举。
从主线内核4.4到 VISION SDK 4.4内核、他们的批次更改是他们的。
在 dwc3 - gadget.c 文件中、函数 dwc3_gadget_pullup 对于 vision SDK 中的 dwc3修订版本具有某种变通办法。
我已在 USB 源代码中放置调试日志并使用 ftrace 进行交叉检查。 当我们使用 UVC 时、它无法传递 dwc3_gadget_pullup。
[93.539140][debug] dwc3_set_mode:mode:0x00000002 insmod /lib/modules/4.4.23-00012-g84a3125-dirty/kernel/fs/configfs/configfs.ko insmod /lib/modules/4.4.23-00012-g84a3125-dirty/kernel/drivers/usb/gadget/libcomposite.ko insmod /lib/modules/4.4.23-00012-g84a3125-dirty/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko insmod /lib/modules/4.4.23-00012-g84a3125-dirty/kernel/drivers/usb/gadget/function/usb_f_uvc.ko [97.7267101] configfs-gadget 小工具: UVC_FUNCTION_BUNCit [44.731792][调试]在 USB_EP_AutoConfig 中[44.738046][调试] EP->TYPE = 3 desc->wMaxPacketSize = 16 [调试] desc->bEndAddressAddress = 80 [调试][44.7490799][debug] desc->bMaxPacketSize = 44.7682]][DEBUG [DEBUG [44.7683][DEBUG [DEG [DEBUG [44.732473173]<tendpointc-> d][DEBUG [DEBUG [DEG [DEBUG [44.732473173][1EP][DEBUG [DEBUG [DEBUG [DEBUG [DEBUG [DEG [DEBUG [DEBUG gd->bEndpointAddress1 = 82 [44.778864][调试] drivers/USB/gadc3/gadget.c:dwc3_gadget_enable_IRQ # UVC-gadget -d -u /dev/video1 [44.804838]错误:调度 while:UVC-gadget/1011/0x00000002 [dwvideo_rac video_rdc_hw3_decomines1256] dwc3_gadget_enable_IRQ [45.060563][debug] dwc3_gadget_pullup:变通办法 [45.065559]错误:原子调度:V4L_id/619/0x00000002 [45.071504]链接的模块:USB_f_UVC videobbuf2_alloc msg composite libxxfs/619_0x00000002 [45.071504]链接在 vid_vid_vid_vid_vid_cpuc 中:vdcpu_c4中:vdcpu_clud_cpu_clud_cpu_core_p4 p4 p4 p4 v w o 4.4.4.23-00012-g84a3125-脏#44 [45.124480]硬件名称:通用 DRA72X (平展器件树) [45.130597]背板: [45.133078][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c) [45.140680] r7:c09426d4 R6:20070013 r5:00000000 r4:c096ce4c [ 45.146404][ ](show_stack)从[ ](dump_stack+0x8c/0xa0) [ 45.153660][ ](dump_stack)从[ ](__schedule_bug+0x54/0x64) [45.161259] r7:c09426d4 r6:c093ee00 r5:ee68cc00 r4:00000000 [45.166981][ ](__schedule_bug)从[ ](__schedule+0x55c/0x668) [45.174755] r5:ee68cc00 r4:ef639e00 [45.178363][ ](__schedule)从[ ](schedule+0x54/0xc4) [45.185439] r10:ed377b44 r9:00000000 r8:ff9c74 r7:c0942100 r6:ecc31c6c r5:ef6373c0 [ 45.193342] r4:ecc30000 [ 45.195896][ ](计划)从[ ](schedule_timeout+0x118/0x1ac) [45.203669] r5:ef6373c0 r4:ef6373c0 [45.207279][ ](schedule_timeout)从[ ](WAIT_TO_COMON+0x90/0x140) [45.215576] R8:00000002 r7:ecc30000 R6:ed377b44 R5:ed377b48 R4:0000000a [45.222351][ ](WAIT_for_common)、来自[ ](WAIT_for_Complete_Timeout+0x14/0x18) [ 45.231519] R9:00000000 R8:ed377810 r7:55332209 R6:ed37788c R5:00000000 R4:ed377970 [ 45.233959][ ](WAIT_for_Complete_TIMEOUT)从[ ](dwc3_gadget_pullup+0x110/0x308 [dwc3]) [45.249610][ ](dwc3_gadget_pullup [dwc3])从[ ](USB_FUNCTION_ACTIVE_0xCC/0xe0 [libcompositic]) [45.260437] R10:ecc31f5c R9:eec023b8 R8:00000000 r7:ed377970 R6:60070013 R5:ee601288 [45.268340] R4:ee60122c [45.270920][ 45.270920][ ](USB_function_activate [libcomposer])、来自[ ](UVC_FUNCTION_CONNECT+0x1c/0x3c [USB_F_UVC]) [45.282356] r7:ee762540 R6:ecfba000 R5:ecfba000 R4:ee60122c [ 45.288089][ ](UVC_FUNCK_CONNECT [USB_f_UVC])、来自[ ](UVC_v4l2_open+0x60/0x70 [USB_f_UVC]) [ 45.298566] R5:ecfba000 R4:ecf0bf80 [ 45.302186][ ](UVC_v4l2_open [USB_f_UVC])从[ ](v4l2_open+0xa4/0x108) [45.310744] r7:ee762540 r6:ecfba050 r5:ee762540 r4:ecfba000 [45.316465][ ](v4l2_open)从[ ](chrdev_open+0xac/0x180) [45.323303] r7:ee762540 r6:ee6471b0 r5:ecf0bac0 r4:c06e9f78 [45.329525][ ](chrdev_open)从[ ](do_dentry_open+0x1e0/0x300) [ 45.337386] R8:00000000 r7:ee6471b0 R6:c0123d58 R5:ee762548 R4:ee762540 [ 45.344159][ ](do_dentry_open)从[ ](vfs_open+0x60/0x88) [45.351584] R9:eec023b8 R8:00000000 r7:00000000 R6:ecc31eb0 R5:ee762540 R4:ecc31eb0 [45.356404][ ](vfs_open)从[ ](path_openat+0x17c/0xfb0) [45.366742] R5:00000000 R4:00020000 [ 45.370349][ ](path_openat)从[ ](DO_filp_open+0x6c/0xd0) [ 45.377861] R10:00000000 R9:ecc30000 R8:c000fc84 r7:00000001 R6:ecc31f5c R5:ecc31eb0 [ 45.385761] R4:00000003 [ 45.388315][ ](do _filp_open)从[ ](do_sys_open+0x118/0x1dc) [45.396000] r7:fff000 r6:ed191000 r5:ffffff9c r4:00000003 [45.401719][ ](do sys_open)从[ ](sys_open+0x20/0x24) [ 45.408883] r9:ecc30000 r8:c000fc84 r7:00000005 r6:00000000 r5:b6f7ace0 r4:00000000 [ 45.416703][ ](sys_open)从[ ](RET_FAST_SYSCALL+0x0/0x34)
而对于大容量存储来说、这是完美的工作方式。
[56.408287][debug] dwc3_set_mode:mode:0x00000002 insmod /lib/modules/4.4.23-00012-g84a3125-dirty/kernel/drivers/usb/gadget/function/usb_f_mass_storage.ko [58.545084] Mass Storage function,version:2009/09/11 [58.550256] LUN:可移动文件:(无介质) 16+0中的16+0记录 输出了 USB_EP_AutoConfig [58.611639]中的[调试] [58.615934][调试] EP->type = 2 desc->wMaxPacketSize = 0 [58.61161357] [调试] desc->bendpointAddress = 80 [ 58.628EP][benddesc-> 调试 MaxPacketSize = 58.5485485485][bended][bendedrendedr]-5485485485485485485[ded][bend[bend]->[dedrendedrend[5485485end]->[dedr]->[dedrendedrend[dedr]-5485485485485485 = 0 [58.650189][debug] desc->bEndpointAddress1 = 1 [58.656670][debug] drivers/USB/dwc3/gadget.c:76.3_gadget_enable_IRQ [58.664167][debug] pullc3_gadget_dwup:权变措施 [76.297528] dwgadgs-dw4351] :[dwgadget <config-status<dw405.6>degr<dw405.3g][dwgadgadgadg_g_g_gadget [dwgadgades<<<<<<<dw245>dw245>dw24gadg 7[76.441833] [调试]小工具->状态:7.
您能否检查 dwc3代码并验证权变措施。
此致、
Ganesh
尊敬的 Ravi B (711789),
VISION_SDK 中的 rules.make
MAKCONFIG?=tda2ex_evm_linux_all
内核提交/标记
标签:PROCESSOR-SDK-LINUS-Automotive-3.01.00.03 或 提交 ID:91222fb
arch/arm/boot/dts/dra72-evmcommon.dtsi &USB1{ - DR_MODE ="OTG"; + DR_MODE ="主机"; }; &USB2{ - DR_MODE ="主机"; + DR_MODE ="外设"; };
您需要启用生动的测试驱动程序、内核的默认配置将在 configfs 中支持 USB 小工具和 UVC。
内核中的虚拟视频测试驱动程序 地点: ->设备驱动程序 ->多媒体支持(media_support [=y]) ->介质测试驱动程序(V4L_TEST_DRIVERS [=y]) -> VIDEO_VIDEO [=m]
重建内核并复制 SD 卡中的模块。
您需要测试应用程序来测试您是否可以使用以下应用程序
https://github.com/madscientist42/uvc-gadget
使用 arm-linux-gnueabihf-gcc 工具链进行交叉编译。 在 rootfs 中复制 UVC-Gadget 二进制文件。
将下面的命令复制到一个脚本中以设置 configfs。 复制 rootfs 主目录中的脚本。
#configfs.sh mount -t debugfs debugfs /mnt/ sleep 1 echo "device">/mnt/488d0000.usb/mode modprobe -v configfs modprobe -v libcomposite CD /sys/kernel/config/usb_gadget mkdir G1 cd G1 echo "0x1d6b"> idVendor echo "0x0104">idProduct mkdir strings/0x409 echo "0123456789"> strings/0x409/serialnumber "TI echo"。 > strings/0x409/manufacturer echo "UVC gadget"> strings/0x409/product modprobe -v USB_f_uVC mkdir functions/uvc.usb0 mkdir configs/C.1 mkdir configs/c.1/strings/0x409 echo "Video"> configs/c.1/echo /dir/0x409/configuration strings 120 > configs/c.1/Maxpower uvc.usb0/control/header/h s/uvc.usb0/streaming/uncompressed/u/360p mkdir functions/ns/lfs/.com/cat/lds/n uvc.usb0/control/ class functions/s./ld/n./lds/s.n Functions/uvc.usb0/streaming/uncompressed/u/360p/dwFrameInterval 6666 1000000 5000000 EOF mkdir functions/uvc.usb0/streaming/header/h cd functions/uvc.usb0/streaming/header/h ln -s ./../uncompressed/u ./../class/fs ln -s ./../header/h cd ./../class/hs ln -s ./../header/h .488d0000.usb"./../../control cd .cd././config./ln s functions/uvc.usb0 echo s c.1/ uDC
准备好卡后、请按照以下步骤生成内核错误。
sh configfs.sh
在您运行脚本时,您将看到视频设备节点(ls /dev/video 可能为零[默认的 video10和 video11将为其])
调制探针生动
[252.974209] Vivid-000:使用单平面格式 API [252.985202] Vivid-000:V4L2捕获器件注册为 video1 [252.997470] Vivid-000:V4L2输出器件注册为 video2 [253.011800] Vivid-000:V4L2捕获器件注册为 vibi0、支持原始和 V32BI 切片 [253.0000] V4L2输出器件注册为 vbi1、支持原始和切片 VBI [253.050850] Vivid-000:V4L2捕获器件注册为 swradio0 [253.062216] Vivid-000:V4L2接收器件注册为 radio0 [253.078478] Vivid-000:V4L2发送器器件注册为 radio1
/uvc-gadget -u /dev/video0 -v /dev/video1
运行脚本后、您会遇到错误。
注:确保将 OTG USB 电缆连接到 USB 端口2 (设备)和主机 PC。
注意:在 PC 端、如果一切正常、您将获得视频0节点。 如果您的主机 PC 是 Ubuntu、则只需安装 luvcview。 并在运行 UVC-Gadget 应用程序后运行 luvcview 应用程序。
请查看以下链接:
github.com/.../gadget-testing.txt
您需要的任何帮助、只需执行 ping 操作、我将尝试尽快做出响应。
此致、
Ganesh
e2e.ti.com/.../uvc_2D00_fixes.7zGanesh
此外、请检查您是否有修复(随附)。
并挑选最新的 UVC-Gadget 主设备?
git.ideasonboard.org/uvc-gadget.git
此致
Ravi