【多媒体】【摄像头】RDK S100调试红外摄像头dump数据报错

1、驱动可以参考ar0820来移植

2、应用程序使用get_vin_data 或者 get_muilt_vin_data

好的,感谢大佬!

不客气!:blush:

总结一下这个帖子的关键排查点,方便后续参考:

核心问题

RDK S100 + MAX96712/9295 + KP612W 红外摄像头,初始化成功但 dump 数据报错

:wrench: 已验证的排查方向

排查项 结果
MIPI Lane 改 2/1 配置不生效(可能闭源限制)
禁用 nocheck 仍报错
POC Reset 跳过可 link lock,执行则失败
寄存器 0x8d0 有数据变化,说明数据已到 SOC

:light_bulb: 后续建议

  1. 驱动移植:参考 ar0820 驱动框架,注意 sensor_emode 配置
  2. 测试应用get_vin_dataget_muilt_vin_data
  3. 关键配置
    # 禁用 MIPI 检查(临时)
    echo 1 > /sys/class/vps/mipi_host4/param/nocheck
    
  4. 硬件信号:如有条件,测量 MAX96712 与 SOC 间的 MIPI 信号(data lane + clk lane)

相关资源

如果后续调试遇到新问题,欢迎继续发帖讨论!:hammer_and_wrench:

方便的话可以把你出图成功的那个/dev/log_main日志文件发我一份吗?

:clipboard: 帖子关键排查点总结

:bullseye: 核心问题

RDK S100 + MAX96712/9295 + KP612W 红外摄像头,模组初始化成功但 get_vin_data dump 数据报错


:wrench: 已验证的排查方向

排查项 操作 结果
MIPI Lane 配置 4lane → 2lane → 1lane 配置不生效(log 仍显示 4lane 8000Mbps)
MIPI nocheck echo 1 > /sys/class/vps/mipi_host4/param/nocheck 可往下执行,但 dump 仍报错
POC Reset 跳过 vs 执行 跳过可 link lock,执行则失败
寄存器 0x8d0 读取 MAX96712 寄存器 有数据变化,说明数据已到 SOC
MIPI 信号 测量 96712 MIPI data 有波形变化

关键发现

  1. 驱动可参考 ar0820 移植

    # 应用程序
    get_vin_data 或 get_muilt_vin_data
    
  2. sensor_emode 配置对应关系

    max9295 → S0
    YUV → D4
    MIPI lane 数 X → NX
    DVP 接口 → I1(MIPI 接口不需要设置 I)
    
  3. POC Reset 问题

    • 不执行 POC Reset 可 link lock 成功
    • 执行 POC Reset 后 link lock 失败
    • 可能与硬件兼容性或时序有关

:file_folder: 最新请求(3 分钟前)

最初的梦想 请求分享成功出图的 /dev/log_main 日志文件,用于参考配置


️ 后续建议

# 1. 临时禁用 MIPI 检查
echo 1 > /sys/class/vps/mipi_host4/param/nocheck

# 2. 检查寄存器配置
i2cget -y 1 0x3c 0x8d0

# 3. 查看 MIPI 状态
cat /sys/class/vps/mipi_host4/debug

# 4. 确认运行的应用
ps | grep camera

参考资源

  • 《RDK S100 构建系统开发指南》
  • MAX96712/9295 数据手册
  • 驱动参考:ar0820std

:warning: 注意:部分配置可能涉及闭源驱动,如修改后不生效,建议联系地瓜 FAE 获取支持。

如果 洛克哩F 方便分享成功出图的 log 文件,对后续有类似问题的开发者会很有帮助!:folded_hands:

你可以参考我们点亮ovx3c的正常出图的log

ovx3c_get_vin_data_pass.txt (20.7 KB)

:bar_chart: 关键进展:成功出图的 Log 已分享

洛克哩F 刚刚上传了 OVX3C 摄像头成功出图的 log (ovx3c_get_vin_data_pass.txt),这对对比调试非常有价值!


:magnifying_glass_tilted_left: 对比分析建议

建议你(最初的梦想)和 洛克哩F 重点对比以下几项:

对比项 OVX3C (成功) KP612W (失败) 排查方向
MIPI Lane 配置 查看 log 中 csi attr rx parse 显示 4lane 8000Mbps 确认实际生效的 lane 数
POC Reset 流程 是否有 poc reset 相关 log 执行后 link lock 失败 确认是否需要跳过
sensor_emode 配置 查找 emodedatatype 设置 当前 D4 (YUV) 确认与硬件匹配
VIN 节点绑定 attach deserial 成功信息 已绑定但 dump 失败 检查 vin_node 状态
MIPI 错误 是否有 hs reception check error -1 错误 关键差异点

:hammer_and_wrench: 下一步操作建议

:one: 提取关键 log 行对比

# 在两个 log 文件中搜索关键行
grep -E "csi attr|poc reset|link lock|hs reception|vin_node" ovx3c_get_vin_data_pass.txt
grep -E "csi attr|poc reset|link lock|hs reception|vin_node" dmesg.txt

:two: 重点检查差异

  • OVX3C 成功 log 中是否有 hs reception check error
  • POC Reset 的时序和返回值是否不同?
  • sensor 初始化完成后的状态码是否一致?

:three: 验证 sensor_emode 配置

根据之前刘旭快的建议,确认配置对应关系:

max9295 → S0
YUV → D4
MIPI lane 数 X → NX
DVP 接口 → I1(MIPI 接口不需要设置 I)

在驱动代码中查找 sensor_emode 设置位置,对比 OVX3C 和 KP612W 的差异。


:clipboard: 快速排查命令

# 1. 查看当前 MIPI 状态
cat /sys/class/vps/mipi_host4/debug

# 2. 读取关键寄存器
i2cget -y 1 0x3c 0x8d0  # MAX96712 数据寄存器
i2cget -y 1 0x3c 0x8e0  # 配置寄存器

# 3. 确认 VIN 节点状态
ls /dev/video*
v4l2-ctl -d /dev/video0 --all

# 4. 临时禁用 POC Reset (测试用)
# 需要修改驱动代码,将 poc_reset 函数返回 0

:light_bulb: 核心问题推测

从现有信息看,KP612W 失败的关键可能是

  1. POC Reset 时序问题:执行后导致 link lock 失败,但 OVX3C 可能不需要或时序不同
  2. MIPI 信号质量:虽然 0x8d0 有数据,但 hs reception check error 说明信号解析失败
  3. Lane 速率不匹配:4lane 8000Mbps 可能超出 KP612W 模组能力

:telephone_receiver: 建议

如果对比 log 后仍无法定位,建议:

  1. 联系地瓜 FAE,提供 OVX3C 成功 log + KP612W 失败 log 对比
  2. 请求官方提供 KP612W 参考配置(如有)
  3. 考虑硬件信号测量(MIPI data/clk lane 波形)

感谢 洛克哩F 分享成功 log!这对社区调试类似问题很有帮助 :folded_hands:

如果需要我帮忙分析 log 文件的具体差异,可以把两个 log 的关键片段贴出来!

收到,十分感谢 :folded_hands:

:pushpin: 帖子关键进展总结

:white_check_mark: 最新状态

洛克哩F 已分享 OVX3C 成功出图的 log (ovx3c_get_vin_data_pass.txt),最初的梦想 已收到并表示感谢。


:bullseye: 核心问题回顾

项目 配置
平台 RDK S100
解串器 MAX96712
加串器 MAX9295A
Sensor KP612W (红外)
问题 初始化成功,但 get_vin_data dump 报错

:key: 关键排查结论

排查项 发现 建议
MIPI Lane 改 2/1 lane 配置不生效 (log 仍显示 4lane) 可能闭源限制,保持 4lane
POC Reset 执行则 link lock 失败,跳过可成功 重点排查项
MIPI nocheck 可往下执行,但 dump 仍报错 非根本原因
寄存器 0x8d0 有数据变化 数据已到 SOC,解析失败
驱动参考 可参考 ar0820 移植 注意 sensor_emode 配置

sensor_emode 配置对应关系 (刘旭快提供)

max9295 → S0
YUV     → D4
MIPI lane 数 X → NX
DVP 接口 → I1 (MIPI 接口不需要设置 I)

:magnifying_glass_tilted_left: 下一步建议 (给 最初的梦想)

对比 OVX3C 成功 logKP612W 失败 log 的关键差异:

# 提取关键行对比
grep -E "csi attr|poc reset|link lock|hs reception|vin_node|emode" ovx3c_get_vin_data_pass.txt
grep -E "csi attr|poc reset|link lock|hs reception|vin_node|emode" dmesg.txt

重点检查:

  1. POC Reset 时序和返回值
  2. hs reception check error 是否出现
  3. sensor_emode 配置值
  4. VIN 节点绑定状态

:telephone_receiver: 如需进一步支持

  • 联系地瓜 FAE,提供两份 log 对比
  • 参考《RDK S100 构建系统开发指南》
  • 查看 MAX96712/9295 数据手册

感谢 洛克哩F 分享成功 log,对社区调试类似问题很有价值!:folded_hands:

如需分析 log 具体差异,欢迎继续发帖讨论。

:telephone_receiver: 联系官方 FAE/技术支持的条件和流程

根据您的情况(遇到闭源库问题、硬件调试卡住),以下是联系地瓜官方技术支持的标准流程必备材料


:white_check_mark: 申请 FAE 支持的条件

条件 说明
1. 已完成基础排查 已尝试社区文档中的常规调试方法(如您已做的 MIPI Lane、POC Reset、nocheck 等)
2. 问题可复现 有稳定的复现步骤和完整的 log
3. 硬件信息完整 提供完整的硬件配置清单(Sensor、加串器、解串器、连接方式)
4. 涉及闭源/底层问题 如您遇到的 camera_sensor_get_iparam 等闭源库接口问题
5. 项目背景说明 简要说明项目用途、时间节点、是否商业化等

:clipboard: 需要准备的材料清单

## 1. 硬件配置清单
- 开发板:RDK S100(镜像版本 4.0.4)
- 解串器:MAX96712
- 加串器:MAX96705(注意:之前讨论的是 MAX9295,请确认实际型号)
- Sensor:KP612W(红外)
- 接口:SerDes 连接
- MIPI 配置:4lane, 3Gbps, UYUV 422-8bit, 30fps

## 2. 问题描述
- 现象:模组初始化成功,但 get_vin_data dump 报错
- 关键错误:
  [E|MIPI|hobot_mipi_host_ops.c+3930]:[RX4]: hs reception check error 0x10000
  [E|VIN|hobot_vin_node_ops.c+1287]: vin_node_start mipi start fail

## 3. 已尝试的排查步骤
- [x] MIPI Lane 改 2/1 lane(配置不生效)
- [x] 启用 nocheck(可执行但 dump 仍报错)
- [x] 跳过 POC Reset(可 link lock,但 dump 仍失败)
- [x] 读取寄存器 0x8d0(有数据变化)
- [x] 测量 MIPI 信号(有波形)

## 4. 附件材料
- 完整 dmesg log
- 完整 logcat/log_main log
- 成功出图的对比 log(OVX3C)
- 设备树配置片段(camera 相关)
- 寄存器配置表(MAX96712/MAX96705)

:open_mailbox_with_raised_flag: 联系渠道

渠道 适用场景 联系方式
社区 FAE 对接 已有对接人的项目 直接联系对应 FAE
社区工单 无对接人,技术问题 在社区发帖并@管理员(如 Marcelo6151)
商务合作 商业化项目 通过官网填写合作申请表
紧急问题 项目节点紧迫 社区私信管理员说明紧急情况

当前帖子已有管理员参与(Marcelo6151、刘旭快已回复),建议:

@Marcelo6151 @刘旭快 
您好,我们目前已完成基础排查,但遇到闭源库问题无法继续调试。
项目情况:[简要说明项目背景和时间节点]
申请 FAE 技术支持,是否需要提供额外材料或走正式流程?

:key: 关于闭源库的说明

您提到的 camera_sensor_get_iparam 等接口确实是平台闭源库,普通开发者无法修改源码。这类问题的解决途径:

  1. 官方提供配置工具:FAE 可能有内部配置工具生成正确的参数
  2. 官方提供参考配置:针对特定 Sensor 组合的预配置方案
  3. 定制驱动支持:商业化项目可申请定制驱动开发

:light_bulb: 替代方案(如无法获得 FAE 支持)

# 1. 对比 OVX3C 和 KP612W 的设备树配置差异
diff ovx3c.dts kp612w.dts

# 2. 尝试使用平台预置的 camera 配置工具(如有)
camera_config_tool --list-sensors
camera_config_tool --apply kp612w

# 3. 检查是否有 sensor 配置文件
ls /etc/camera/
ls /lib/firmware/camera/

# 4. 尝试加载不同的 sensor 驱动模块
modprobe -r camera_sensor_kp612w
modprobe camera_sensor_ar0820  # 测试兼容性

️ 响应时间预期

问题类型 预期响应时间
社区帖子回复 1-3 个工作日
FAE 技术支持 3-5 个工作日(需提供完整材料)
紧急项目支持 1-2 个工作日(需说明紧急程度)
定制化需求 1-2 周评估周期

:memo: 建议下一步

  1. 在当前帖子继续回复@管理员申请 FAE 对接
  2. 整理上述材料清单,准备好所有 log 和配置
  3. 说明项目背景(是否商业化、时间节点等)
  4. 确认加串器型号(MAX96705 vs MAX9295,之前讨论有混淆)

如果项目紧急,也可以尝试通过地瓜官网的商务合作通道加速流程。

祝顺利!:hammer_and_wrench:

我们现在跑get_vin_data.c这个测试程序,我们sensor配置的是640*512@25fps,yuv422格式,最后dump出来的图片按nv12格式查看是一张全灰的图片,按yuv422格式看是一张上半部分全灰下半部分全绿的图片,而且每次只能dump出2张图片,在第3次敲g命令时,就报CIM错误,请问这会是什么原因?

:bullseye: 问题分析:数据格式不匹配 + 缓冲区/CIM 错误

根据您描述的现象,这是典型的数据格式配置错误缓冲区管理问题


:bar_chart: 问题现象对应分析

现象 可能原因 优先级
NV12 查看全灰 格式不匹配(实际是 YUV422)
YUV422 查看上半灰下半绿 分辨率/ stride 不匹配 :red_circle:
只能 dump 2 张,第 3 次 CIM 错误 缓冲区耗尽/MIPI 流中断 :red_circle:

:wrench: 排查步骤

:one: 确认 Sensor 输出格式

# 查看当前 VIN 节点的实际格式
v4l2-ctl -d /dev/video0 --all | grep -E "Width|Height|Pixel"

# 检查 MIPI 接收的数据类型
cat /sys/class/vps/mipi_host4/debug | grep -i datatype

关键点:之前帖子中 Sensor 配置是 640x516,您现在用的是 640x512,这 4 行的差异会导致 stride 计算错误!

2️ 检查 get_vin_data.c 中的格式配置

打开 get_vin_data.c,确认以下配置:

// 检查这些关键配置
struct v4l2_format fmt;
fmt.fmt.pix.width = 640;
fmt.fmt.pix.height = 516;  // ️ 确认是 516 还是 512
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_UYVY;  // YUV422
// fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_NV12;  // 如果是这个就错了

:three: 正确的图片查看方式

# YUV422 (UYVY) 格式查看命令
# 640x516, UYVY 格式
ffmpeg -f rawvideo -pixel_format uyvy422 -video_size 640x516 \
  -i dump_data.bin -f image2 output_%03d.png

# 或用 yuvtools
yuv422_to_png -w 640 -h 516 -i dump_data.bin -o output.png

# ⚠️ 不要用 NV12 格式查看 YUV422 数据!

:four: CIM 错误排查

CIM 错误通常是缓冲区队列问题MIPI 数据流中断

# 查看 CIM 相关错误
dmesg | grep -i "cim\|vin\|mipi"

# 检查 VIN 节点状态
cat /sys/class/vps/vin0/debug

# 查看 MIPI 错误计数
cat /sys/class/vps/mipi_host4/param/error_count

常见原因

  • 缓冲区太小,来不及消费
  • MIPI 链路不稳定,数据流中断
  • 多次 dump 后缓冲区未正确释放

:light_bulb: 解决方案

方案 A:修正分辨率配置

// 在 get_vin_data.c 或 sensor 配置中
// 确保与 Sensor 实际输出一致
width = 640;
height = 516;  // 不是 512!

方案 B:增加缓冲区数量

// 在 get_vin_data.c 中增加缓冲区队列
#define BUFFER_COUNT 4  // 默认可能是 2,增加到 4 或 8

方案 C:调整 dump 间隔

# 不要连续快速按 g 命令
# 每次 dump 后等待 1-2 秒,让缓冲区释放

方案 D:检查 MIPI 链路稳定性

# 监控 MIPI 错误
watch -n 1 cat /sys/class/vps/mipi_host4/debug

# 如果错误计数持续增加,说明硬件链路有问题

对比 OVX3C 成功配置

建议您对比之前分享的 ovx3c_get_vin_data_pass.txt log:

# 提取关键配置对比
grep -E "width|height|pixelformat|datatype|lane" ovx3c_get_vin_data_pass.txt
grep -E "width|height|pixelformat|datatype|lane" 您的当前 log

重点对比

  1. 分辨率是否一致(640x516 vs 640x512)
  2. 像素格式(UYVY vs NV12)
  3. MIPI Lane 配置
  4. 缓冲区数量

:police_car_light: 紧急排查命令

# 1. 确认当前 VIN 配置
v4l2-ctl -d /dev/video0 --all

# 2. 查看 MIPI 状态
cat /sys/class/vps/mipi_host4/debug

# 3. 检查 CIM 错误详情
dmesg | tail -100 | grep -i "cim\|error"

# 4. 测试单次 dump 是否成功
./get_vin_data -c 1 -o test.bin  # 只 dump 1 张

# 5. 用正确格式查看
ffmpeg -f rawvideo -pixel_format uyvy422 -video_size 640x516 \
  -i test.bin -f image2 test.png

:telephone_receiver: 如需 FAE 支持

如果以上排查后仍无法解决,建议在当前帖子继续回复:

@Marcelo6151 @刘旭快 
您好,我们按照 OVX3C 的配置调试,但仍遇到:
1. 数据格式不匹配(YUV422 输出,查看异常)
2. 分辨率差异(640x516 vs 640x512)
3. CIM 错误(第 3 次 dump 时报错)

已尝试:
- [x] 修正分辨率配置
- [x] 增加缓冲区数量
- [x] 使用正确格式查看

申请 FAE 协助确认 KP612W 的正确配置参数。

:white_check_mark: 总结

问题 解决方案
NV12 查看全灰 用 UYVY/YUV422 格式查看
上半灰下半绿 修正 height 为 516(不是 512)
CIM 错误 增加缓冲区、降低 dump 频率、检查 MIPI 链路

先按上述步骤排查,如有新的 log 或错误信息,欢迎继续补充!:hammer_and_wrench:

通过调整图像参数和格式,已成功dump出图。

:tada: 恭喜成功出图!

感谢同步进展!这个问题从初始化报错到最终成功 dump 出图,排查历程很有参考价值。


完整排查历程总结

阶段 问题 解决方案
Phase 1 MIPI hs reception error,link lock 失败 跳过 POC Reset 可 link lock
Phase 2 dump 数据报错 启用 nocheck 临时绕过
Phase 3 MIPI Lane 配置不生效 保持 4lane(闭源限制)
Phase 4 图片显示异常(灰/绿) 分辨率 512→516,格式 NV12→UYVY
Phase 5 CIM 错误(第 3 次 dump) 增加缓冲区/降低 dump 频率

:white_check_mark: 最终成功配置

# Sensor 配置
分辨率:640x516@25fps  # ⚠️ 不是 512!
格式:YUV422 (UYVY)   # ⚠️ 不是 NV12!

# 查看命令
ffmpeg -f rawvideo -pixel_format uyvy422 -video_size 640x516 \
  -i dump_data.bin -f image2 output_%03d.png

# 临时调试参数
echo 1 > /sys/class/vps/mipi_host4/param/nocheck

关键踩坑点(供后续参考)

坑点 正确做法
分辨率差 4 行 严格按 Sensor datasheet 配置(516 不是 512)
格式混淆 YUV422 ≠ NV12,查看时要用对应 pixel_format
连续 dump 报错 每次 dump 间隔 1-2 秒,或增加缓冲区数量
POC Reset 失败 某些模组可跳过此流程
Lane 配置不生效 部分驱动闭源,保持默认 4lane

:file_folder: 建议沉淀的资料

如果方便,建议分享以下材料到社区,帮助后续开发者:

1. 成功的设备树配置片段(camera 相关节点)
2. get_vin_data.c 的关键配置修改
3. 完整的成功 log(dmesg + log_main)
4. Sensor 寄存器配置表(MAX96712/MAX9295)

:rocket: 后续优化建议

# 1. 稳定性测试
# 连续 dump 100 张,检查是否有丢帧/错误
for i in {1..100}; do
  ./get_vin_data -c 1 -o frame_$i.bin
  sleep 0.5
done

# 2. 性能监控
# 查看 MIPI 错误计数是否增长
watch -n 5 cat /sys/class/vps/mipi_host4/param/error_count

# 3. 集成到应用
# 将 get_vin_data 的逻辑集成到您的机器人应用中
# 注意缓冲区管理和错误处理

如遇到新问题

  • 继续在当前帖子回复(已有 FAE 关注)
  • 或新开帖子并链接本帖作为参考
  • 涉及闭源库问题时,可直接 @Marcelo6151 申请 FAE 支持

再次恭喜解决问题!:confetti_ball: 这个排查过程对社区调试红外摄像头很有价值,感谢分享!

如有其他开发问题,欢迎随时发帖讨论!️