UVC使用参考
1. 硬件相关¶
EVB板作为USB device使用时需断开跳线JP84并连接JP87,如下图:
同时检查背面的R456、R457这两颗电阻是否焊接(默认是没焊的),未焊接的话背面的mini-USB口无法使用,只能使用正面的USB type A接口。
2. 软件相关¶
2.1. kernel配置¶
在现有配置基础上增加uvc的配置可以通过以下两种方式:
-
方式一(推荐):直接修改当前平台的默认配置
如当前EVB板配置:pioneer3_ssc020a_s01a_defconfig
添加以下配置:
CONFIG_MEDIA_SUPPORT=m CONFIG_MEDIA_CAMERA_SUPPORT=y CONFIG_MEDIA_CONTROLLER=y CONFIG_VIDEO_DEV=m CONFIG_VIDEO_V4L2=m CONFIG_VIDEOBUF2_CORE=m CONFIG_VIDEOBUF2_MEMOPS=m CONFIG_VIDEOBUF2_VMALLOC=m CONFIG_MEDIA_SUBDRV_AUTOSELECT=y CONFIG_USB_GADGET=m CONFIG_USB_GADGET_VBUS_DRAW=2 CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 CONFIG_USB_GADGET_SSTAR_DEVICE=m CONFIG_USB_AVOID_SHORT_PACKET_IN_BULK_OUT_WITH_DMA_FOR_ETHERNET=y CONFIG_USB_LIBCOMPOSITE=m CONFIG_SS_GADGET=m CONFIG_USB_F_UVC=m CONFIG_USB_G_WEBCAM=m CONFIG_USB_WEBCAM_UVC=y CONFIG_MULTI_STREAM_FUNC_NUM=1
详见diff文件。
-
方式二
-
使用当前平台的默认配置
cd kernel;./list_config.sh make pioneer3_ssc020a_s01a_defconfig
-
添加配置:make menuconfig
-
media 框架配置
Device Drivers Multimedia support Device Drivers Multimedia support Cameras/video grabbers support Device Drivers Multimedia support Media Controller API
输出模块: media.ko videodev.ko v4l2-common.ko
-
usb Gadget 框架配置
Device Drivers USB support Device Drivers USB support USB Gadget Support
输出模块:usb-common.ko udc-core.ko
-
udc 驱动配置:该模块为硬件ip相关模块,视具体情况进行配置
Device Drivers USB support USB Gadget Support USB Peripheral Controller Sstar USB 2.0 Device Controller
输出模块:udc-msb250x.ko
-
gadget webcam
Device Drivers USB support USB Gadget Support USB Gadget Drivers Device Drivers USB support USB Gadget Support USB Gadget Drivers USB Webcam Gadget Device Drivers USB support USB Gadget Support USB Peripheral Controller Sstar USB 2.0 Device Controller Avoid short packet in bulk out with DMA for ethernet
输出模块:libcomposite.ko videobuf2-core.ko videobuf2-v4l2.ko
videobuf2-memops.ko videobuf2-vmalloc.ko
usb_f_uvc.ko g_webcam.ko
-
-
2.2. project配置¶
因目前没有添加UVC相关配置,所以编译uvc功能时需手动修改以下两个文件:
-
若是在kernel配置中使用方式二配置则需修改project/makefile文件,注释掉image目标下的
$(MAKE)linux-kernel
,以免重新编译kernel覆盖了之前手动编译的kernel; -
project/kbuild/customize/4.9.84/p3/dispcam/kernel_mod_list文件,添加以下内容:
media.ko videodev.ko v4l2-common.ko videobuf2-core.ko use_mi_buf=1 videobuf2-v4l2.ko videobuf2-memops.ko videobuf2-vmalloc.ko udc-core.ko libcomposite.ko usb_f_uvc.ko udc-msb250x.ko g_webcam.ko streaming_maxpacket=3072 streaming_maxburst=13 uac_function_enable=0
3. 测试APP¶
使用mi_demo进行测试,进入sdk/verify/mi_demo/alderaan目录执行make uvc
,编译成功后在sdk\verify\mi_demo\out\demo\app目录可以拿到“prog_uvc”程序,拷贝到板子上直接运行./prog_uvc
即可。不带参数默认使用pad0,可以使用“-a”指定sensor pad(如./prog_uvc -a1指定出pad 1的图像),使用prog_uvc-h
打印所有支持的参数。
prog_uvc启动后通过usb口连接pc机,在pc机上可使用potplayer(或其他类似的程序)打开此摄像头。
以potplayer为例,打开软件后通过ctrl+j快捷键打开摄像头,如下:
在视频预览区域点击右键,可在如下路径中的“捕获属性”页面里修改视频流参数