2.3 rk平台DRM驱动一些理解

写在前面

其实写这个是因为工作中遇到了要在rk linux平台上的应用程序要使用fb的方式去画图,但是底层驱动是使用DRM框架实现的,因为刚开始接触DRM驱动,在这里走了一些弯路,我这边的现象是,本来就有一个Qlauncher的QT程序,我把这个程序杀掉之后,我的fb程序就map失败了,然后写了一个drm的测试程序,这个程序运行之后,fb程序就正常了,一直在想为什么DRM和framebuffer有什么关系,虽然问题很简单,其实就是因为我停止QLauncher的时候把图像显示的整个通路断掉了,但是还是想记录一下。

DRM驱动路径

这是从网上找到的两张对我很有帮助的图
在这里插入图片描述
在这里插入图片描述
然后分析代码,一直以为rk模拟的/dev/fb是在这一条路的开头 FrameBuffer哪里开始的,实际上是在CRTC哪里模拟出来的, 而Framebuffer 那里的是DRM框架需要的,所以这样就可以解释所有的问题了
1 只有当Qlauncher存在的时候,才能mmap成功 是因为这个程序存在的时候通路是通的,但是杀了他之后,他会走去初始化流程 ,导致整条线路就不通了,现在使用过程中,其实已经出现logo了,就说明上图那条通路已经通了,(内核打印会有那些bind) 需要只是在fb那里mmap 然后填充数据就可以,但是需要将S50launcher 删除掉 这个是启动DRM程序的脚本,如果不删除,他会先初始化drm的通路,此时停掉,他就吧所有的通路都断了,就导致了要重新初始化。
2 后来做的测试,写一个DRM的测试程序,运行他之后,才能运行fb的测试程序也是同一个道理,DRM的测试程序将这一条通路打通了,仅此而已。

其实问题很简单,只不过因为DRM架构太复杂,如果不能理顺也不太好理解,下面这是对我帮助比较大的参考文档

https://blog.csdn.net/xiaotaiyangzuishuai/article/details/117424905
https://www.jianshu.com/p/6645f22ebd96

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux DRM(Direct Rendering Manager)驱动Linux操作系统中用于显卡和显示设备管理的驱动程序。它提供了一套统一的接口,使得用户可以通过应用程序直接访问显卡硬件,实现图形渲染和硬件加速等功能。 Linux DRM驱动包括了核心驱动模块和设备驱动模块。核心驱动模块负责提供基本的显卡管理功能,如内存分配、模式设置和渲染命令队列等。设备驱动模块负责支持特定显卡和显示设备的硬件特性和功能。通过这种模块化的设计,Linux DRM驱动能够支持多种显卡和显示设备。 在分析Linux DRM驱动时,可以从以下几个方面入手: 1. 驱动架构:了解Linux DRM驱动的整体架构,包括核心驱动模块和设备驱动模块的功能和交互方式。 2. 设备支持:分析特定显卡和显示设备的驱动模块,了解其支持的硬件特性和功能。 3. 内存管理:了解Linux DRM驱动中的内存管理机制,包括内存分配、显存管理和页面交换等。 4. 渲染和硬件加速:分析Linux DRM驱动中的渲染命令队列和硬件加速功能的实现方式。 5. 显示管道:了解Linux DRM驱动中的显示管道管理机制,包括模式设置和输出控制等。 通过对Linux DRM驱动的分析,可以更深入地理解显卡和显示设备的工作原理,为开发应用程序和调优系统性能提供指导和参考。此外,还可以通过分析和改进Linux DRM驱动来实现新的显卡和显示设备的支持,提升系统的兼容性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值