RK3588 kernel-6.1:drivers/video 作用、解决的问题与结构说明
源码基准:/home/cp/work2/SeagullYpcEncode/rk3588/kernel-6.1/drivers/video/。
说明:现代桌面 GPU 的主路径多在 drivers/gpu/drm/;drivers/video 仍以 帧缓冲(fbdev)、背光、文本控制台(fbcon)、显示模式辅助 以及 本树中体量很大的 Rockchip 多媒体/2D 加速子树 为主。
内核图形菜单在 drivers/video/Kconfig 中汇总:APERTURE、引用 drivers/gpu/drm 等;本文聚焦 drivers/video 目录本体。
1. 代码的作用(总体)
| 子目录/模块 | 作用 |
|---|---|
fbdev/ |
帧缓冲设备(/dev/fb0):为应用程序提供 统一像素缓冲接口(ioctl mmap);内含 fbmem.c 核心 与各 SoC/PCI/VGA 简易驱动 |
backlight/ |
背光/LCD 类设备:backlight sysfs、PWM/GPIO/WLED 等调节亮度 |
console/(CONFIG_VT) |
帧缓冲控制台(fbcon) 等:内核 printk / 文本 VT 输出到 framebuffer |
logo/(CONFIG_LOGO) |
启动 企鹅等 logo 写入 fb |
videomode.c、display_timing.c、of_*.c(CONFIG_VIDEOMODE_HELPERS) |
DT display-timings 解析、videomode 换算,供 fb/simpledrm/部分 DRM 面板驱动复用 |
aperture.c、hdmi.c、vgastate.c |
显存窗口(aperture)移交、HDMI 通用 EDID 等辅助(按配置)、VGA 状态 |
rockchip/(本 RK SDK 树 obj-y) |
Rockchip 专用:RGA/RGA2/RGA3(2D 合成与缩放)、RVE、IEP、MPP(视频编解码服务入口)、车载 camera/display(vehicle)、vtunnel、dvbm 等 |
2. 解决了什么问题
2.1 通用部分(fbdev / backlight / console)
| 问题 | 解决办法 |
|---|---|
| 应用如何在不绑定特定 GPU 驱动的情况下画屏 | /dev/fb* + mmap,尤其在 无 DRM/KMS 的老嵌入式 上几乎是唯一简单路径 |
| 内核早期与救援 shell 需要图形或帧缓冲文本输出 | fbcon:VT 与 fb 绑定 |
| LCD 亮度与电源序列 | backlight/lcd class drivers:PWM、PMIC、GPIO |
| 面板时序从设备树统一描述 | videomode/display_timing helpers,减少各驱动重复解析 DT |
2.2 与 DRM 的关系(避免混淆)
- 新平台上桌面/Wayland/Android HWComposer 主流使用 DRM/KMS(
drivers/gpu/drm)。 - fbdev 仍常见于:boot splash、简单 Qt/EGLFS fb、遗留驱动;部分系统 DRM fbdev emulation(
CONFIG_DRM_FBDEV_EMULATION) 提供/dev/fb0兼容层,并非必须由drivers/video/fbdev提供物理 fb。
2.3 Rockchip 子树(RK3588 相关)
| 模块 | 典型用途 |
|---|---|
| MPP | 视频硬件编解码调度(与 /dev/mpp_service 类接口配合用户态堆栈) |
| RGA / RGA2 / RGA3 | 2D 图像缩放、格式转换、合成,减轻 CPU |
| IEP | 图像增强处理(Image Enhancement Processor) |
| RVE | Rockchip vendor 图像/矢量加速模块,能力以硬件配置表和配套 UAPI 为准 |
| vehicle | 车载多路视频输入/显示链路(serializer、ISP、flinger 等) |
| vtunnel | 虚拟显示隧道(源码注释与 Kconfig 为准) |
这些是 芯片多媒体/display pipeline 的内核侧支撑,与单纯「帧缓冲」不同,但历史上落在 drivers/video/rockchip 目录下维护。
3. Makefile 链接关系(节选)
1 | obj-$(CONFIG_VT) += console/ |
rockchip/、backlight/、fbdev/ 在本 Makefile 中为 obj-y:是否最终进内核映像仍取决于 各子目录内 obj-$(CONFIG_*)(未选中的驱动不会链接)。
4. RK3588 集成要点
- 显示输出:RK3588 产品常见 DRM(如
rockchipdrm) 在drivers/gpu/drm;drivers/video侧可能仍编 fbdev 兼容、背光、RGA/MPP。 - 多媒体:编解码除 staging
rkvdec外,MPP 路径 常与drivers/video/rockchip/mpp协同(具体节点名与 ABI 以 SDK 文档为准)。 - 裁剪内核时:勿误以为删掉整个
drivers/video即可,需确认 fbcon/logo/backlight/MPP 是否仍被根文件系统或引导依赖。
5. 小结表
| 维度 | 内容 |
|---|---|
| 作用 | fbdev 框架与驱动、背光、fbcon/logo、显示时序辅助;RK SDK 加 Rockchip 多媒体与车载大块代码 |
| 解决的问题 | 统一像素缓冲访问、内核控制台显示、背光抽象、DT 时序复用;RK 侧 2D/编解码/车载 pipeline |
| 与 DRM | 现代显示优先看 DRM;video 侧重 fbdev 生态与 RK 扩展 |
6. 延伸阅读
Documentation/fb/framebuffer.rstDocumentation/gpu/index.rst(DRM 体系)
正在加载留言…