影像显示驱动基础-MIPI和I2C

MIPI是一种串行接口,MIPI-DSI是其中用于显示的技术。MIPI接口的LCD显示屏作为显示输出,通过LCD显示才实现了图形化用户界面,使普通用户可以熟练运用和操作计算机等设备。所以MIPI是构成人机交互的重要接口。

影像驱动,除了之前提到的摄像头录制影像,另外就是影像显示技术。

本文总结了屏幕显示常见的接口MIPI,以及在显示驱动开发中常用到的DRM驱动框架和触控技术,最后介绍了双屏技术,了解这里有助于理解显示驱动工作的基础。

1、显示屏硬件接口

当前嵌入式触控显示屏的硬件接口主要是两部分,对应硬件的屏幕二合一,软件分别是用于显示的MIPI-DSI接口和I2C触控控制接口。

MIPI-DSI模式控制液晶显示器LCD显示,MIPI DSI接口具有高速、低功耗、差分信号传输等特点,适用于各种显示设备和应用场景。

显示屏硬件除了MIPI接口还包括PWM背光亮度、供电、GPIO等引脚;

触摸屏是由单独的触控芯片实现,一般是和显示屏进程了集成,主板的控制触控屏则通过i2c和GPIO实现;

i2c总线与触控芯片实现触控数据交换,GPIO芯片控制主要包括有电源使能管脚、触控中断引脚、触控复位引脚等。

原理图如下:
影像显示驱动基础-MIPI和I2C_第1张图片

数据包格式:采用数据包格式进行数据传输,包括长数据包和短数据包。长数据包主要用于传输大量图像数据,短数据包主要用于传输命令和读写寄存器。

2、DRM软件驱动框架

图像显示DRM(direct rendering manager)框架是显卡的驱动框架,功能是把绘制的图像显示在液晶屏上。

在Android DRM的软件架构中,DRM Framework API模块是Framework层为APP提供API接口,Framework层通过Binder通信机制与DRM进程中DRM Manager模块通信,通过DRM Manager模块管理。DRM Plugins则是实际实现DRM权限管理、数字内容解密等内容的模块。
影像显示驱动基础-MIPI和I2C_第2张图片

RK3399平台的DRM架构目录是/kernel/drivers/gpu/drm/rockchip/。通过drm_drv.c文件中的drm_bind()创建和注册DRM设备。

在人机交互控制终端上通过以下命令可以查看DRM的显卡及连接状态。

ls /sys/class/drm目录下可以查看驱动注册的各个显卡
ls /sys/class/drm/***查看connector状态

3、触控软件驱动

触摸屏的本质是传感技术,由最初的单点触控发展到如今的多点触控。最常见的触摸屏有电阻式触摸屏和电容式触摸屏。

以触控芯片GT9xx系列为例,驱动目录为/kernel/drivers/input/touchscreen/gt9xx.c;

驱动软件的工作就是移植相关的驱动,以及在设备树中完成I2C接口的配置。

4、双屏显示功能应用

同时使用两个显示屏组合,适配相应的软件就可以实现当前的双屏显示功能。

双屏可显示同样的内容也可以显示不同的内容,分别对应双屏同显和双屏异显。

双屏同显应用相机领域,可以实现前后屏双显应用,前屏作为自拍显示使用,后屏具备主屏实现触控和显示的功能。

双屏异显在控制机器人领域,可以在上屏显示远程机器人摄像头回传的图像,下屏显示机器人的状态信息及控制信息,双屏各自处理各自的触发事件,从而在应用中同步实现侦察和控制并举,提高效率。

5、双屏显示软件思路

双屏显示通过修改/framework/native/目录下的surfaceflinger和inputflinger实现。

作为Android的两个native进程,surfaceflinger主要负责将图层进行合成,图层叠加起来就构成了我们看到的界面,inputflinger则负责事件输入子系统的框架和流程。

在framework触摸功能框架实体中有displayID成员区分主屏和副屏。触摸事件的displayId对应的是主屏,就把该事件送至主屏的TouchedWindow;而当触摸事件的displayId对应的是副屏,就把该事件送至副屏的TouchedWindow。

可以通过以下命令查看显示状态:

命令列表
logcat | grep surfaceFlinger //查看硬件抽象层显示状态
logcat | grep inputFlinger
cat /d/dri/0/summary //查看VOP状态
ls /sys/class/drm //查看驱动注册的各个显卡

【森哥谈成像技术】持续输出影像相关的技术内容。
原创总结不易,多多点赞关注,我才有动力把自己的笔记整理出来。

影像显示驱动基础-MIPI和I2C_第3张图片

你可能感兴趣的:(嵌入式硬件,嵌入式驱动,驱动开发,系统架构,嵌入式硬件,显示器)