开发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需要一路进行绑定。

5973263a0c9a

绑定关系.png

调试问题

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

connector的TDMS

drmModeSetCrtc里到底做了什么,但是当我还没有下载到libdrm的源码,我只能自己分析传入参数。学习了下HDMI接口TDMS协议。

显示屏的显示原理:

当CRT显示器显示一幅图像时,电子枪是从左到右、从上到下来扫描屏幕的。由电子枪打出的电子经由偏转线圈的偏转得以打到屏幕的不同点上。电子束在从左到右扫描完一行后,需要回到起始方向进行下一行的扫描,这个返回的工作由回程转换器来完成。

专业名词

水平同步:同步一行,然后进行下一行

垂直同步:同步一帧。

60Hz刷新率就是指,每秒显示60帧(图像)

假设分辨率为800*600,则每秒有60次垂直同步。而每次垂直同步包括了600次水平同步。

另外传输的数据包括图像数据(8bit调制为10bit每通道进行传输),控制信号(用来说明下一次传输哪类信号),音频数据(4bit)。通道包括rgb共3通道,最后加一通道为clock。

5973263a0c9a

HDMI TDMS.png

我此时怀疑是否ioctrl后底层驱动配置不支持。然后又看了下硬件原理用的是TDA19988的解码芯片说只支持到1280的解码,那么1440x900之前为什么也能支持?关于TDA在上图中是什么位置有点搞不明白,之后再研究下。然后总是显示tilcdc初始化成功,tilcdc到底是个什么东西。重要兜了个圈子又回到了TI官网,LCDC是LCD controller的缩写,ti就是TI,说白了tilcdc就是am335的一个lcd模块。就和我现在一直做的can模块一样。

LCDC模块

终于进入正题,我之前除了看graph章节,我还应该要看TI官网的LCDC章节。这里面就写drm及kmscube还有testmode的源码路径。并且还告知dts在有LCD的情况下应该如何配置,看了教程后觉得我的底层驱动当前是正常的,因为运行kmscube能正常显示3D图像。

http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components/Kernel/Kernel_Drivers/Display/LCDC.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 中w和x 区别,r、w、x权限在文件和目录中的含义有何区别?

age 于 2011-01-11 17:48:39发表:目录和文件的rw权限基本一致, 唯一有区别的可能就是执行权限了文件的可执行权限很好理解, 最简单的理解就是可以在终端下输入路径来执行这个文件.但目录可执行的意思则完全不同, 它并非指这个目录可以被执行. 而是指它允许在该目录下运行可执行…

linux ppp漏洞,Linux下ppp拨号的实现(Arm)

Linux发行版自带PPP拨号需要的pppd和chat命令,以2.6.18内核的Linux虚拟机为例,在/usr/sbin目录下,/etc/ppp目录也已自动创建。参考模权创建拨号脚本ppp-on,ppp-off,ppp-on-dialer三个文件,on&off放在/u…

c语言学生成绩管理论文,学生成绩管理系统毕业论文c语言.doc

111111111学院毕 业 论 文题 目 学生成绩管理系统姓 名 1 1 1所在系别 计 算 机 系专业班级 计算机应用技术计算机111班学 号 1111111111指导教师 1 1 1日 期 2012 年 4 月 15 日目 录摘 要 ………………………………………………………………………………………………………1…

编程语言基础 c语言同步教案,C语言程序设计基实验教案.doc

C语言程序设计基实验教案高级语言程序设计基础实验主讲教师:张顺利2011年10月,其中。2.将China译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母A后面第四个字母是E,用…

c语言char转cstring,CString、TCHAR*、char*转换 | 时刻需

char*、TCHAR*转换CStringCString str(****)下面详细写一下其它转换///************************************************************************* 函数: TransCStringToTCHAR* 描述:将CString 转换为 TCHAR** 日期:*********************…

c语言的c语句ab2,当初我在重庆交通大学读书的时候C语言成绩也相当不错的

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼楼主,感激不尽。1、C语言数组下标默认从 ______开始。2、C语言全局变量的存储值类型可以是exlern和_______3、结构化程序设计的三种基本结构分别指的是顺序结构、_____和_____4、若有定义imb2,c0执行下面的表…

android mvc使用方法,详细学习android mvc设计模式教程

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 web 应用程序的模式。其分层有助于管理复杂的应用程序,因为可以在一个时间内专门关注一个方面。例如,可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易…

android l 电池,DIY新技能--M1L换电池

DIY新技能--M1L换电池2019-10-23 16:48:526点赞6收藏10评论更换理由M1L是好几年前买的了,具体几年前我都懒得购买记录了。前前后后买了4台锤子手机了,这是我支持老罗的第二款手机,前一款是坚果手机,买了两台早先给妈妈用一台后来给…

android版本10好不好,一加正式推送Android 10系统 流畅性怎么样

近日,一加正式推送Android 10系统,不知道流畅性如何呢?一加官方推特正式宣布Android 10系统已进行阶段性推送,从今天开始一加7和一加7 Pro手机用户将会陆续收到氧OS系统的更新,国内基于Android 10的氢OS将于下月推送。…

android 移除fragment,Android Viewpager+Fragment取消预加载及Fragment方法的学习

1.在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载。通过设置setOffscreenPageLimit(int number) 来设置预加载的熟练,在V4包中,默认的预加载是1,即使你设置为0&#xff…

r语言 html表格,R语言table()函数

R语言table()函数比较有用,两个示例尤其是混淆矩阵这个案例比较有用:例子一:统计频次zz1#实现z中各数据频次的统计z1 2 4 73 3 1 1names(z1)#居然是有名字的[1] "1" "2" "4" "7"例子二:实…

android屏幕适配流程,Android屏幕适配姿势

GitHub地址为什么要屏幕适配?device_framentation.png统计碎片化品牌机型碎片化屏幕尺寸碎片化操作系统碎片化为了保证用户获得一致的用户体验效果,使得某一元素在Android不同尺寸、不同分辨率的手机上具备相同的显示效果,则需要我们进行屏幕…

在html中写js提示错误,页面HTML标签优化

真正需要SEOer掌握并经常使用的HTML标签也就那么几个,本小节错误君带来的是页面HTML标签优化。title标签 – 标题标签1)title标签用法2.13 TF-IDF加权方法 – 错误教程2)标题标签的作用文章标题有着关键词的作用,文章标题引点击流量。3)页面标题标签优化…

在线聊天室html5源码,HTML5WebSocket实现聊天室的代码示例

本篇文章主要介绍了HTML5-WebSocket实现聊天室示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。在传统的网页实现聊天室的方法是通过每隔一段时间请求服务器获取相关聊天信息来实现,然而html5带来的websocket功能改变这了这种方式&am…

android人脸情绪识别器,基于Android平台的人脸表情识别系统的设计与实现

摘要:随着目前移动设备硬件技术的不断发展,其性能与PC的差距越来越小,这使得在嵌入式平台上进行图像处理成为了可能.目前使用最广泛的是基于Android系统的嵌入式平台,与之相关的图像类应用需求也渐渐增多,如图片文字识别,人脸识别等等.而近年来,人脸表情识别技术成为…

android删除键监听,「React Native」Android返回键监听

在需要做监听的js中添加componentWillMount() {if (Platform.OS android) {BackHandler.addEventListener(hardwareBackPress, this.onBackHandler);}}componentWillUnmount() {if (Platform.OS android) {BackHandler.removeEventListener(hardwareBackPress, this.onBackHa…

列表页时间日期标签靠显示html,帝国CMS列表页面list.var分别调用年月日,显示个性时间日期...

在帝国CMS中列表页个性时间显示的实现方式,首先我们要知道用什么方法来实现,这里我们使用PHP代码来做。要在模板代码中使用PHP代码,就必须勾选此模板代码页面的-使用程序代码.位置就在添加模板页面的列表内容模板(list.var) (*)上边。然后我们在list.var…

html鼠标响应事件吗,学习JavaScript鼠标响应事件

本文为大家分享了一个简单的鼠标模拟案例,供大家参考,具体实现内容如下如何实现捕抓鼠标事件,当鼠标滑动时,获取当前鼠标的坐标,接着在一个透明区域里绑定捕抓的位移,这样就能在模拟的透明区域里实现鼠标滑…

html5边框闪烁,HTML – CSS框阴影动画像素艺术闪烁

部分用于测试,部分用于我的设计理念,我试图将动画gif转换为纯动画CSS.它几乎正常工作,但我遇到了障碍,我不确定是什么导致了我的问题,或者我如何解决它.我不幸地怀疑我只是限制了技术.至于实际的CSS,我一直在尝试实现这里的方法(动画框阴影属性),因为它看起来最可行&#xff1a…

html浏览器边框颜色,CSS设置字体和边框颜色时Chrome和其他主流浏览器差别的问题_html/css_WEB-ITnose...

a.toregister:link {text-decoration:none;width:90px;height:40px;font-family:"黑体" ;font-weight: bold;border:1px solid #cccccc;color:rgb(100,100,100);background-color:#d1d2d3;position:absolute;left:1348px;letter-spacing:3px;top:20px;text-align:cen…