RGB屏幕

简介

LuckFox Pico Ultra 和 LuckFox Pico Ultra W 现在支持RGB屏幕,采用并行的RGB LCD接口。图像数据以RGB666格式传输,每个像素占用 6 位。目前只适配 720x720 和 480x480 分辨率。用户收到开发板后,需要自己重新烧录网盘镜像,网盘提供的镜像默认支持 720x720 分辨率。如果用户使用的是 480x480 分辨率的屏幕,可以在开发板开机后,按一下开发板的 BOOT按键进行分辨率切换。触摸默认不开启需要自行去luckfox-config中开启。为了帮助大家的理解工作原理,本节会从应用层到驱动层进行介绍,由于屏幕种类繁多,其它分辨率屏幕适配还需要自行研究。


兼容平台


注意:当前开发板Ubuntu22.04和buildroot系统都适配了屏幕的驱动,但是lvgl示例程序当前仅支持buildroot系统。注意:当前开发板Ubuntu22.04和buildroot系统都适配了屏幕的驱动,但是lvgl示例程序当前仅支持buildroot系统。


快速上手

DRM 测试

RGB 屏幕可以使用 Framebuffer 框架或 DRM 框架进行控制。使用 buildroot 系统自带的 modetest 工具可以获取 DRM 的 Connectors ID 和 CRTCS ID 用于显示测试。

  • Luckfox Pico Ultra 使用 Ubuntu 系统需要安装 modetest 工具(buildroot系统默认已安装)Luckfox Pico Ultra 使用 Ubuntu 系统需要安装 modetest 工具(buildroot系统默认已安装)
  • modetest 获取 Connector ID
  • modetest 获取 CRTCS ID
  • 执行测试程序显示色块
  • 示例:


LVGL 示例程序测试


1. 示例程序


2. MIPI DPI 接口

RGB 接口也被称为 DPI(Display Pixel Interface) 接口,采用普通的同步、时钟、信号线来传输特定数据,采用 IIC 等控制线完成命令控制,DPI接口信号线:

  1. DPIVSYNC (Vertical Sync): 垂直同步信号,用于指示一帧图像的开始。
  2. DPIHSYNC (Horizontal Sync): 水平同步信号,用于指示一行像素的开始。
  3. DPIDE (Data Enable): 数据有效信号,用于指示当前传输的数据是有效的像素数据。
  4. DPICK (Clock): 像素时钟信号,用于同步数据传输。
  5. 数据线: 多条并行数据线(如DPI_DATA0, DPI_DATA1, ...),用于传输像素数据。


3. Rockchip 平台显示子系统(DSS)

显示子系统是Rockchip平台显示输出相关软硬件系统的统称,linux内核采用component框架来构建显示子系统,一个显示子系统由显示处理器(vop,video output processor)、接口控制器(mipi,lvds,hdmi、edp、dp、rgb、BT1120、BT656、I8080(MCU 显示接口)等)、液晶背光,电源等多个独立的功能模块构成。将在内存中的图像数据,转化为电信号送到显示设备称为显示控制器,比如早期的LCDC;后面进行了拓展,可以处理一些简单的图像,比如缩放、旋转、合成等,如瑞芯微的vop和博通的VideoCore都称为显示处理器。RV1106 采用的VOP1.0 ,整个显示系统的硬件框架如下图所示:



4. FBDEV 介绍

Linux 内核中常用的两类图形显示设备驱动框架分别是 DRM(Direct Rendering Manager)和 FBDEV(Framebuffer Device)。在 Framebuffer 驱动框架下,用户可以通过 /dev/fbX 接口直接操作显示设备的显存,进行标准文件操作(如 read, write, ioctl)。用户空间程序可以通过这些设备节点和 ioctl 调用来控制帧缓冲设备。Framebuffer 提供基本的 2D 图形操作,如点、线、矩形的绘制,支持多种像素格式和分辨率。缺点是它不支持现代图形硬件的高级功能,如硬件加速和 3D 渲染。



5. DRM 介绍

DRM 全称是 Direct Rendering Manager,进行显示输出管理、buffer 分配、帧缓冲。对应的 userspace 库为 libdrm,libdrm 库提供 了一系列友好的控制封装,使用户可以方便的进行显示的控制和 buffer 申请。DRM 的设备节点为 "/dev/dri/cardX", X 为 0-15 的数 值,默认使用的是 /dev/dri/card0。 Rockchip 平台从 Linux 4.4 内核开始,显示驱动全部切到 DRM 显示框架。DRM 全称是 Direct Rendering Manager,进行显示输出管理、buffer 分配、帧缓冲。对应的 userspace 库为 libdrm,libdrm 库提供 了一系列友好的控制封装,使用户可以方便的进行显示的控制和 buffer 申请。DRM 的设备节点为 "/dev/dri/cardX", X 为 0-15 的数 值,默认使用的是 /dev/dri/card0。 Rockchip 平台从 Linux 4.4 内核开始,显示驱动全部切到 DRM 显示框架。

5.1 DRM 与 framebuffer 的区别

下图是 FBDEV 和 DRM 连接到设备端最终显示过程对比:



6. DRM 基本概念

为了方便管理显示通路上的各种硬件模块,DRM 定义了以下几个概念:为了方便管理显示通路上的各种硬件模块,DRM 定义了以下几个概念:


7. DRM 框架介绍


7.1 Libdrm

在 DRM 框架中,libdrm(Direct Rendering Manager library)是一个用户空间库。,提供了DRM驱动的用户空间接口;对底层接口进行封装,向上层应用程序提供通用的API接口,本质上是对各种ioctl接口进行封装。

7.2 KMS

KMS(Kernel Mode Setting)使内核直接管理显示模式和分辨率,提高了系统的稳定性和性能。KMS 包含 CRTC(Cathode Ray Tube Controller),用于控制显示扫描;Plane,用于管理图形数据层;Encoder,将图形数据转换为适当的输出信号;以及 Connector,连接显示设备,如显示器或电视。

7.3 GEM

GEM(Graphics Execution Manager)负责显存的分配和管理,提供高效的显存操作机制。它与 DRM 的其他组件,如 Plane、CRTC 和 Panel 协同工作,以确保图形数据在显存中的高效传输和渲染,支持硬件加速和现代图形硬件的高级功能。

7.4 drm_panel

drm_panel 是 DRM(Direct Rendering Manager)框架中的一个重要概念,尽管它不像 drm_crtc、drm_connector、drm_plane 等直接被认为是对象,但它的存在降低了LCD驱动与encoder驱动之间的耦合度。drm_panel它是一堆回调函数的集合,这些回调函数允许显示驱动程序和其他部分(如 encoder 驱动程序)与显示面板进行交互。


8. 驱动模块路径


9. DRM 驱动入口


10. RGB 屏幕系统配置


10.1 内核配置

10.2 设备树设置

10.2 DRM 测试


11. 电容触摸屏系统配置

LF40-720720-ARK 和 LF40-480480-ARK 都贴合了GT911电容触摸屏,使用 I2C 进行控制。LF40-720720-ARK 和 LF40-480480-ARK 都贴合了GT911电容触摸屏,使用 I2C 进行控制。



11.1 内核配置

11.2 设备树设置

11.3 触摸屏测试


TAG: USB摄像头 树莓派 Jetson Orin Nano/NX IO Base底板扩展板 UNO R4 WiFi 树莓派CM4-DUAL-ETH-MINI教程 双电子眼睛0.71寸圆形LCD显示屏适用于Arduino/树莓派/PICO/STM32 ESP32-H2-MINI-1-N4 DDSM115直驱伺服轮毂电机 一体化 RS485通信 高精度360°磁编码伺服电机85KG 12V/24V RS485高精度大扭矩 ESP32 1.9寸LCD Tang Primer 20K FPGA开箱 树莓派5 PCIE 树莓派Pico 1.14寸LCD 树莓派5风扇 树莓派5.5寸2K显示屏MIPI转兼容HDMI口电容触摸屏1440×2560电脑副屏教程 EPS32 S3开发板1.8寸圆形触摸显示屏LCD电子相框AIDA64无线WIFI副屏拾音无线供电LVGL 荔枝派糖Lichee Tang Nano 9K高云FPGA GOAI Sipeed GW1NR-9 1.5寸LCD 树莓派5 PCIE M.2 NVME SSD固态硬盘X1000 2242 2230 3.4寸圆形LCD电容触摸HDMI显示屏适用于mini PC树莓派Jetson