前言
学习Linux图形DRM子系统,还是需要有一个运行DRM框架的linux系统,这样无论在学习DRM应用程序还是驱动程序时,可以实际动手修改调试,运行看到效果,学习起来也是比较有动力和成就感的。下面是一个搭建Linux DRM运行环境的实践
环境
QEMU + vexpress-a9 + linux-4.14.7 kernel
一、linux-4.14.7默认使用的显示驱动是framebuffer子系统,当使用QEMU图形界面运行时,可以直接以图形界面运行linux(framebuffer):
但是我们需要的是用DRM子系统来显示画面,因此就需要将framebuffer替换为DRM
二、从默认的framebuffer配置vexpress_defconfig可以得知,vexpress-a9开发板用的是ARM PrimeCell PL110 LCD controller,对应的fb驱动文件是amba-clcd.c(amba驱动)。对应的panel驱动文件是amba-clcd-versatile.c,负责和panel相关的初始化操作。对应的设备树节点如下:
clcd@10020000 {
compatible = "arm,pl111", "arm,primecell";
reg = <0x10020000 0x1000>;
interrupt-names = "combined";
interrupts = <0 44 4>;
clocks = <&oscclk1>, <&oscclk2>;
clock-names =