VIDIOC_DQBUF Timeout
现象
使用 V4L2 MMAP 模式采集视频时,VIDIOC_DQBUF 调用阻塞,超时后返回 -1,errno = 110 (Connection timed out)。
VIDIOC_DQBUF failed: Connection timed out环境
| 项目 | 内容 |
|---|---|
| 开发板 | RV1106G2 |
| 内核版本 | 5.10.x |
| SDK | RV1106 SDK v1.5 |
| Camera Sensor | IMX477 |
| 分辨率 | 1920×1080 |
| 格式 | YUYV |
错误日志
dmesgtext
[ 123.456789] rkisp1 rkisp1: stream on timeout
[ 123.456800] rkisp1 rkisp1: no frame received in 2000ms
[ 123.456811] video4linux video0: dqbuf timeoutv4l2-ctl --log-statustext
VIDIOC_DQBUF: failed: Connection timed out初步判断
可能的原因(按概率排序):
- Sensor 未上电或未正常工作
- MIPI CSI 链路未建立
- 设备树配置错误
- ISP 驱动问题
- V4L2 缓冲配置问题
排查过程
第一步:检查 Sensor 电源
shellbash
# 检查 Sensor 供电引脚电平
# 检查 reset 引脚状态
# 检查 pwdn 引脚状态结果:电源正常,reset 和 pwdn 均为释放状态。
第二步:检查 I2C 通信
shellbash
i2cdetect -y 1结果:可以扫描到 Sensor 地址 0x1a,读取 chip_id 正常。说明 I2C 通信正常,Sensor 已上电。
第三步:检查 MIPI CSI 信号
shellbash
# 查看 MIPI D-PHY 状态
cat /sys/kernel/debug/mipi_dphy/status
# 或者查看 ISP 状态
cat /sys/kernel/debug/rkisp1/status结果:MIPI D-PHY 未锁定(unlocked),没有接收到数据。
第四步:检查设备树配置
检查设备树中 Sensor 节点的 port 配置:
设备树片段dts
camera-sensor@1a {
compatible = "sony,imx477";
reg = <0x1a>;
// ...
port {
imx477_out: endpoint {
remote-endpoint = <&mipi_csi_in>;
data-lanes = <1 2 3 4>;
clock-noncontinuous;
};
};
};问题发现:remote-endpoint 指向的 &mipi_csi_in 节点路径写错了,实际应该指向 &csi2_dphy0_in。
第五步:验证修复
修改设备树中 remote-endpoint 为正确的节点,重新编译并烧录。
shellbash
# 启动流后检查 MIPI 状态
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=10结果:成功采集到 10 帧,DQBUF 正常返回。
根因
设备树中 Sensor 的 port 节点 remote-endpoint 配置错误,导致 MIPI CSI 链路未建立,Sensor 输出的数据没有被正确接收,因此 V4L2 驱动一直等不到帧数据,最终超时。
解决方案
修正设备树中 Sensor 节点的 remote-endpoint 指向,使其与 CSI D-PHY 的输入端点匹配。
修复后dts
port {
imx477_out: endpoint {
remote-endpoint = <&csi2_dphy0_in>; // 修正此处
data-lanes = <1 2 3 4>;
clock-noncontinuous;
};
};验证
- ✅
VIDIOC_DQBUF正常返回帧数据 - ✅ 1080P 30FPS 稳定采集
- ✅ MIPI D-PHY 状态显示 locked
- ✅
v4l2-ctl --stream-mmap输出帧率正常
最终状态
🟢 已解决 · 已验证
经验总结
- DQBUF 超时首先查链路:从 Sensor 电源 → I2C → MIPI → ISP → V4L2 逐级排查
- 善用 v4l2-ctl --log-status:可以快速定位是哪一层出了问题
- 设备树是重灾区:新增 Sensor 时 port/endpoint 配置最容易出错
- 检查 data-lanes 映射:data-lanes 的顺序和数量也要确认正确
相关知识
- V4L2 子系统
- MIPI CSI
- Sensor 上电时序
