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 | cat /proc/fb |
名称若为DRM framebuffer,则底层不是legacy fb driver。
正在加载留言…