RK3288:BT656 RN6752调试

这篇文章主要想介绍一下再RK3288平台上面调试BT656 video in的注意事项。以RN6752转接芯片,android10平台为例进行介绍。

目录

1. RK3288 VIDEO INPUT 并口

2. 驱动调试

2.1 RN6752 驱动实现

①rn6752_g_mbus_config总线相关配置

②rn6752_querystd配置制式

③rn6752_g_skip_top_lines可以设置跳过头部的几行

2.2 DTS配置

①rn6752配置

②cif节点的配置

③pinctrl配置:

3. 注册安卓camera

4. 调试手段

4.1 开启数据流

4.2 抓图像

4.3 查看是否注册camera成功

5. 总结


1. RK3288 VIDEO INPUT 并口

RK3288主控支持MIPI接口和DVP并口的图像输入,有ISP控制器和CIF控制器(RK356X以后该控制器改称为VICAP),ISP可以处理MIPI和DVP的图像,CIF只能支持DVP并口,DVP接口只能支持BT656或者BT601,不支持BT1120,feature如下:

2. 驱动调试

以Android10  kernel4.19平台,RN6752 CVBS转BT656为例介绍一下驱动调试的关键配置。

2.1 RN6752 驱动实现

RN6752驱动同样基于V4l2框架接口实现,输入数据是CVBS PAL制或者NTSC制,一般分辨率是720*576或者720*480,隔行输入,RK3288的CIF控制器支持接收P制或者N制数据,并将其奇偶场进行合并输出。驱动代码基于v4l2框架,这里仅介绍一下几个关键接口:

①rn6752_g_mbus_config总线相关配置

参考配置如下,需要设置总线类型,极性等等

static int rn6752_g_mbus_config(struct v4l2_subdev *sd,struct v4l2_mbus_config *config)
{config->type = V4L2_MBUS_PARALLEL;config->flags = V4L2_MBUS_HSYNC_ACTIVE_HIGH |V4L2_MBUS_VSYNC_ACTIVE_LOW |V4L2_MBUS_PCLK_SAMPLE_RISING;return 0;
}

②rn6752_querystd配置制式

该接口需要设置N制或者P制类型,CIF控制器会从这个接口获取制式,并设置到控制器。注意的是BT601不需要设置这个接口。参考如下:

static int rn6752_querystd(struct v4l2_subdev *sd, v4l2_std_id *std)
{struct rn6752 *rn6752 = to_rn6752(sd);struct i2c_client *client = rn6752->client;dev_dbg(&client->dev, "%s(%d)\n", __func__, __LINE__);if(rn6752->cvstd_index){*std = V4L2_STD_NTSC;dev_info(&client->dev, "V4L2_STD_NTSC\n");}else{*std = V4L2_STD_PAL;dev_info(&client->dev, "V4L2_STD_PAL\n");}return 0;
}

③rn6752_g_skip_top_lines可以设置跳过头部的几行

该接口可以设置跳过行数,有的转接芯片传输的数据,有可能会先传几行异常的图像,直接收下会导致图像异常,这个接口可以设置跳过这些行,需要注意的是设置成偶数,不然有可能会导致奇偶场颠倒的问题。

#define RN6752_SKIP_TOP		0static int rn6752_g_skip_top_lines(struct v4l2_subdev *sd, u32 *lines)
{struct rn6752 *rn6752 = to_rn6752(sd);*lines = RN6752_SKIP_TOP;return 0;
}

其余接口与其他的camera sensor驱动基本一致,这里不再赘述。

2.2 DTS配置

dts关键配置主要有rn6752配置和iomux的引用。

①rn6752配置

rn6752注册为一个i2c设备,配置如下所示:

	rn6752: rn6752@2d {status = "okay";compatible = "richnex,rn6752";reg = <0x2d>;clocks = <&cru SCLK_VIP_OUT>;clock-names = "xvclk";//pwdn-gpios = <&gpio2 RK_PB6 GPIO_ACTIVE_HIGH>;rockchip,camera-module-index = <1>;rockchip,camera-module-facing = "back";rockchip,camera-module-name = "RN6752";rockchip,camera-module-lens-name = "Largan";port {rn6752_out: endpoint {remote-endpoint = <&dvp_in_fcam>;bus-width = <8>;pclk-sample = <0>;};};};

hsync-active/vsync-active不要配置,否则v4l2框架异步注册时会识别为BT601,pclk-sample/bus-width可选;pinctrl需要正确引用,后面介绍一下。

②cif节点的配置

基于v4l2框架同样需要配置pipeline,这个case的pipeline就是RN6752->CIF,CIF节点配置如下:

&cif_new {status = "okay";pinctrl-names = "default";pinctrl-0 = <&isp_mipi &isp_dvp_d2d9 &isp_dvp_d10d11>;port {#address-cells = <1>;#size-cells = <0>;dvp_in_fcam: endpoint@0 {// bus-type = <0>;remote-endpoint = <&rn6752_out>;vsync-active = <0>;hsync-active = <1>;pclk-sample = <1>;// bus-width = <8>;};};
};

其中最关键的是pinctrl对应的io需要正确引用。

③pinctrl配置:

pinctrl-0 = <&isp_mipi &isp_dvp_d2d9 &isp_dvp_d10d11>;

这里配置的pinctrl如上,需要特别注意,pinctlr需要跟硬件原理图接法一致,需要核对清楚gpio,如果配置错任何一个,都可能导致无法接收数据。这里的配置是d2-d11,有其他的场景可能是d4-d14或者d0-d7等等。

3. 注册安卓camera

驱动完成之后同样需要注册camera,这里注意xml的配置。主要配置如下:

如果成功注册camera,就可以直接使用camera的apk打开预览。

4. 调试手段

4.1 开启数据流

v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=720,height=576,pixelformat='NV12' --stream-mmap=4

4.2 抓图像

v4l2-ctl -d /dev/video0 --set-fmt-video=width=720,height=576,pixelformat='NV12' --stream-mmap=3 --stream-skip=4 --stream-to=/data/720x576_PAL_nv12.yuv --stream-count=5 --stream-poll

4.3 查看是否注册camera成功

dumpsys media.camera

5. 总结

希望这篇文章对RK3288 RN6752 CVBS的调试,对正在调试类似case的人有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/99171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【单片机】18-红外线遥控

一、红外遥控背景知识 1.人机界面 &#xff08;1&#xff09;当面操作&#xff1a;按键&#xff0c;旋转/触摸按键&#xff0c;触摸屏 &#xff08;2&#xff09;遥控操作&#xff1a;红外遥控&#xff0c;433M/2.4G无线通信【穿墙能力强】&#xff0c;蓝牙-WIFI-Zigbee-LoRa等…

基于WTMM算法的图像多重分形谱计算matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、WTMM算法概述 4.2、WTMM算法原理 4.2.1 二维小波变换 4.2.2 模极大值检测 4.2.3 多重分形谱计算 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部…

核货宝:服装店收银系统如何选择?收银系统选购指南!

对于各行各业而言&#xff0c;收银系统都是必备的工具。特别是对于像服装店这样的零售门店来说&#xff0c;选择一套适合的收银系统尤为重要。在选择收银系统时&#xff0c;有一些关键的技巧需要注意&#xff0c;以达到软硬件合理搭配、节省开支的目的。下面将分享四个选购服装…

【Java】微服务——微服务介绍和Eureka注册中心

目录 1.微服务介绍2.服务拆分和远程调用2.1.提供者与消费者 3.Eureka注册中心3.1.Eureka的结构和作用3.2.Eureka的结构3.3.搭建Eureka服务3.3.1.引入eureka依赖3.3.2.编写配置文件 3.4.服务注册及拉1&#xff09;引入依赖2&#xff09;配置文件3&#xff09;启动多个user-servi…

C语言编程实现只有一个未知数的两个多项式合并的程序

背景&#xff1a; 直接看题目把&#xff01;就是C语言写两个多项式多项式合并 题目要求&#xff1a; 1. 题目&#xff1a; 编程实现只有一个未知数的两个多项式合并的程序。如&#xff1a; 3x^26x7 和 5x^2-2x9合并结果为8x^24x16。 2. 设计要求 &#xff08;1&#xff09…

【kubernetes】带你了解k8s中PV和PVC的由来

文章目录 1 为什么需要卷(Volume)2 卷的挂载2.1 k8s集群中可以直接使用2.2 需要额外的存储组件2.3 公有云 2 PV(Persistent Volume)3 SC(Storage Class) 和 PVC(Persistent Volume Claim)4 总结 1 为什么需要卷(Volume) Pod是由一个或者多个容器组成的&#xff0c;在启动Pod中…

JavaScript中的模块化编程,包括CommonJS和ES6模块的区别。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 模块化编程概述⭐ CommonJS 模块⭐ ES6 模块⭐ 区别⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、…

git的基础操作

https://blog.csdn.net/a18307096730/article/details/124586216?spm1001.2014.3001.5502 1&#xff1a;使用场景 SVN&#xff0c;如果服务器里面的东西坏掉了&#xff0c;那么就全线崩盘了。 1:基本配置 git config --global user.name “luka” (自己的名字就行) git co…

一篇短小精悍的文章让你彻底明白KMP算法中next数组的原理

以后保持每日一更&#xff0c;由于兴趣较多&#xff0c;更新内容不限于数据结构&#xff0c;计算机组成原理&#xff0c;数论&#xff0c;拓扑学......&#xff0c;所谓&#xff1a;深度围绕职业发展&#xff0c;广度围绕兴趣爱好。往下看今日内容 一.什么是KMP算法 KMP&#x…

ARM-day5作业

.text .global _start _start: 1、设置GPIOE、GPIOF寄存器的时钟使能 RCC_MP_AHB4ENSETR[4]->1 0x50000a28 LDR R0,0x50000a28 LDR R1,[R0] ORR R1,R1,#(0x3<<4) STR R1,[R0]2、设置PE10、PF10、PE8管脚为输出模式 GPIOE_MODER[21:20]->01 0x50006000…

Windows环境下下载安装Elasticsearch和Kibana

Windows环境下下载安装Elasticsearch和Kibana 首先说明这里选择的版本都是7.17 &#xff0c;为什么不选择新版本&#xff0c;新版本有很多坑&#xff0c;要去踩&#xff0c;就用7就够了。 Elasticsearch下载 Elasticsearch是一个开源的分布式搜索和分析引擎&#xff0c;最初由…

基于SVM+TensorFlow+Django的酒店评论打分智能推荐系统——机器学习算法应用(含python工程源码)+数据集+模型(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境方法一方法二 安装其他模块安装MySQL 数据库 模块实现1. 数据预处理1&#xff09;数据整合2&#xff09;文本清洗3&#xff09;文本分词 相关其它博客工程源代码下载其它资料下载 前言 本项目以支…

C++对象模型(7)-- 数据语义学:成员变量偏移值、地址

1、成员变量偏移值 &#xff08;1&#xff09; 成员变量偏移值&#xff0c;就是指这个成员变量的地址离对象首地址偏移了多少字节&#xff0c;这个偏移值在编译完成后是不变的。 class Base { public:int b_i;int b_j; };int main() {Base base;printf(" b_i的偏移值:%…

计算机专业毕业设计项目推荐14-文档编辑平台(SpringBoot+Vue+Mysql)

文档编辑平台&#xff08;SpringBootVueMysql&#xff09; **介绍****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以及模式&#xff0c;在编写的…

Linux 基金会分叉 Terraform,正式推出 OpenTofu

Linux 基金会宣布推出 OpenTofu&#xff0c;这是一个 Terraform 的开源替代方案&#xff0c;并且分叉自 Terraform。OpenTofu 原名 OpenTF&#xff0c;为所有人提供了一个在中立治理模式下的可靠的开源替代方案。 Terraform 是 HashiCorp 开源的一个安全和高效的用来构建、更改…

内网渗透——哈希传递

文章目录 哈希传递1. 概念1.1 LM1.2 NTLM 2. 原理3. 利用3.1 hash传递浏览上传文件3.2 hash传递获取域控RDP 4. 总结 哈希传递 哈希传递攻击&#xff08;Pass The Hash&#xff09;是基于 NTLM 认证缺陷的一种攻击方式&#xff0c;攻击者可以利用用户的密码哈希值来进行 NTLM …

提升微信小程序MAU,这些方法你需要落地执行

面对激烈的微信小程序竞争,如何提升微信小程序的月活跃用户量(MAU)是每个小程序运营者需要思考的问题。经过分析,提升微信小程序MAU可以从以下几个方面着手。更多提升微信小程序MAU相关&#xff0c;可某薇找我名字。 提升微信小程序MAU 第一,丰富小程序功能,提升用户黏性。可以…

flutter开发实战-video_player插件播放抖音直播实现(仅限Android端)

flutter开发实战-video_player插件播放抖音直播实现&#xff08;仅限Android端&#xff09; 在之前的开发过程中&#xff0c;遇到video_player播放视频&#xff0c;通过查看video_player插件描述&#xff0c;可以看到video_player在Android端使用exoplayer&#xff0c;在iOS端…

笔记34:转置卷积 Transposed Convolution 的由来

注&#xff1a;该文章为视频课的笔记补充 视频课&#xff1a;转置卷积&#xff08;transposed convolution&#xff09;_哔哩哔哩_bilibili 更详细的推导在&#xff1a;抽丝剥茧&#xff0c;带你理解转置卷积&#xff08;反卷积&#xff09;_逆卷积-CSDN博客 a a a 补充1…

九大装修收纳空间的设计,收藏备用!福州中宅装饰,福州装修

如果房子面积不大&#xff0c;收纳设计就显得非常重要。其实装修房子中很多地方都可以做收纳&#xff0c;九大空间每一处都可以放下你的东西&#xff0c;让你摆脱收纳烦恼。 收纳空间少的话&#xff0c;装修完后住久了怕会乱成一窝&#xff0c;因此装修的时候&#xff0c;收纳…