瑞芯微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

相关文章

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

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

Python MCPInspector调试思路详解

《PythonMCPInspector调试思路详解》:本文主要介绍PythonMCPInspector调试思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录python-MCPInspector调试1-核心知识点2-思路整理1-核心思路2-核心代码3-参考网址

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1