首页
›
嵌入式与底层系统
›
013-Linux DRM_KMS显示驱动工程
›
《Linux DRM KMS显示驱动工程》
VIP22
本课程属于:013-Linux DRM_KMS显示驱动工程
嵌入式与底层系统 · 共 22 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
Linux内核显示驱动DRM KMS环境搭建
共计 30 章节
点击此处阅读海量试读课程:100+行业、1000+细分领域
01
DRM/KMS概述
什么是DRM · 什么是KMS · DRM与KMS的关系
DRM/KMS
DRM
02
开发环境准备
硬件要求(x86/ARM开发板) · 操作系统选择(Ubuntu/Debi… · 必备工具链安装(gcc
开发环境准备
x86/ARM
03
内核源码获取与配置
从kernel.org下载主线内核 · 使用git clone获取LTS内核 · 解压与配置内核(make menuc…
内核源码获取
配置
04
内核编译基础
配置内核.config文件 · 编译内核与模块(make -j$(n… · 编译设备树(make dtbs)
内核编译基础
config
05
内核安装与启动
安装内核模块(make module… · 安装内核(make install) · 更新grub引导
内核安装
启动
06
DRM核心数据结构
struct drm_device · struct drm_driver · struct drm_minor
DRM
核心数据结构
07
KMS核心数据结构
struct drm_mode_co… · struct drm_connect… · struct drm_encoder
KMS
核心数据结构
08
编写第一个DRM驱动骨架
实现drm_driver的file_… · 实现drm_driver的load/… · 注册PCI/platform设备
DRM
编写第一个
09
KMS模式设置初始化
初始化drm_mode_config · 实现connector检测与get_… · 实现encoder与crtc绑定
KMS
模式设置初始化
10
CRTC实现
实现crtc的set_config · mode_set · enable/disable回调
CRTC
实现
11
Plane实现
实现primary plane与cu… · plane的update_plane… · 支持格式转换
Plane
实现
12
Connector与Encoder实现
实现connector的detect · get_modes · mode_valid回调
Connector
Encoder
13
Framebuffer与GEM
创建drm_framebuffer · 实现drm_gem_object的a… · mmap映射
Framebuffer
GEM
14
Dumb Buffer与用户空间交互
实现drm_driver的dumb_… · dumb_map_offset · dumb_destroy
Dumb
Buffer
15
Vblank与垂直同步
注册vblank处理函数 · 实现get_vblank_count… · enable/disable vbl…
Vblank
垂直同步
16
Atomic Mode Setting(AMS)简介
Atomic API与传统Legac… · atomic state结构体 · atomic_check与atomi…
Atomic
Mode
17
实现Atomic Commit
实现atomic_commit · 处理非阻塞提交 · 实现prepare_fb与clean…
Atomic
Commit
18
设备树绑定与平台驱动
编写设备树节点(compatible · reg · interrupts)
设备树绑定
平台驱动
19
I2C与DDC/CI
使用i2c_adapter读取EDI… · 实现connector的get_mo… · 处理热插拔事件
I2C
DDC/CI
20
中断处理与热插拔
注册中断处理函数 · 实现connector的hotplu… · 通过drm_kms_helper_h…
断处理
热插拔
21
调试与日志
使用drm_debug · pr_debug/dev_dbg · 查看drm_state与drm_in…
调试
日志
22
使用modetest测试
安装libdrm与modetest工… · 使用modetest列举connec… · 使用modetest设置显示模式
modetest
使用
23
使用kmscube测试
安装mesa与kmscube · 运行kmscube验证GPU渲染与K… · 分析kmscube源码中的drm调用
kmscube
使用
24
DRM驱动中的内存管理
CMA与DMA-BUF · 实现drm_gem_cma_help… · 使用dma-buf进行跨驱动共享
DRM
驱动
25
多显示器支持
实现多个connector与crtc · 克隆模式与扩展模式 · 实现connector的possib…
多显示器支持
connector
26
电源管理与休眠
实现drm_driver的suspe… · 保存与恢复硬件状态 · 处理DPMS(Display Pow…
电源管理
休眠
27
性能优化与缓存
使用write-combine与un… · 减少vblank中断频率 · 使用drm_fbdev_fbdev通…
性能优化
缓存
28
用户空间API与libdrm
libdrm库的封装 · 使用drmModeGetResour… · drmModeSetCrtc
API
libdrm
29
常见问题与调试技巧
驱动加载失败排查 · dmesg日志分析 · 使用drm_dp_aux调试Disp…
常见问题
调试技巧
30
项目实战
从零编写一个完整的虚拟DRM/KMS… · 支持modetest与kmscube · 支持atomic与page_flip
项目实战
DRM/KMS
所属VIP或分类
同VIP:drm_crtc驱动中gamma校正与色彩管理配置工程
同VIP:DRM显示驱动开发-GPU渲染与多平面合成实践
同VIP:DRM显示驱动开发-硬件光标与VBlank同步