rp_rv1126开发板UVC XU扩展协议功能验证
enum XuCmd {CMD_TOOLS_CTRL_1 = 0x01, //RK工具通信指令,如loader切换功能
CMD_GET_CAMERA_VERSION , //获取摄像头版本
CMD_SET_CAMERA_IP, //获取网络IP
//CMD_START_CAMERA, //启动摄像头
CMD_SHUTDOWN_CAMERA, //关闭摄像头
CMD_RESET_CAMERA, //重启摄像头
CMD_SET_MOTOR_RATE = 0x06, //摄像头舵机/电机控制预留接口
CMD_SET_MOTOR_BY_STEPS = 0x07, //摄像头舵机/电机控制预留接口
CMD_SET_MOTOR_BY_USER = 0x08, //摄像头舵机/电机控制预留接口
CMD_STOP_MOTOR_BY_USER = 0x09, //摄像头舵机/电机控制预留接口
CMD_SET_EPTZ = 0x0a, //EPTZ功能使能控制
CMD_SET_H265 = 0x0b, //H265切换
CMD_MAX_NUM = CMD_SET_H265,
};
以上是厂商预留的控制命令。其中CMD_TOOLS_CTRL_1、CMD_GET_CAMERA_VERSION、
CMD_SET_CAMERA_IP、CMD_SET_EPTZ有进行相关处理,其余目前暂无功能。
SDK默认XU扩展指令只开启3条,我们需要修改到16个,可以参考下面补丁修改kernel进行适配。
kernel/drivers/usb/gadget/function/f_uvc.c
@@ -1002,7 +1002,7 @@ static struct usb_function_instance *uvc_alloc_inst(void)
struct uvc_camera_terminal_descriptor *cd;
struct uvc_processing_unit_descriptor *pd;
struct uvc_output_terminal_descriptor *od;
- struct UVC_EXTENSION_UNIT_DESCRIPTOR(1, 1) *ed;
+ struct UVC_EXTENSION_UNIT_DESCRIPTOR(1, 2) *ed;
struct uvc_color_matching_descriptor *md;
struct uvc_descriptor_header **ctl_cls;
int ret;
@@ -1052,31 +1052,32 @@ static struct usb_function_instance *uvc_alloc_inst(void)
od->iTerminal = 0;
ed = &opts->uvc_extension;
- ed->bLength = UVC_DT_EXTENSION_UNIT_SIZE(1, 1);
+ ed->bLength = UVC_DT_EXTENSION_UNIT_SIZE(1, 2);
ed->bDescriptorType = USB_DT_CS_INTERFACE;
ed->bDescriptorSubType = UVC_VC_EXTENSION_UNIT;
ed->bUnitID = 6; //UnitID和guidExtensionCode似情况修改
ed->guidExtensionCode[0] = 0xa2;
ed->guidExtensionCode[1] = 0x9e;
ed->guidExtensionCode[2] = 0x76;
ed->guidExtensionCode[3] = 0x41;
ed->guidExtensionCode[4] = 0xde;
ed->guidExtensionCode[5] = 0x04;
ed->guidExtensionCode[6] = 0x47;
ed->guidExtensionCode[7] = 0xe3;
ed->guidExtensionCode[8] = 0x8b;
ed->guidExtensionCode[9] = 0x2b;
ed->guidExtensionCode[10] = 0xf4;
ed->guidExtensionCode[11] = 0x34;
ed->guidExtensionCode[12] = 0x1a;
ed->guidExtensionCode[13] = 0xff;
ed->guidExtensionCode[14] = 0x00;
ed->guidExtensionCode[15] = 0x3b;
- ed->bNumControls = 3;
+ ed->bNumControls = 0x10; //和下面bmControls数组匹配,开启16个指令功能,uvc app中有
实现几个指令功能就开启几个,没实现的指令位置建议关闭,避免兼容问题
ed->bNrInPins = 1;
ed->baSourceID[0] = 2;
- ed->bControlSize = 1;
- ed->bmControls[0] = 7;
+ ed->bControlSize = 2; //支持2个字节,16条指令
+ ed->bmControls[0] = 0xff; //使能前8条指令
+ ed->bmControls[1] = 0xff; //使能后8条指令
ed->iExtension = 0;
kernel/drivers/usb/gadget/function/u_uvc.h
#include <linux/usb/video.h>
#define fi_to_f_uvc_opts(f) container_of(f, struct f_uvc_opts, func_inst)
-DECLARE_UVC_EXTENSION_UNIT_DESCRIPTOR(1, 1);
+DECLARE_UVC_EXTENSION_UNIT_DESCRIPTOR(1, 2);
struct f_uvc_opts {struct usb_function_instance func_inst;
@@ -54,7 +54,7 @@ struct f_uvc_opts {struct uvc_camera_terminal_descriptor uvc_camera_terminal;
struct uvc_processing_unit_descriptor uvc_processing;
struct uvc_output_terminal_descriptor uvc_output_terminal;
- struct UVC_EXTENSION_UNIT_DESCRIPTOR(1, 1) uvc_extension;
+ struct UVC_EXTENSION_UNIT_DESCRIPTOR(1, 2) uvc_extension;
struct uvc_color_matching_descriptor uvc_color_matching;
/*
RV1126/RV1109使用AUTO EPTZ功能,需将dts中的otp节点使能,evb默认配置中已将其使能:
&otp {status = "okay";
};
将上述配置修改之后,重新编译固件,烧录到开发板中。
待烧录成功,重启后,连接电脑.
使用大神提供的调试软件
我们使用EPTZ功能,文章最开始有描述
CMD_SET_EPTZ = 0x0a, //EPTZ功能使能控制
所以我们填入CS为10,点击打开,发送命令1,即可enableEPTZ功能。
rp_rv1126开发板UVC XU扩展协议功能验证相关推荐
- 迅为STM32MP157开发板入门教程之外设功能验证
一.硬件连接 1 电源的连接 请使用开发板自带的 12V 电源连接开发板的 POWER 插座,如图所示. 2 控制台(console)串口 使用数据线连接开发板的 J8 到 PC 机的串口,在这里 J ...
- 全志T507开发板去掉IO扩展芯片,保留扩展引脚功能
飞凌嵌入式推出的OKT507-C作为一款广受欢迎的开发板拥有丰富的接口资源,而实际上OKT507-C的CPU引脚资源是比较紧缺的,那么它是如何实现这么丰富的接口资源呢? 答案就是飞凌使用了一个IO扩展 ...
- 1-51单片机开发板介绍(所讲内容,功能介绍)
教程资料 链接:https://pan.baidu.com/s/142JRSPisQO2Cu6VZ2Y5YrQ 密码:eom0 今天算是测试好了自己的51开发板,这是学习51单片机的第一篇文章,所以就 ...
- 在鸿蒙开发板上使用MQTT协议、OneNET实现第一个物联网项目
通常来说,一个物联网产品应当包括设备.云平台.手机APP.我将在鸿蒙系统上移植MQTT协议.OneNET接入协议,实现手机APP.网页两者都可以远程(跨网络,不是局域网的)访问开发板数据,并控制开发板 ...
- XILINX开发板KCU105使用aurora协议---上
1.KCU105 KCU105是XILINX 基于Kintex ultrascale系列的FPGA 开发板,提供丰富的扩展接口,如SFP/SFP+,网口,HDMI和4路SMA连接器的GTH端口,PMO ...
- ARM裸机的知识点总结---------10、解决X210开发板软开关按键问题( 引脚功能复用)
Author: 想文艺一点的程序员 自动化专业 工科男 再坚持一点,再自律一点 CSDN@想文艺一点的程序员 来自朱有鹏嵌入式的学习笔记 目录 1.X210开发板的软启动电路详解 2.为什么要软启动 ...
- 【数字系统】简单逻辑电路设计:与非门/逻辑门 Quartus II 环境/Verilog 语言/编程+仿真+开发板/FPGA/CPLD/EDA
一. 实验要求 1. 实现二输入与非门电路以及其他简单门电路: 2. 在Quartus II 环境下,运用Verilog HDL 语言进行编程开发,并完成对电路工作情况的仿真模拟: 3. 完成配置程序 ...
- 树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
本博文介绍采用Thonny+MicroPython和umqtt.simple库MQTTClient类的对象方法编制树莓派Pico W无线开发板MQTT协议通信程序,将Pico W无线开发板.电脑或An ...
- Firefly AIO-3399Pro C开发板交叉编译OpenCV 3.4.10及FFmpeg、x264等依赖库,实现视频播放等功能
文章目录 前言 一.开发部署环境 二.安装前的相关包下载及环境准备 1. Qt交叉编译环境搭建 2.安装环境所需依赖包 3. 交叉编译OpenCV所需x264.FFmpeg等依赖库 3.1 nasm编 ...
最新文章
- 图灵赠书——程序员12月书讯
- 如何转换和输出超大整数(64位)
- 面试干货——年底干货大放送,你准备好了吗?
- 对于七段数码数字模型进行改进:一个关键的数字1的问题
- 这些赛道设计的点子,不让用太可惜了 | 赛道审核环节
- 通过WMIC命令远程打开远程计算机的远程桌面(Remote Desktop)功能
- fileviewfinder.php,Laravel在FileViewFinder.php中查找视图的错误处理程序
- ureport2 mysql_Ureport2 安装,配置及问题详解
- linux在生活中的应用例子,LINUX操作系统在教师学生日常生活中的应用(全).docx
- Pandas中Series和DataFrame的索引
- Oracle PL/SQL中的循环处理(sql for循环)
- Android技术专家 高焕堂 推荐这本书
- 快速理解Java的三种代理模式
- java 插件开发教程_Eclipse插件开发的详细教程
- cad卸载不干净_一款极其好用的卸载神器:Geek Uninstaller,再也不怕软件卸载不干净!...
- 甲方在IT信息化中的项目管理
- python 返回列表长度_Python通过len函数返回对象长度
- 方法重写和重载的规则
- intellij no executable code found at line
- 新研博美反式环辛烯-三乙二醇-氨基,TCO-PEG3-Amine可用于在活化剂(如EDC或DCC)或活化酯(如NHS酯)存在下通过稳定的酰胺键衍生羧基
热门文章
- 请不要 “妖魔化” 外包
- 姜小白的Python日记Day10 装饰器
- Windows 11 安装 Matlab 2022a 保姆级教程
- 生活不够精彩?因为你少了这些智能家居产品
- 老婆反问我:“是不是也算个凤凰男啊?”
- 网络正常,浏览器显示代理服务器没有响应怎么办?
- U8固定资产最重要的数据表
- 天翼云服务器硬盘怎么挂载,用s3fs挂载天翼OOS到服务器
- 【博学谷学习记录】超强总结,用心分享 | 【Lunux】Manjaro手动升级icu依赖库安装MySQL以及Navicat
- lq到底是什么意思_LQ网络用语是什么意思?