RDK-X5 IMX415 获取帧失败

问题定位

恭喜找到根因!旧板子硬件问题导致帧获取失败。但现在有两个新问题需要解决:

  1. CPU 高温 (80℃) + 画面闪烁 + 识别功能挂掉
  2. 网络服务崩溃(SSH/VNC 断开,ping 不通网关)

这两个问题很可能相关——系统资源耗尽导致网络栈异常


立即排查步骤

1. 检查系统资源状态

网络断开时,在新终端(或串口)执行:

# 查看内存使用
free -h

# 查看进程资源占用
top -bn1 | head -20

# 查看网络接口状态
ip addr show
ip route show

# 查看网络服务状态
systemctl status ssh
systemctl status NetworkManager

# 查看系统日志中的网络错误
journalctl -xe | grep -i "network\|wifi\|ssh" | tail -50

2. 检查 MIPI/ISP 资源泄漏

# 查看 VIN/ISP 缓冲区状态
cat /sys/kernel/debug/vin/vin0/status 2>/dev/null

# 查看是否有 MIPI 错误
dmesg | grep -iE "mipi|vin|isp|error" | tail -30

# 查看 DMA 缓冲区
cat /sys/kernel/debug/dma_buf/bufinfo 2>/dev/null | head -50

3. 降低 CPU 负载测试

# 查看当前 CPU 频率
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq

# 临时降低 CPU 频率(如果支持)
echo powersave | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# 监控温度
watch -n 1 'cat /sys/class/thermal/thermal_zone*/temp'

解决方案

方案 1:优化 TROS 相机调用(推荐)

你提到 TROS 调用 640x480@30fps 也会出问题,需要检查是否正确释放资源:

# 确保在程序退出时正确释放相机资源
import rospy
from hobot_camera import Camera

cam = Camera()
cam.open(0, 640, 480, 30)

try:
    while not rospy.is_shutdown():
        img = cam.get_image()
        # 处理图像...
except KeyboardInterrupt:
    pass
finally:
    # 关键:确保关闭相机
    cam.close()
    rospy.signal_shutdown("exit")

方案 2:添加看门狗重启网络服务

在程序中添加网络健康检查:

import subprocess
import time

def check_network():
    try:
        result = subprocess.run(['ping', '-c1', '192.168.1.1'], 
                              timeout=2, capture_output=True)
        return result.returncode == 0
    except:
        return False

def restart_network():
    subprocess.run(['sudo', 'systemctl', 'restart', 'NetworkManager'])
    time.sleep(2)

# 在主循环中每 30 秒检查一次
if not check_network():
    print("Network lost, restarting...")
    restart_network()

方案 3:降低系统负载

# 1. 关闭不必要的服务
sudo systemctl stop lightdm  # 如果不用桌面
sudo systemctl disable bluetooth

# 2. 限制程序 CPU 使用
taskset -c 0-3 python your_program.py  # 限制在前 4 核

# 3. 增加散热
# - 加风扇
# - 降低环境温度
# - 避免阳光直射

方案 4:检查系统版本兼容性

# 查看当前版本
cat /etc/version

# 如果是 3.4.1,考虑升级到 3.5.0(如果有网络)
# 或重新刷写最新镜像

社区类似问题参考

搜索到相关帖子供参考:

问题 链接
X5 系统莫名重启 查看帖子
打开摄像头就死机 查看帖子
RDK X5 系统版本问题 查看帖子

需要反馈的信息

请提供以下信息以便进一步定位:

# 1. 网络断开时的系统状态
free -h
top -bn1 | head -10

# 2. 网络接口状态
ip addr show
ip route show

# 3. 系统日志
dmesg | tail -50

# 4. TROS 程序代码片段(相机调用部分)

临时 workaround

如果急需使用,可以:

  1. 用串口调试代替 SSH/VNC
  2. 程序运行前备份网络状态,断开后手动重启
  3. 降低相机分辨率和帧率减少负载(如 320x240@15fps)
# 网络断开后快速恢复
sudo systemctl restart NetworkManager && sudo systemctl restart ssh

先按上述步骤排查,把 free -hdmesg 日志发出来,可以进一步分析是内存泄漏还是网络栈问题。