当前位置: 首页 > news >正文

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的人有帮助。

相关文章:

RK3288:BT656 RN6752调试

这篇文章主要想介绍一下再RK3288平台上面调试BT656 video in的注意事项。以RN6752转接芯片&#xff0c;android10平台为例进行介绍。 目录 1. RK3288 VIDEO INPUT 并口 2. 驱动调试 2.1 RN6752 驱动实现 ①rn6752_g_mbus_config总线相关配置 ②rn6752_querystd配置制式 …...

LLMs 蒸馏, 量化精度, 剪枝 模型优化以用于部署 Model optimizations for deployment

现在&#xff0c;您已经了解了如何调整和对齐大型语言模型以适应您的任务&#xff0c;让我们讨论一下将模型集成到应用程序中需要考虑的事项。 在这个阶段有许多重要的问题需要问。第一组问题与您的LLM在部署中的功能有关。您需要模型生成完成的速度有多快&#xff1f;您有多…...

Milvus踩坑笔记

本文用于记录在学习 Milvus文档时所遇到的一些Bug或报错及解决方法 参考文章&#xff1a; 官方demo&#xff1a;在Dynamic Schema的集合中插入数据 报错1&#xff1a;auto id enabled, id shouldnt in entities[0] 问题描述 此报错出现在Milvus官方在介绍 Dynamic Schema …...

什么是轴电流?轴电流对轴承有什么危害?

根据同步发电机结构及工作原理&#xff0c;由于定子铁芯组合缝、定子硅钢片接缝&#xff0c;定子与转子空气间隙不均匀&#xff0c;轴中心与磁场中心不一致等&#xff0c;机组的主轴不可避免地要在一个不完全对称的磁场中旋转。这样&#xff0c;在轴两端就会产生一个交流电压。…...

react create-react-app v5配置 px2rem (不暴露 eject方式)

环境信息&#xff1a; create-react-app v5 “react”: “^18.2.0” “postcss-plugin-px2rem”: “^0.8.1” 配置步骤&#xff1a; 不暴露 eject 配置自己的webpack&#xff1a; 1.下载react-app-rewired 和 customize-cra-5 npm install react-app-rewired customize-cra…...

.net中用标志位解决socket粘包问题

以下为wpf中, 用标志位"q" 解决粘包问题 using MyFrameWorkWpf.Entities; using System.Collections.ObjectModel; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.…...

【Ubuntu】Systemctl 管理 MinIO 服务器的启动和停止

要使用 systemctl 来管理 MinIO 服务器的启动和停止&#xff0c;您需要创建一个 systemd 服务单元文件&#xff0c;以便 systemd 能够启动和停止 MinIO 服务器。下面是一般的步骤&#xff1a; 创建 systemd 服务单元文件&#xff1a; 打开终端并使用文本编辑器创建一个新的 sys…...

《golang设计模式》第二部分·结构型模式-07-代理模式(Proxy)

文章目录 1. 概述1.1 角色1.2 模式类图 2. 代码示例2.1 设计2.2 代码2.3 示例类图 1. 概述 代理&#xff08;Proxy&#xff09;是用于控制客户端访问目标对象的占位对象。 需求&#xff1a;在调用接口实现真是主题之前需要一些提前处理。 解决&#xff1a;写一个代理&#xff…...

Jmeter常用线程组设置策略

一、前言 在JMeter压力测试中&#xff0c;我们时常见到的几个场景有&#xff1a;单场景基准测试、单场景并发测试、单场景容量测试、混合场景容量测试、混合场景并发测试以及混合场景稳定性测试 在本篇文章中&#xff0c;我们会用到一些插件&#xff0c;在这边先给大家列出&…...

【Spring】Spring MVC 程序开发

Spring MVC 程序开发 一. 什么是 Spring MVC1. MVC2. Spring、Spring Boot 与 Spring MVC 二. 创建 Spring MVC 项目1. 创建项目2. 用户和程序的映射3. 获取用户请求参数①. 获取单个参数②. 获取多个参数③. 传递对象④. 后端参数重命名&#xff08;后端参数映射&#xff09;R…...

如何在企业网站里做好网络安全

在当今数字时代&#xff0c;网站不仅仅是企业宣传和产品展示的平台&#xff0c;更是日常生活和商业活动中不可或缺的一部分。然而&#xff0c;随着网络技术不断发展&#xff0c;网站的安全问题日益凸显。保护网站和用户数据的安全已经成为至关重要的任务&#xff0c;以下是一些…...

windows server 2012 服务器打开系统远程功能

服务器上开启远程功能 进入服务器&#xff0c;选择“添加角色和功能” 需要选择安装的服务器类型&#xff0c;如图所示 然后在服务器池中选择你需要使用的服务器。 选择完成后&#xff0c;在图示列表下勾选“远程桌面服务” 再选择需要安装的功能和角色服务。 选择完成确认内容…...

智能工厂MES系统,终端设备支持手机、PDA、工业平板、PC

一、开源项目简介 源计划智能工厂MES系统(开源版) 功能包括销售管理&#xff0c;仓库管理&#xff0c;生产管理&#xff0c;质量管理&#xff0c;设备管理&#xff0c;条码追溯&#xff0c;财务管理&#xff0c;系统集成&#xff0c;移动端APP。 二、开源协议 使用GPL-3.0开…...

GPT的优势和GPT缺点

GPT&#xff0c;即Generative Pre-trained Transformer&#xff0c;是一种基于人工智能技术的自然语言处理模型。它采用了深度学习算法&#xff0c;可以通过大量的文本数据来学习自然语言的规律&#xff0c;并能够生成流畅、准确的语句。下面我们将探讨GPT技术的优势。 首先&a…...

微信小程序开发缺少中间证书问题(腾讯云、阿里云等做服务器)

项目使用nginx做负载均衡后&#xff0c;不再采用原来直接用jar包的方式直接开启对应端口&#xff0c;所以需要重新从云服务器上下载证书&#xff0c;写入到Nginx读取的证书路径上即可。...

动态代理初步了解

准备案例 需求 模拟某企业用户管理业务&#xff0c;需包含用户登录&#xff0c;用户删除&#xff0c;用户查询功能&#xff0c;并要统计每个功能的耗时。 分析与实现 定义一个UserService表示用户业务接口&#xff0c;规定必须完成用户登录&#xff0c;用户删除&#xff0c…...

QT国际化

引入 在代码里面写中文就很low&#xff0c;运行时多语言切换是客户端程序都应该具备的。 qt国际化其实就是qt中字符串的字符集编码的设置。当然这个设置不是简单的选择一下什么语言就好&#xff0c;这个需要编程人员来处理的。 通常对于非拉丁字符(主要指​​latin1​​​字符…...

微信小程序button按钮去除边框去除背景色

button边框 去除button边框 在button上添加plain“true”在css中添加button.avatar-wrapper {background: none}用于去除button背景色在css中添加button.avatar-wrapper[plain]{ border:0 }用于去除button边框...

Neo4j深度学习

Neo4j的简介 Neo4j是用Java实现的开源NoSQL图数据库。从2003年开始开发&#xff0c;2007年正式发布第一版&#xff0c;其源码托管于GitHtb。Neo4j作为图数据库中的代表产品&#xff0c;已经在众多的行业项目中进行了应用&#xff0c;如&#xff1a;网络管理、软件分析、组织和…...

【数据结构C/C++】链式存储与顺序存储结构栈

文章目录 链式存储结构顺序存储结构 下面这篇文章是我大二时候写的比较详细的实现过程&#xff0c;再这篇文章我也会再一次比较简单的再次简述一下链式与顺序存储结构的实现方式。 链式存储结构与顺序存储结构详解 这里我就不使用C再一次实现这两个栈了&#xff0c;有兴趣的也可…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...