Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    T113 usb Gadget UVC,pc上没有枚举

    Linux
    1
    1
    736
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      Gavin_he LV 2 last edited by

      硬件:T113开发板;
      目标:想要在otg-usb口上模拟出uvc 摄像头设备;
      测试:

      • 1,系统默认otg-usb是ADB devce,在内核和tina linux上关闭了adb相关,otg-usb给Gadget uvc;

      • 2,参考如下官方资料
        147823a2-0bbb-4c62-804f-367fdf5b1295-image.png

      • 3,将官方命令整合成如下脚本uvc.sh

      #!/bin/sh
      mount -t configfs none /sys/kernel/config
      mkdir /sys/kernel/config/usb_gadget/g1
      
      echo "0x1f3a" > /sys/kernel/config/usb_gadget/g1/idVendor
      echo "0x100d" > /sys/kernel/config/usb_gadget/g1/idProduct
      
      #添加设备字符串
      mkdir /sys/kernel/config/usb_gadget/g1/strings/0x409
      echo "Tina"         > /sys/kernel/config/usb_gadget/g1/strings/0x409/manufacturer
      echo "UVC Cam"      > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
      echo "0123456789"   > /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber
      
      
      #添加 UVC function(最小化配置)
      mkdir -p /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0
      
      #添加最简单的一组 MJPEG 配置(测试用)
      mkdir -p /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p
      echo 1280 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/wWidth
      echo 720 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/wHeight
      
      echo 333333 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/dwFrameInterval
      echo 333333 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/dwDefaultFrameInterval
      echo 442368000 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/dwMinBitRate
      echo 442368000 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/dwMaxBitRate
      echo 1843200 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize
      
      mkdir /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/header/h
      ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/ /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/header/h/
      ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/header/h/ /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/class/fs
      ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/header/h/ /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/class/hs
      
      mkdir /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/header/h
      ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/header/h/ /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/class/fs/
      ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/header/h/ /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/class/ss/
      
      mkdir /sys/kernel/config/usb_gadget/g1/configs/c.1
      echo 0xc0 > /sys/kernel/config/usb_gadget/g1/configs/c.1/bmAttributes
      echo 500 > /sys/kernel/config/usb_gadget/g1/configs/c.1/MaxPower
      echo 0xc0 > /sys/kernel/config/usb_gadget/g1/configs/c.1/bmAttributes
      echo 500  > /sys/kernel/config/usb_gadget/g1/configs/c.1/MaxPower
      
      mkdir /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409
      echo "UVC Config" > /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409/configuration
      ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/
      
      ls /sys/class/udc/ | xargs echo > /sys/kernel/config/usb_gadget/g1/UDC
      
      • 4,在T113开发板上执行如上脚本,没有任何报错,但是pc上看不到设备枚举动作;
      root@TinaLinux:/opt# ./uvc.sh
      [INFO] Mounting configfs...
      [INFO] Creating gadget...
      [INFO] Setting device descriptors...
      [INFO] Creating UVC function...
      [INFO] Setting MJPEG 720p...
      [INFO] Creating headers...
      [INFO] Linking UVC function to configuration...
      [INFO] Enabling gadget...
      [   53.291067] configfs-gadget gadget: uvc: uvc_function_bind()
      [OK] UVC gadget created and enabled successfully!
      

      敬请指点。

      另外,参考小机做HID的例子,可以成功的枚举出hid keyboard 设备;用类似的方法做uvc却不行,为什么?
      有参考过如下帖子,没有找到答案....,先谢过,折腾了好久没有解决,期待指点迷津....
      链接文本

      1 Reply Last reply Reply Quote Share 1
      • 1 / 1
      • First post
        Last post

      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策