开发linux显卡驱动,显卡驱动开发DRM入门--Apple的学习笔记

由于之前的blog提及kmscube的源码我没有找到,所以只能在网上搜索了。

DRM简介

DRM是Linux目前主流的图形显示框架,同时DRM可以统一管理GPU和Display驱动,使得软件架构更为统一,方便管理和维护。而且drm是集成在linux kernel中的。

DRM从模块上划分,可以简单分为3部分:libdrm、KMS、GEM。

libdrm:对底层接口进行封装,向上层提供通用的API接口,主要是对各种IOCTL接口进行封装。

2)KMS:Kernel Mode Setting,主要作用是更新画面和设置显示参数

3)GEM:Graphic Execution Manager,主要负责显示buffer的分配和释放

然后我自己运行出错的代码是返回设置参数不正确。mode参数比如我设置1440x900,然后还有水平同步和垂直同步等信息。它从connector需要一路进行绑定。

绑定关系.png

调试问题

调试的时候出现过的权限问题。我下载的drm how-to工程在ubuntu本机验证通过,但是开发板运行就报错,ccs9调试发现drmModeSetCrtc返回参数无效。video初始化都是会建立设备/dev/dri/card0。之前调试运行在linux本机card0被x11等占用着资源,所以也会返回无权限。所以ubuntu下我本机调试的时候是使用ctrl+alt+F3切换到tty界面,然后通过ctrl+alt+F2再切换回图形界面。

你可能感兴趣的:(开发linux显卡驱动)