软硬件环境:
软件基础:我目前拿到的rk3588 sdk :git@www.rockchip.com.cn: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
提取码: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设备。
用过potplayer预览uvc