RK3288:BT656 RN6752调试

news2024/10/3 0:32:34

这篇文章主要想介绍一下再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		0

static 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.coloradmin.cn/o/1071970.html

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

相关文章

【广州华锐互动】VR线上播控管理系统让虚拟现实教学效果更加显著

随着科技的不断发展&#xff0c;虚拟现实(VR)技术已经逐渐走进我们的生活&#xff0c;尤其在教育领域&#xff0c;VR技术的应用为学生提供了全新的学习体验。 广州华锐互动作为一家成立16年的老牌VR公司&#xff0c;开发了不少VR教学课件&#xff0c;包括物理、化学、农林、土木…

Compose Navigation用于Android多module项目最佳实践

Compose Navigation用于Android多module项目最佳实践 在本文中&#xff0c;我们将采取同一个项目并扩展它以实现最佳实践。该项目具有文章、设置和关于屏幕的抽屉导航。项目的输出如下所示&#xff1a; 当你有一个多屏幕的项目时&#xff0c;每个屏幕至少必须有自己单独的模…

如何查看电脑IP历史记录:几种电脑操作系统的实用指南

在日常使用电脑时&#xff0c;了解电脑的IP历史记录对于网络故障排查、网络管理和安全监控非常重要。无论您是使用Windows、Mac还是Linux操作系统&#xff0c;本文将为您详细介绍如何查看电脑IP历史记录&#xff0c;帮助您更好地管理和维护您的网络环境。 第一部分&#xff1a;…

C语言分支与循环语句

这篇文章简单总结一下C语言的分支和循环&#xff0c;分支结构可以用if、switch语句实现&#xff0c;循环语句可以用while、for、以及do-while语句实现&#xff0c;重点解说这四种语句。 一、C语言分支 1.if语句 if语句的基本结构为&#xff1a; if (条件表达式)执行语句&am…

vue3 配置生产和开发 非vite

首先在根目录创建.env.development和.env.production文件env文件随意 development文件配置 production文件配置 注意:有些需要配置名称是有要求的&#xff01; 通过process.env就能拿到我们的信息了&#xff0c;然后在pack配置启动

C++设计模式_07_Bridge 桥模式

文章目录 1. 动机&#xff08;Motivation&#xff09;2. 代码演示Bridge 桥模式2.1 基于继承的常规思维处理2.2 基于组合关系的重构优化2.3 采用Bridge 桥模式的实现 3. 模式定义4. 结构&#xff08;Structure&#xff09;5. 要点总结 与上篇介绍的Decorator 装饰模式一样&…

Go语言进阶------>init()函数

Init()包初始化 执行优先级 Init()函数的执行优先级比main()函数的执行优先级要高,也就是说程序会优先执行Init()函数之后再执行main()函数. 代码如下 package mainimport "fmt"func init() {fmt.Println("执行了Init()函数") }func main() {fmt.Println…

【OCR】合同上批量贴印章

一、需求 OCR算法在处理合同等文件时&#xff0c;会由于印章等遮挡导致文本误识别。因此在OCR预处理时&#xff0c;有一个很重要的步骤是“去除印章”。其中本文主要聚焦在“去除印章”任务中的数据构建步骤&#xff1a;“合同伪印章”的数据构建。下面直接放几张批量合成后效果…

存档&改造【04】二维码操作入口设置细节自动刷新设置后的交互式网格

因为数据库中没有数据无法查看设置效果&#xff0c;于是自己创建了个测试数据表&#xff0c;用来给demo测试 -- 二维码操作入口设置 create table JM_QR_CODE(QR_CODE_ID NUMBER generated as identity primary key,SYSTEM_ID NUMBER(20) not null,IS_ENAB…

PPT课件培训视频生成系统实现全自动化

前言 困扰全动自化的重要环节&#xff0c;AI语音合成功能&#xff0c;终于可以实现自动化流程&#xff0c;在此要感谢团队不懈的努力和韧性的精神&#xff01; 实现原理 请参照我的文章《Craneoffice云PPT课件培训视频生成系统》 基本流程 演示视频 PPT全自动 总结 过去实…

解读大模型(LLM)的token

当人们谈论大型语言模型的大小时&#xff0c;参数会让我们了解神经网络的结构有多复杂&#xff0c;而token的大小会让我们知道有多少数据用于训练参数。 正像陆奇博士所说的那样&#xff0c;大型语言模型为从文本生成到问题回答的各种任务提供了令人印象深刻的能力&#xff0c;…

css 动态点击效果

效果图 daima <body><div></div> </body> <style>div {background-color: rgb(220, 74, 98);width: 160px;height: 60px;border-radius: 40px;transition: all 0.2s linear;}div:active {transform: scale3d(0.92, 0.92, 1);} </style>

Apache RocketMQ远程代码执行

漏洞概述 Apache RocketMQ是一个分布式消息中间件&#xff0c;专为万亿级超大规模的消息处理而设计&#xff0c;具有高吞吐量、低延迟、海量堆积、顺序收发等特点。RocketMQ 5.1.0及以下版本&#xff0c;在一定条件下&#xff0c;存在远程命令执行风险。RocketMQ的NameServer&…

如何使用 CloudQuery 对 100+ 套数据库进行安全管控?

业务挑战 A 集团信息部门发展将近 10 年&#xff0c;从最初的一个 MySQL 数据库到现在鱼龙混杂什么数据库都有&#xff0c;其中仓库部门用了 PostgreSQL 做数据底座&#xff0c;历史原因问题&#xff0c;生产系统却是使用 Oracle。基于信创的需求&#xff0c;上级领导要求试点…

CAMERALINK通信应用

简述&#xff1a; Cameralink是一个全面的视频接口&#xff0c;他可以满足以前所有的传输视频的功能&#xff0c;包括通信、配置、应答、同步、以及复位等等&#xff0c;在以前简单提过一下&#xff0c;但是没有深入研究&#xff0c;其实这个通信还是比较简单的&#xff0c;在这…

uniapp vue3 静态图片引入

方法一 从新定义路径 一定看好你图片的路径 代码 <template><div class"main">Main<img :src"getImg()" alt""></div> </template><!-- 方式一 // <script setup> // let imgName logo.png // cons…

材质、纹理、贴图的区别和关联

1、材质、纹理、贴图的概念 材质&#xff08;Material&#xff09;、纹理&#xff08;Texture&#xff09;、贴图&#xff08;Texture Map&#xff09;是计算机图形学中的三个概念&#xff0c;它们之间存在关系但也有一些区别。 材质&#xff08;Material&#xff09;是描述物…

计算机竞赛 题目:基于深度学习的中文汉字识别 - 深度学习 卷积神经网络 机器视觉 OCR

文章目录 0 简介1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的中文汉字识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &a…

爬虫破解:解决CSRF-Token反爬问题 - 上海市发展和改革委员会

标题:爬虫破解:解决CSRF-Token反爬问题 - 上海市发展和改革委员会 网址:https://fgw.sh.gov.cn/fgw-interaction-front/biz/projectApproval/home MD5加密:ca7f5c978b1809d15a4b228198814253 需求文档 采集数据如下所示: 解决反爬思路 这里只提供解决思路,解决反爬,…

30 数据分析(上)(业务略写可跳)|jupyter|matplotlib

文章目录 数据科学领域概述数据如何驱动运营给企业带来价值岗位关键词说明业务的商业模式 数据指标数据指标定义及常用数据指标如何选取指标分析角度计数流量导向的工具内容导向的工具用户导向的工具业务导向的工具 数据分析方法对比分析多维分析漏斗分析留存分析总结 用户画像…