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


9

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

我有一个工作的设备驱动程序,该驱动程序可以从触摸传感器读取输入并将其正确转换为按键,这是在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,HX8357和BCM2835之间有一个电压电平转换器(Nexperia 74LVCH245A)。可根据要求提供更多详细信息。


我很确定您患有NIH综合症,并且基本上已经重新发明了轮子-通常,触摸屏使用HID协议,而该协议受支持的程度要低得多。注意,触摸屏只是输入设备。
0andriy

@ 0andriy重塑方向盘有点像我的事,但是当我启动该设备时,没有(真正的)驱动程序。我不知道任何用于人机接口设备的标准化协议,但是如果有一个协议,我可以肯定我在这里使用的触摸屏没有使用它。我不同意“触摸屏只是输入设备”,因为我绝对可以输出图像。
memtha

您简单地在一个包中没有识别出两个硬件模块。触摸屏,不顾其名称,仅是输入设备。输出之一称为,例如,面板或TFT显示器。
0andriy

merriam-webster.com/dictionary/touchscreen是的,有两个截然不同的硬件:触摸屏和TFT屏幕。这两个组件组合形成触摸屏。您不能通过告诉我“忽略名称”来告诉我定义触摸屏错误。
memtha

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.