什么Linux驱动程序子系统/ API用于简单的屏幕/监视器设备?

问题描述 投票:9回答:1

我正在开发带有触摸屏的嵌入式系统。触摸屏既可作为输入也可作为输出,并且“虚拟”键盘覆盖图形输出。

我有一个工作设备驱动程序,可以从触摸传感器读取输入并将其正确转换为在this guide on kernel.org的帮助下进行的按键操作。我想扩展此驱动程序以处理图像输出到屏幕上。

我想同时支持getty和X,并尽可能减少重复。我正在运行带有精选的软件包的最小Debian变体,例如最小X。请注意,尽管我可能会将其转储到公共GitHub存储库中,但我并不打算尝试将该驱动程序放入存储库管道中。

当前输出屏幕图像是通过一个棘手的解决方法完成的:一个引导选项,即使未连接到显示器,也可以强制渲染到CPU的嵌入式图形硬件;还有一个守护进程,它不断地对刮屏进行缓冲,修改了少数预定义的像素来创建键盘视觉效果,并将其推出到真实屏幕。

这是一个概念证明,证明我正确理解了屏幕设备期望的语言,但显然不是最佳选择。

[kernel.org也有一个有关“ DRM”设备驱动程序的指南,但是对于我的硬件所具有的功能来说,这似乎严重过头了:

Linux DRM层包含旨在满足复杂图形设备需求的代码,通常包含非常适合3D图形加速的可编程管线。

我的硬件都没有类似于3D加速的东西,所以我得出结论,这可能不是我想要的。

我应该使用哪个子系统/ API?我认为缺少一项术语是阻碍我搜索的原因,但有关如何完成此操作的更多信息将不胜感激。

硬件详细信息(可能不相关): CPU和屏幕通过8080式并行协议进行通信,而CPU本身不支持该协议,因此我使用GPIO进行了仿真(通过mmap操纵寄存器)。 >

发送完整的屏幕图像大约需要20毫秒,但是从嵌入式图形缓冲区中获取完整的副本大约需要180毫秒,因此跳过这一步是最重要的目标。屏幕硬件包括足够的SGRAM内存以保留整个帧的数据值,并支持写入矩形子区域,因此希望使用仅更新屏幕已更改部分的钩子。

屏幕不是特定于传入数据的时间。触摸传感器输入由专用IC处理,该IC通过CPU支持的I²C与CPU通信。本驱动程序使用linux/input-polldev.h接口。 CPU是Broadcom BCM2835,屏幕是带有嵌入式Himax HX8357控制器的TFT,触摸屏传感器解码器是ST STMPE610,并且在两者之间有一个电压电平转换器(Nexperia 74LVCH245A)在播放。 HX8357和BCM2835。可根据要求提供更多详细信息。

我正在开发带有触摸屏的嵌入式系统。触摸屏既可作为输入也可作为输出,而“虚拟”键盘则覆盖图形输出。我有一个工作正常的设备驱动程序...

linux driver screen kernel-module
1个回答
2
投票

您缺少的术语是framebuffer device。您可以找到它的kernel.org文档here

© www.soinside.com 2019 - 2024. All rights reserved.