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/TDA2EXEVM:有关 VISION SDK 内核的问题?

Guru**** 2589280 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/579882/linux-tda2exevm-question-on-vision-sdk-kernel

器件型号:TDA2EXEVM

工具/软件:Linux

大家好、

我只想了解一些有关内核的信息。 USB 小工具枚举失败。 为此、我使用 VISION SDK 内核交叉检查主线内核。

我知道 VISION SDK 内核是围绕 TI SOC 构建的。

1->他们是否对适用于 TI SOC 的 USB 主线内核中的 VISION SDK 内核进行了任何更改?

2->等时端点的 USB dwc3小工具模式是否已测试? 如何知道等时端点工作?

此致、

Ganesh

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

    我已通知 USB 专家。

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

    USB 专家没有回复。

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

    很抱歉耽误你的时间、我将对它们执行 ping 操作。

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

    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

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

    有更新吗?

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

    Ganesh

    此版本中的 UVC 小工具不支持功能。

    您能否发送重现问题的步骤以及 VSDK 版本的主要内核提交信息。  

    此致

    Ravi

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

    尊敬的 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

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

    您是否重现了此问题。 是的、我将获取最新的 UVC-Gadget 应用程序主站。 问题在 dwc3侧。

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

    我没有时间在我的设置中重现此问题。 我将在一两天内通知您。

    此致
    Ravi