rv1126bp lvds调试

1126bp是25年新发的 kernel6.1版本 比较新资料少,调试难度大

1,debug思路汇总

ai写的 有可能是瞎编的。

这些底层的时钟、数据处理细节完全可以不依赖 v4l2 抓果,通过内核标准节点、驱动日志、中断状态就能排查,刚好适配你们「先确认时钟再看数据通路」的调试思路,我按排查顺序整理下方法,适配你们现在 FPGA 做前端输出的场景:


先确认前提(避免 SOC 侧无意义调测)

因为现在 FPGA 相当于直接扮演了「摄像头 + 信号源」的角色,XVCLK 已经是 FPGA 给 CMOS、FPGA 再输出标准摄像头信号(MIPI/DVP)给 SOC,所以先对齐 FPGA 侧的输出配置,再查 SOC:

  1. FPGA 输出的接口参数和 SOC 设备树 / 驱动配置完全一致:比如 MIPI 的 Lane 数、速率、VC 通道、数据类型(RAW8/RAW10/YUV 等);如果是 DVP 并行接口的话,HSYNC/VSYNC 极性、PCLK 频率 / 相位、数据位宽对齐;

  2. 建议 FPGA 先输出固定测试图案(比如彩条、固定字节序列 0xAA/0x55),不要直接送真实 CMOS 采集数据,方便后面对比 SOC 接收是否正确。


一、SOC 侧时钟状态排查方法

你不需要管给 CMOS 的 XVCLK,重点看SOC 侧 CSI/DSI 接收链路的时钟状态,通用方法如下(所有 Linux 平台基本都适用,不需要改代码):

  1. 先查错误日志,快速定位时钟失败问题

直接搜 dmesg 里的时钟相关报错:

复制代码
dmesg | grep -iE 'clk|csi|mipi|isp' | grep -iE 'err|fail|warn'

如果有clk_get failclk_set_rate faileddphy pll unlock这类日志,直接就定位是时钟配置问题,比如 CSI 模块申请时钟失败、MIPI 接收端的锁相环没锁住(FPGA 送的时钟和 SOC 配置不匹配)。

  1. 用 clk 子系统节点看所有时钟的实时状态

只要内核开了CONFIG_DEBUG_FS(绝大多数嵌入式 Linux 默认开),挂载 debugfs 后直接看时钟总表:

复制代码
mount -t debugfs none /sys/kernel/debug # 没挂载的话先执行
cat /sys/kernel/debug/clk/clk_summary

重点找和 CSI/MIPI/ISP 相关的时钟项,确认 3 个点:

  • enable_count > 0:说明时钟已经正常使能;

  • rate 和预期一致:比如 MIPI HS 速率对应时钟、DVP 的 PCLK 输入频率,和 FPGA 输出的参数是否匹配;

  • 父时钟正确:如果是用 FPGA 送的随路时钟做采样,确认 CSI 采样时钟的父时钟是ext_csi_clk这类外部输入时钟,不是 SOC 内部 PLL(如果配成内部时钟会导致采样不同步,全是 CRC 错误)。

  1. 特殊接口时钟补充:MIPI DPHY 状态

如果是 MIPI 接口,大部分 SOC 会在 debugfs 下出 DPHY 的专属节点,比如/sys/kernel/debug/mipi_csi0/dphy_status,直接看pll_lock状态是否为 1:

  • 锁不住 = FPGA 输出的 MIPI 时钟质量 / 速率不匹配、或者是 FPGA 用了时钟 burst 模式(有些 SOC 不支持非连续 MIPI 时钟);

  • 锁住了 = 前端时钟链路正常,接下来可以查数据通路。


二、SOC 侧数据处理细节排查方法

时钟确认没问题后,不用等 v4l2 抓图,从「中断→链路配置→底层数据」逐层查:

  1. 先看中断状态,确认有没有收到数据

看 CSI/MIPI/ISP 的中断有没有正常上报:

复制代码
cat /proc/interrupts | grep -iE 'csi|mipi|isp'
  • FPGA 开始送流后,对应中断的计数会持续增长(比如帧结束中断、MIPI 包接收中断),如果完全不涨 = 根本没识别到数据流,优先查接口配置(VC 通道、数据类型、同步极性不对);

  • 如果计数涨但伴随大量错误中断,dmesg 里会有对应报错:

    • 全是 CRC 错误 = MIPI 信号质量差、PCLK 采样相位反了、数据位宽不匹配;

    • 帧同步错误 = FPGA 输出的分辨率 / 行长度和 SOC 配置不一致、VSYNC/HSYNC 极性错;

    • FIFO 溢出错误 = CSI 接收时钟配慢了、后端总线带宽不够。

  1. 看 CSI/ISP 的 debug 节点,看数据接收统计

几乎所有 SOC 的摄像头驱动都会在 debugfs 下导出接收统计,路径一般是/sys/kernel/debug/csiX/或者/sys/kernel/debug/ispX/,可以直接读:

  • frame_cnt:统计收到的完整帧数,FPGA 送流时应该和帧率匹配增长,说明 SOC 已经能完整识别帧;

  • error_cnt:各类错误的计数,比如同步错误、CRC 错误的次数,判断是偶发还是全错;

  • 部分厂商还支持直接 dump CSI 接收到的原始 RAW 数据(不需要走 v4l2),直接和 FPGA 输出的测试图案对比,100% 确认采样是否正确。

  1. 开驱动 debug 日志,看逐包 / 逐帧处理细节

如果需要看更细的处理逻辑,可以动态开摄像头驱动的 debug 日志:

  • 方法 1:如果驱动有模块参数,加载时加debug_level=7,会打印所有帧接收、缓冲区处理的日志;

  • 方法 2:内核开了**CONFIG_DYNAMIC_DEBUG**的话,用 dyndbg 动态打开对应驱动的 debug 打印,比如:

    复制代码
    echo 'file drivers/media/platform/xxx-csi.c +p' > /sys/kernel/debug/dynamic_debug/control

    开了之后 dmesg 会打印每一个 MIPI 短包、帧头帧尾、缓冲区提交的细节,能直接看到 SOC 是不是收到了正确的帧长度、有没有把数据正常送到 v4l2 缓冲区

  1. 查 v4l2 链路配置,确认格式匹配

如果前面都没问题,再确认 v4l2 链路的格式配置,不用抓图,用media-ctl就能看:

复制代码
media-ctl -p # 看整个media拓扑

确认从 CSI 接收单元→ISP→v4l2 设备节点的整个链路的格式(分辨率、像素格式、场序)和 FPGA 输出完全一致,比如 FPGA 送的是 1080P RAW8,结果 CSI 节点配的是 720P RAW10,肯定抓不到正确数据。

也可以用v4l2-ctl -d /dev/video0 --all看最终视频节点的格式配置是否正确。


三、什么时候需要看 v4l2 抓图结果?

只有当前面所有检查项都正常:

  1. 时钟全部使能、频率正确、DPHY 锁定;

  2. 中断正常增长、没有错误报错;

  3. 帧计数正常增长、链路格式配置完全匹配;

    这时候如果还是有问题(比如色彩不对、有条纹),才需要抓图分析,大概率是小的配置问题(比如 Bayer 序配反、gamma 没关)或者 FPGA 输出的测试图案本身有问题。


常用调试顺序参考

  1. FPGA 输出固定测试图案→确认 FPGA 侧参数和 SOC 配置对齐;

  2. 查 dmesg 有没有时钟 / DPHY 报错→读 clk_summary 确认时钟状态→确认 DPHY 锁存;

  3. 开 FPGA 送流→看中断是否增长→查 error_cnt 有没有错误;

  4. 确认帧计数正常增长→查 media 拓扑格式匹配→最后 v4l2 抓图验证。

0,其他

相关推荐
Terasic友晶科技13 分钟前
【教程】Agilex 5 SoC 的两种启动模式的开发演示(一)(FPGA Configuration First)
fpga开发·agilex 5 soc
ALINX技术博客18 分钟前
【黑金云课堂】FPGA技术教程Vitis开发:SD卡WAV文件读取音频播放实验
fpga开发·音视频
仲南音2 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner3 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20203 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy3 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia3 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20203 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子4 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安4 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi