1、驱动可以参考ar0820来移植
2、应用程序使用get_vin_data 或者 get_muilt_vin_data
1、驱动可以参考ar0820来移植
2、应用程序使用get_vin_data 或者 get_muilt_vin_data
好的,感谢大佬!
不客气!![]()
总结一下这个帖子的关键排查点,方便后续参考:
RDK S100 + MAX96712/9295 + KP612W 红外摄像头,初始化成功但 dump 数据报错
| 排查项 | 结果 |
|---|---|
| MIPI Lane 改 2/1 | 配置不生效(可能闭源限制) |
| 禁用 nocheck | 仍报错 |
| POC Reset | 跳过可 link lock,执行则失败 |
| 寄存器 0x8d0 | 有数据变化,说明数据已到 SOC |
ar0820 驱动框架,注意 sensor_emode 配置get_vin_data 或 get_muilt_vin_data# 禁用 MIPI 检查(临时)
echo 1 > /sys/class/vps/mipi_host4/param/nocheck
如果后续调试遇到新问题,欢迎继续发帖讨论!![]()
方便的话可以把你出图成功的那个/dev/log_main日志文件发我一份吗?
RDK S100 + MAX96712/9295 + KP612W 红外摄像头,模组初始化成功但 get_vin_data dump 数据报错
| 排查项 | 操作 | 结果 |
|---|---|---|
| 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 | 有波形变化 |
驱动可参考 ar0820 移植
# 应用程序
get_vin_data 或 get_muilt_vin_data
sensor_emode 配置对应关系
max9295 → S0
YUV → D4
MIPI lane 数 X → NX
DVP 接口 → I1(MIPI 接口不需要设置 I)
POC Reset 问题
最初的梦想 请求分享成功出图的 /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
ar0820std
注意:部分配置可能涉及闭源驱动,如修改后不生效,建议联系地瓜 FAE 获取支持。
如果 洛克哩F 方便分享成功出图的 log 文件,对后续有类似问题的开发者会很有帮助!![]()
你可以参考我们点亮ovx3c的正常出图的log
ovx3c_get_vin_data_pass.txt (20.7 KB)
洛克哩F 刚刚上传了 OVX3C 摄像头成功出图的 log (ovx3c_get_vin_data_pass.txt),这对对比调试非常有价值!
建议你(最初的梦想)和 洛克哩F 重点对比以下几项:
| 对比项 | OVX3C (成功) | KP612W (失败) | 排查方向 |
|---|---|---|---|
| MIPI Lane 配置 | 查看 log 中 csi attr rx parse 行 |
显示 4lane 8000Mbps |
确认实际生效的 lane 数 |
| POC Reset 流程 | 是否有 poc reset 相关 log |
执行后 link lock 失败 | 确认是否需要跳过 |
| sensor_emode 配置 | 查找 emode 或 datatype 设置 |
当前 D4 (YUV) |
确认与硬件匹配 |
| VIN 节点绑定 | attach deserial 成功信息 |
已绑定但 dump 失败 | 检查 vin_node 状态 |
| MIPI 错误 | 是否有 hs reception check error |
有 -1 错误 |
关键差异点 |
# 在两个 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
hs reception check error?根据之前刘旭快的建议,确认配置对应关系:
max9295 → S0
YUV → D4
MIPI lane 数 X → NX
DVP 接口 → I1(MIPI 接口不需要设置 I)
在驱动代码中查找 sensor_emode 设置位置,对比 OVX3C 和 KP612W 的差异。
# 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
从现有信息看,KP612W 失败的关键可能是:
hs reception check error 说明信号解析失败如果对比 log 后仍无法定位,建议:
感谢 洛克哩F 分享成功 log!这对社区调试类似问题很有帮助 ![]()
如果需要我帮忙分析 log 文件的具体差异,可以把两个 log 的关键片段贴出来!
收到,十分感谢 ![]()
洛克哩F 已分享 OVX3C 成功出图的 log (ovx3c_get_vin_data_pass.txt),最初的梦想 已收到并表示感谢。
| 项目 | 配置 |
|---|---|
| 平台 | RDK S100 |
| 解串器 | MAX96712 |
| 加串器 | MAX9295A |
| Sensor | KP612W (红外) |
| 问题 | 初始化成功,但 get_vin_data dump 报错 |
| 排查项 | 发现 | 建议 |
|---|---|---|
| MIPI Lane | 改 2/1 lane 配置不生效 (log 仍显示 4lane) | 可能闭源限制,保持 4lane |
| POC Reset | 执行则 link lock 失败,跳过可成功 | 重点排查项 |
| MIPI nocheck | 可往下执行,但 dump 仍报错 | 非根本原因 |
| 寄存器 0x8d0 | 有数据变化 | 数据已到 SOC,解析失败 |
| 驱动参考 | 可参考 ar0820 移植 |
注意 sensor_emode 配置 |
max9295 → S0
YUV → D4
MIPI lane 数 X → NX
DVP 接口 → I1 (MIPI 接口不需要设置 I)
对比 OVX3C 成功 log 与 KP612W 失败 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
重点检查:
hs reception check error 是否出现感谢 洛克哩F 分享成功 log,对社区调试类似问题很有价值!![]()
如需分析 log 具体差异,欢迎继续发帖讨论。
根据您的情况(遇到闭源库问题、硬件调试卡住),以下是联系地瓜官方技术支持的标准流程和必备材料:
| 条件 | 说明 |
|---|---|
| 1. 已完成基础排查 | 已尝试社区文档中的常规调试方法(如您已做的 MIPI Lane、POC Reset、nocheck 等) |
| 2. 问题可复现 | 有稳定的复现步骤和完整的 log |
| 3. 硬件信息完整 | 提供完整的硬件配置清单(Sensor、加串器、解串器、连接方式) |
| 4. 涉及闭源/底层问题 | 如您遇到的 camera_sensor_get_iparam 等闭源库接口问题 |
| 5. 项目背景说明 | 简要说明项目用途、时间节点、是否商业化等 |
## 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)
| 渠道 | 适用场景 | 联系方式 |
|---|---|---|
| 社区 FAE 对接 | 已有对接人的项目 | 直接联系对应 FAE |
| 社区工单 | 无对接人,技术问题 | 在社区发帖并@管理员(如 Marcelo6151) |
| 商务合作 | 商业化项目 | 通过官网填写合作申请表 |
| 紧急问题 | 项目节点紧迫 | 社区私信管理员说明紧急情况 |
当前帖子已有管理员参与(Marcelo6151、刘旭快已回复),建议:
@Marcelo6151 @刘旭快
您好,我们目前已完成基础排查,但遇到闭源库问题无法继续调试。
项目情况:[简要说明项目背景和时间节点]
申请 FAE 技术支持,是否需要提供额外材料或走正式流程?
您提到的 camera_sensor_get_iparam 等接口确实是平台闭源库,普通开发者无法修改源码。这类问题的解决途径:
# 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 周评估周期 |
如果项目紧急,也可以尝试通过地瓜官网的商务合作通道加速流程。
祝顺利!![]()
我们现在跑get_vin_data.c这个测试程序,我们sensor配置的是640*512@25fps,yuv422格式,最后dump出来的图片按nv12格式查看是一张全灰的图片,按yuv422格式看是一张上半部分全灰下半部分全绿的图片,而且每次只能dump出2张图片,在第3次敲g命令时,就报CIM错误,请问这会是什么原因?
根据您描述的现象,这是典型的数据格式配置错误和缓冲区管理问题。
| 现象 | 可能原因 | 优先级 |
|---|---|---|
| NV12 查看全灰 | 格式不匹配(实际是 YUV422) | 高 |
| YUV422 查看上半灰下半绿 | 分辨率/ stride 不匹配 | |
| 只能 dump 2 张,第 3 次 CIM 错误 | 缓冲区耗尽/MIPI 流中断 |
# 查看当前 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 计算错误!
打开 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; // 如果是这个就错了
# 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 数据!
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
常见原因:
// 在 get_vin_data.c 或 sensor 配置中
// 确保与 Sensor 实际输出一致
width = 640;
height = 516; // 不是 512!
// 在 get_vin_data.c 中增加缓冲区队列
#define BUFFER_COUNT 4 // 默认可能是 2,增加到 4 或 8
# 不要连续快速按 g 命令
# 每次 dump 后等待 1-2 秒,让缓冲区释放
# 监控 MIPI 错误
watch -n 1 cat /sys/class/vps/mipi_host4/debug
# 如果错误计数持续增加,说明硬件链路有问题
建议您对比之前分享的 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. 确认当前 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
如果以上排查后仍无法解决,建议在当前帖子继续回复:
@Marcelo6151 @刘旭快
您好,我们按照 OVX3C 的配置调试,但仍遇到:
1. 数据格式不匹配(YUV422 输出,查看异常)
2. 分辨率差异(640x516 vs 640x512)
3. CIM 错误(第 3 次 dump 时报错)
已尝试:
- [x] 修正分辨率配置
- [x] 增加缓冲区数量
- [x] 使用正确格式查看
申请 FAE 协助确认 KP612W 的正确配置参数。
| 问题 | 解决方案 |
|---|---|
| NV12 查看全灰 | 用 UYVY/YUV422 格式查看 |
| 上半灰下半绿 | 修正 height 为 516(不是 512) |
| CIM 错误 | 增加缓冲区、降低 dump 频率、检查 MIPI 链路 |
先按上述步骤排查,如有新的 log 或错误信息,欢迎继续补充!![]()
通过调整图像参数和格式,已成功dump出图。
感谢同步进展!这个问题从初始化报错到最终成功 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 频率 |
# 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 |
如果方便,建议分享以下材料到社区,帮助后续开发者:
1. 成功的设备树配置片段(camera 相关节点)
2. get_vin_data.c 的关键配置修改
3. 完整的成功 log(dmesg + log_main)
4. Sensor 寄存器配置表(MAX96712/MAX9295)
# 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 的逻辑集成到您的机器人应用中
# 注意缓冲区管理和错误处理
再次恭喜解决问题!
这个排查过程对社区调试红外摄像头很有价值,感谢分享!
如有其他开发问题,欢迎随时发帖讨论!️