rockchip rk3588添加uvc及uvc,adb的复合设备

软硬件环境:

        软件基础:我目前拿到的rk3588 sdk :[email protected]:2222/Android_S/rk3588-

manifests.git
        硬件基础:RK3588 LP4X EVB 
        uvc_app: 从rv1126 sdk中rv1126_sdk/rv1126/external/uvc_app 目录移植而来。移植后,可以采集开发板板载摄像头图像(/dev/video11)获取实时视频数据V4L2_PIX_FMT_YUYV格式数据,通过v4l2的linux内核接口将数据通过uvc送给PC端的potplay作为实时预览画面。
1.首先在Android平台下,先通过configfs配置好uvc_app的运行环境,也就是依靠USB 的function fs来枚举出uvc的设备usb 设备类。
在设备上编辑 /vendor/etc/init/hw/init.rk30board.usb.rc添加已下内容:
on property:sys.usb.config=uvc && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/os_desc/use 1
    write /config/usb_gadget/g1/idProduct 0x0005

on property:sys.usb.config=uvc,adb && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/os_desc/use 1
    write /config/usb_gadget/g1/idProduct 0x0015

编辑/system/etc/init/hw/init.usb.configfs.rc 添加以下内容

on property:sys.usb.config=uvc && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "uvc"
    symlink /config/usb_gadget/g1/functions/uvc.gs6 /config/usb_gadget/g1/configs/b.1/f1
    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=uvc,adb && property:sys.usb.configfs=1
    start adbd

on property:sys.usb.ffs.ready=1 && property:sys.usb.config=uvc,adb && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "uvc_adb"
    symlink /config/usb_gadget/g1/functions/uvc.gs6 /config/usb_gadget/g1/configs/b.1/f1
    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
    setprop sys.usb.state ${sys.usb.config}
编辑/system/etc/init/hw/init.usb.rc 添加以下内容
on property:sys.usb.config=uvc && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 2207
    write /sys/class/android_usb/android0/idProduct 5
    write /sys/class/android_usb/android0/functions ${sys.usb.config}
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

# USB and uvc configuration, with adb
on property:sys.usb.config=uvc,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 2207
    write /sys/class/android_usb/android0/idProduct 15
    write /sys/class/android_usb/android0/functions ${sys.usb.config}
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}
2.执行指令:setprop sys.usb.config none;setprop sys.usb.config uvc
或者setprop sys.usb.config none;setprop sys.usb.config uvc,adb
使rk3588 进入uvc的device模式。
3.运行uvc_app &
移植与rv1126的uvc_app代码压缩包见链接: https://download.csdn.net/download/vc66vcc/87672803?spm=1001.2014.3001.5503
链接:https://pan.baidu.com/s/1Woj8gNoACzlubwArbW0gSg?pwd=r4bt 
提取码:r4bt
编译方法:k3588uvc/uvc_app/build/android/aarch64# ./make-Android.bash
uvc_app编译时一定要使用aarch64的架构编译,否则drm的内存分配及使用会异常。
uvc_app运行是可以跟参数,比如./uvc_app 1280 720 &
甚至在测试uvc功能时可以先简单的使用模拟的色条yuv数据来测试。
便可在pc的设备管理器中看到3588的uvc设备。
rockchip rk3588添加uvc及uvc,adb的复合设备_第1张图片
用过potplayer预览uvc

 rockchip rk3588添加uvc及uvc,adb的复合设备_第2张图片

 

你可能感兴趣的:(adb)