导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    T113 usb Gadget UVC,pc上没有枚举

    Linux
    1
    1
    60
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • G
      Gavin_he LV 2 最后由 编辑

      硬件: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 条回复 最后回复 回复 引用 分享 1
      • 1 / 1
      • First post
        Last post

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

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