BeagleBone AI-64 miniDP显示连接故障排查求助
BeagleBone AI-64 miniDP显示无信号故障排查与解决
环境配置
- Buildroot版本:2024.05,基于
beagleboneai64_defconfig - 内核:Linux 6.8.12,使用默认defconfig及设备树
k3-j721e-beagleboneai64.dts - Bootloader:U-Boot
- 初始化系统:systemd
- 已启用组件:GStreamer及必要插件、V4L驱动与工具(
v4l2grab)、dropbear(SSH)
当前功能状态
- 系统可正常启动,USB摄像头通过V4L工作正常
- GStreamer可通过
filesink保存视频至文件,也能通过udpsinkUDP推流至主机显示器
miniDP显示故障详情
- 使用miniDP转DP线缆连接桌面显示器,显示器无信号进入待机模式
/sys/class/drm/card0-DP-1状态显示为已断开且禁用,无法获取EDID- 相关工具与日志反馈:
dmesg | grep dss:tidss初始化后提示无法找到CRTC或尺寸modetest:无法找到设备,指定tidss后显示DP-1处于断开状态- GStreamer显示相关管道测试全部失败
- 补充日志:
cdns-mhdp8546加载固件失败
已排查内容
- 排除显示器与线缆故障(板载eMMC系统可正常连接显示)
- 尝试启用多种图形驱动与库无效
- 替换为eMMC系统的dtb文件无效
解决方案建议
1. 修复cdns-mhdp8546固件加载问题
从板载eMMC系统中提取cdns-mhdp8546对应的固件文件(通常路径为/lib/firmware/cdns/下的相关.bin文件),将其添加到Buildroot的固件目录中:
- 在Buildroot配置中启用
BR2_PACKAGE_FIRMWARE,并指定固件文件的路径 - 重新构建系统,确保固件被正确部署到目标系统的
/lib/firmware/cdns/目录 - 重启后检查
dmesg | grep cdns-mhdp8546,确认固件加载成功
2. 调整内核设备树配置
对比板载eMMC系统使用的设备树,检查k3-j721e-beagleboneai64.dts中关于DP控制器、tidss的配置差异:
- 确认
cdns-mhdp8546节点是否启用,以及相关引脚、时钟配置是否正确 - 检查tidss节点的CRTC、连接器配置,确保与实际硬件匹配
- 编译修改后的设备树,替换系统中的dtb文件并重启测试
3. 验证DRM与tidss驱动配置
在Buildroot内核配置中,确保以下选项已启用:
CONFIG_DRM(Direct Rendering Manager)CONFIG_DRM_TIDSS(Texas Instruments DSS DRM driver)CONFIG_DRM_CDNS_MHDP8546(Cadence MHDP8546 DP controller)CONFIG_DRM_EDID(EDID支持)- 相关的I2C、时钟驱动配置(确保EDID读取所需的I2C总线正常工作)
4. 调试EDID读取问题
手动触发EDID读取测试:
- 使用
i2cdetect检查DP连接器对应的I2C总线(通常为I2C-2或类似),确认显示器的EDID设备地址(0x50)是否可被检测到 - 若I2C总线无响应,检查设备树中I2C引脚的配置是否正确,以及相关电源引脚是否启用
5. 测试基础显示输出
在修复固件与驱动配置后,使用kmsprint或modetest重新检测显示设备:
- 执行
modetest -M tidss查看可用的连接器、CRTC及模式 - 尝试使用
modetest手动设置显示模式,例如:modetest -M tidss -s <connector_id>:<width>x<height>@<refresh_rate> - 若能成功设置,再测试GStreamer显示管道,例如:
gst-launch-1.0 videotestsrc ! videoconvert ! kmssink
内容的提问来源于stack exchange,提问作者Luka Vidić
相关产品推荐
相关产品推荐

