FBDev 硬件驱动分类与现代 DRM 边界

FBDev 硬件驱动分类与现代 DRM 边界

1. 驱动分类

fbdev/包括:

  • 旧PCI显卡:ATI、NVIDIA、Matrox、S3、SiS、VIA等;
  • 各架构工作站framebuffer;
  • 旧SoC LCDC;
  • USB/虚拟化framebuffer;
  • firmware framebuffer;
  • virtual/test framebuffer;
  • Core和software rendering helpers。

2. Legacy PCI驱动

这些driver直接:

  • probe PCI;
  • map BAR;
  • 初始化PLL/CRTC;
  • 管理VRAM;
  • 注册fb_info

它们与同硬件的DRM driver互斥,不能同时启用。

3. SoC LCDC

旧平台fb driver通常把controller、DMA framebuffer、panel timing和backlight耦合在一个driver。现代设计拆成DRM CRTC/plane/encoder/bridge/panel。

4. Firmware类

  • efifb:EFI GOP framebuffer;
  • vesafb/uvesafb:VESA;
  • offb:Open Firmware;
  • simplefb:DT simple-framebuffer。

它们主要维持已有scanout。

5. Virtual/Test

vfb提供system-memory虚拟framebuffer,可测试fbcon和应用;不是显示硬件。Hyper-V/Xen等frontend与host/backend通信。

6. Drawing Helper

Helper 内存类型
cfb* packed pixels / I/O framebuffer
sys* system-memory buffer
fb_sys_fops system-memory read/write/mmap辅助

错误选择可能造成cache、endianness或访问语义问题。

7. DRM替代

DRM提供:

  • atomic modeset;
  • planes/connectors/bridges;
  • buffer objects;
  • dma-buf;
  • vblank/fence;
  • render/display权限模型。

fbdev仅有全局screen buffer和有限mode ABI,不适合现代多plane/多display合成。

8. DRM fbdev emulation

DRM client在KMS之上分配buffer并构造fb_info

1
/dev/fb0 -> fbdev Core -> DRM fb helper -> GEM/atomic KMS

该路径保留fbcon和legacy应用,不等于回退到legacy硬件driver。

9. RK3588

RK3588无本目录专用VOP fbdev driver。VOP2是DRM driver。本树RK3588 DTS没有simplefb/efifb节点;Vendor boot logo由Rockchip DRM的logo保留内存路径接管。只有产品自行增加firmware framebuffer描述时,simplefb才可能承担早期/救援显示。

10. 配置建议

启用:

  • Rockchip DRM;
  • 所需bridge/panel/PHY;
  • backlight;
  • 如需要console,再启用DRM fbdev emulation、FB和fbcon。

通常关闭不相关legacy fb drivers以减小攻击面和镜像。

11. 不能只按文件大小裁剪

Kconfig可能被其它架构select;构建时应基于目标.config验证对象,而不是删除源码目录。

12. 识别当前路径

1
2
3
4
cat /proc/fb
cat /sys/class/graphics/fb0/name
ls /sys/class/drm
dmesg | grep -Ei 'drm|fb0|framebuffer|simplefb'

名称若为DRM framebuffer,则底层不是legacy fb driver。

文章互动

阅读 --

留言

0 条留言

正在加载留言…