瑞芯微RK3588 camera驱动总结三调试

2024-09-01 19:44

本文主要是介绍瑞芯微RK3588 camera驱动总结三调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、指令

先介绍一些很有用的指令

  1. 1.media-ctl -p -d /dev/media0

用于打印 /dev/media0 设备的媒体管道拓扑结构。媒体管道拓扑结构描述了多媒体设备内部各组件之间的连接关系,包括视频输入、视频输出、编码器、解码器、ISP(图像信号处理器)等组件之间的连接。

media-ctl -d /dev/media1 -e "rkisp_selfpath"

media-ctl -d /dev/media1 -e "rkisp_mainpath"

这二个子指令可以查看具体的rkisp_mainpath和rkisp_selfpath

  1. 2.grep -H '' /sys/class/video4linux/video*/name

查找并显示 /sys/class/video4linux/ 目录下所有 video* 子目录中的 name 文件内容的命令。这个命令可以帮助你快速了解系统中有哪些视频设备,并且每个设备的名称是什么。

3.这几个v4l2的指令也很有用

v4l2-ctl --list-devices

列出系统中所有可用的视频设备及其相关信息。

v4l2-ctl -d /dev/video0 -l

列出指定视频设备支持的控制项(controls)的命令。

v4l2-ctl --list-formats-ext -d /dev/video0

列出指定视频设备支持的所有视频格式及其扩展信息的命令。

更详细的在media-ctl和v4l2-ctl这二个工具找。

4.查看proc信息

cat /proc/rkcif-dvp
cat /proc/rkrkisp*

二、调试

下面再看看在视频输入调试问题

  • 1.Sensor ID识别不到, I2C通讯失败

Sensor ID如果未识别到,这与RKISP或RKCIF没有任何关系,仅仅是Sensor上电时序未满足要求。请按以下顺序排查:

a. Sensor 的7-bits i2c slave id 是否正确, 是否误写成8-bits

b. 24M mclk是否有输出, 电压幅度是否正确

c. Sensor的上电时序是否满足要求,主要包括avdd, dovdd, dvdd, power down, reset等

2.exp_def 、 hts_def 、 vts_def值

如果有Sensor原厂的联系方式,请联系原厂获取。否则,请从datasheet中查找到对应的寄存器,并从寄存器列表中找到初始化时配置的值即可。
如果不期望应用程序去调节曝光、帧率时,可以不必要用到exp, hts, vts。一般RAW格式的Sensor需要这三个参数。


3.link_freq 与 pixel_rate 值

link_freq 指的是MIPI clk的实际频率。注意不是24M的mclk,而是MIPI dn/dp clk。优先通过原厂查问,或查找datasheet是否有相关的参数。

一般情况下, link_freq 实际值不会小于如下公式的计算结果,单位是(Hz)

link_freq = width * height * fps * bits_per_pixel / lanes / 2

如果实在不知道link_freq的实际值,可以用示波器测量。pixel_rate 指的是每秒传输的像素个数,link_freq 确定下之后,可用以下公式计算:

pixel_rate = link_freq * 2 * lanes / bits_per_pixel

4.怎么才算点亮Sensor

  • 首先需要能认到Sensor id,即i2c的读写不能有异常。这时用 media-ctl -p -d /dev/media0 应该能够看到Sensor的具体信息如名称、分辨率等。 其次,上层抓图时,MIPI要能输出数据,且不报MIPI/ISP相关错误,应用层能接收到帧。

5.MIPI需要设置哪些参数

在Sensor与ISP之间MIPI通讯需要设置4个参数,请务必确认4个MIPI参数的正确性。

  • Sensor输出的分辨率大小
  • Sensor输出的图像格式,是YUV或RGB RAW,8-bits、10-bits、或12-bits
  • Sensor的MIPI实际输出 link_freq
  • Sensor使用了几个MIPI lane,这需要在dts中2个位置都配置正确

6.没有收到帧数据,也没有看到ISP/MIPI有报错

  • a.确认kernel log中有没有关于MIPI的报错,比如用 dmesg | grep MIPI 看看有没有出错信息。

b. 确认kernel log中有没有出现Sensor 的i2c读写失败,如果Sensor 在配置寄存器时失败了,Sensor也可能没有正确初始化并使能输出。

c. 实际量测下MIPI的clk及data线上有没有信息输出。如果没有,建议从Sensor初始化及硬件方面分析。

d.实际量测有MIPI信号输出,但没报错也收不到数据

请确认I2C通讯没有错,Sensor的寄存器初始化列表有全部写到Sensor中,在Sensor驱动中,最后使能MIPI输出的是 s_stream() ,请确认在这个函数前,特别是s_power() ,不要让MIPI信号输出。这是因为在s_stream()前,MIPI控制器还未实际准备好接收数据,如果在 s_stream() 前输出数据,可能导致MIPI协议头SOT信号丢失,也可以将 Camera Sensor 端 clock lane 由 continue 模式切换到 no continues。

7.能正常收帧,但偶现MIPI错误

如果是MIPI错误,参考前面的错误描述。与信号相关建议从硬件信号上分析。

特别地,如果MIPI错误只在刚开始抓图时有,有可能是Sensor在上电的过程中MIPI信号有输出但并不符合协议,从而报错。 这种情况下,可以尝试按如下流程修改:

将完整的Sensor寄存器的初始化放到 s_power() 中。 因为此时MIPI接收端尚未开始接收数据,会忽略所有数据。在 s_power() 函数的最后,关闭sensor的输出,即相当于调用了 stop_stream()在 start_stream() 与 stop_stream() 中,仅打开或关闭MIPI的输出。

8.抓到的图颜色不对,亮度也明显偏暗或偏亮,或者是白图

需要根据Sensor分情况:

a. Sensor是RAW RGB的输出,如RGGB、BGGR等,需要3A正常跑起来。可以参考4 3A相关 3A 确认正常在跑时,请再次检查解析/显示图像时使用的格式是否正确,uv分量有没有弄反。

b. Sensor是yuv输出,或RGB如RGB565、RGB888,此时ISP处于bypass状态,如果颜色不对,请确认sensor的输出格式有没有配置错误,uv分量有没有弄反。确认无误时,建议联系Sensor原厂如果亮度明显不对,请联系Sensor原厂

c. Sensor输出是白图,可能是isp没有或者没有加载

这篇关于瑞芯微RK3588 camera驱动总结三调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127874

相关文章

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li