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扩展协议功能验证相关推荐

  1. 迅为STM32MP157开发板入门教程之外设功能验证

    一.硬件连接 1 电源的连接 请使用开发板自带的 12V 电源连接开发板的 POWER 插座,如图所示. 2 控制台(console)串口 使用数据线连接开发板的 J8 到 PC 机的串口,在这里 J ...

  2. 全志T507开发板去掉IO扩展芯片,保留扩展引脚功能

    飞凌嵌入式推出的OKT507-C作为一款广受欢迎的开发板拥有丰富的接口资源,而实际上OKT507-C的CPU引脚资源是比较紧缺的,那么它是如何实现这么丰富的接口资源呢? 答案就是飞凌使用了一个IO扩展 ...

  3. 1-51单片机开发板介绍(所讲内容,功能介绍)

    教程资料 链接:https://pan.baidu.com/s/142JRSPisQO2Cu6VZ2Y5YrQ 密码:eom0 今天算是测试好了自己的51开发板,这是学习51单片机的第一篇文章,所以就 ...

  4. 在鸿蒙开发板上使用MQTT协议、OneNET实现第一个物联网项目

    通常来说,一个物联网产品应当包括设备.云平台.手机APP.我将在鸿蒙系统上移植MQTT协议.OneNET接入协议,实现手机APP.网页两者都可以远程(跨网络,不是局域网的)访问开发板数据,并控制开发板 ...

  5. XILINX开发板KCU105使用aurora协议---上

    1.KCU105 KCU105是XILINX 基于Kintex ultrascale系列的FPGA 开发板,提供丰富的扩展接口,如SFP/SFP+,网口,HDMI和4路SMA连接器的GTH端口,PMO ...

  6. ARM裸机的知识点总结---------10、解决X210开发板软开关按键问题( 引脚功能复用)

    Author: 想文艺一点的程序员 自动化专业 工科男 再坚持一点,再自律一点 CSDN@想文艺一点的程序员 来自朱有鹏嵌入式的学习笔记 目录 1.X210开发板的软启动电路详解 2.为什么要软启动 ...

  7. 【数字系统】简单逻辑电路设计:与非门/逻辑门 Quartus II 环境/Verilog 语言/编程+仿真+开发板/FPGA/CPLD/EDA

    一. 实验要求 1. 实现二输入与非门电路以及其他简单门电路: 2. 在Quartus II 环境下,运用Verilog HDL 语言进行编程开发,并完成对电路工作情况的仿真模拟: 3. 完成配置程序 ...

  8. 树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践

    本博文介绍采用Thonny+MicroPython和umqtt.simple库MQTTClient类的对象方法编制树莓派Pico W无线开发板MQTT协议通信程序,将Pico W无线开发板.电脑或An ...

  9. Firefly AIO-3399Pro C开发板交叉编译OpenCV 3.4.10及FFmpeg、x264等依赖库,实现视频播放等功能

    文章目录 前言 一.开发部署环境 二.安装前的相关包下载及环境准备 1. Qt交叉编译环境搭建 2.安装环境所需依赖包 3. 交叉编译OpenCV所需x264.FFmpeg等依赖库 3.1 nasm编 ...

最新文章

  1. 图灵赠书——程序员12月书讯
  2. 如何转换和输出超大整数(64位)
  3. 面试干货——年底干货大放送,你准备好了吗?
  4. 对于七段数码数字模型进行改进:一个关键的数字1的问题
  5. 这些赛道设计的点子,不让用太可惜了 | 赛道审核环节
  6. 通过WMIC命令远程打开远程计算机的远程桌面(Remote Desktop)功能
  7. fileviewfinder.php,Laravel在FileViewFinder.php中查找视图的错误处理程序
  8. ureport2 mysql_Ureport2 安装,配置及问题详解
  9. linux在生活中的应用例子,LINUX操作系统在教师学生日常生活中的应用(全).docx
  10. Pandas中Series和DataFrame的索引
  11. Oracle PL/SQL中的循环处理(sql for循环)
  12. Android技术专家 高焕堂 推荐这本书
  13. 快速理解Java的三种代理模式
  14. java 插件开发教程_Eclipse插件开发的详细教程
  15. cad卸载不干净_一款极其好用的卸载神器:Geek Uninstaller,再也不怕软件卸载不干净!...
  16. 甲方在IT信息化中的项目管理
  17. python 返回列表长度_Python通过len函数返回对象长度
  18. 方法重写和重载的规则
  19. intellij no executable code found at line
  20. 新研博美反式环辛烯-三乙二醇-氨基,TCO-PEG3-Amine可用于在活化剂(如EDC或DCC)或活化酯(如NHS酯)存在下通过稳定的酰胺键衍生羧基

热门文章

  1. 请不要 “妖魔化” 外包
  2. 姜小白的Python日记Day10 装饰器
  3. Windows 11 安装 Matlab 2022a 保姆级教程
  4. 生活不够精彩?因为你少了这些智能家居产品
  5. 老婆反问我:“是不是也算个凤凰男啊?”
  6. 网络正常,浏览器显示代理服务器没有响应怎么办?
  7. U8固定资产最重要的数据表
  8. 天翼云服务器硬盘怎么挂载,用s3fs挂载天翼OOS到服务器
  9. 【博学谷学习记录】超强总结,用心分享 | 【Lunux】Manjaro手动升级icu依赖库安装MySQL以及Navicat
  10. lq到底是什么意思_LQ网络用语是什么意思?