博客
关于我
【Linux驱动开发】LCD 驱动实验
阅读量:227 次
发布时间:2019-02-28

本文共 1760 字,大约阅读时间需要 5 分钟。

Linux LCD 驱动编写与配置指南

一、LCD 帧缓冲设备简介

Framebuffer(帧缓冲),简称 fb,是 Linux 系统中用于显示 LCD 显示屏幕像素信息的设备文件。LCD 对应的设备文件通常位于 /dev/fbX(X=0~n)下。通过操作帧缓冲区的 RGB 显存,应用程序可以在 LCD 显示屏幕上实现在字符、图片等信息。

在 Linux 系统中,帧缓冲设备被抽象为 fb_info 结构体,包含了帧缓冲设备的完整属性和操作集合。例如,imx6ull 系统的 LCD 驱动代码通常位于 drivers/video/fbdev/mxsfb.c 文件中。

二、LCD 驱动编写流程

1. 初始化 eLCDIF 控制器

首先,初始化 I.MX6U 系统的 eLCDIF 控制器,配置 LCD 屏幕宽(width)、高(height)、hspw、hbp、hfp、vspw、vbp、vfp 等参数。

2. 初始化 LCD 像素时钟

确保 LCD 显示屏幕的像素时钟(pixel clock)正确运行,是 LCD 显示屏幕正常工作的基础。

3. 设置 RGBLCD 显存

配置 RGBLCD 显存,确保应用程序能够通过显存操作 LCD 显示屏幕。

4. 应用程序显示操作

应用程序直接通过操作显存来控制 LCD 显示屏幕,实现字符、图片等信息的显示。

三、设备树配置与修改

1. 修改设备树主节点

  • 配置 LCD 所使用的 IO 引脚。
  • 修改 LCD 屏幕节点,配置相应的屏幕参数。
  • 修改 LCD 背光节点信息,确保背光 IO 配置正确。

2. LCD 屏幕节点配置

  • 配置 pinctrl_lcdif_dat 子节点,定义 24 个数据线。
  • 配置 pinctrl_lcdif_ctrl 子节点,定义 CLK、ENABLE、VSYNC、HSYNC 等控制线。
  • 配置 pinctrl_pwm1 子节点,定义 LCD 背光 PWM 引脚。

3. LCD 显示屏幕参数

  • 使用 RGB888 模式,一个像素占用 24 位。
  • 根据具体屏幕型号(如 ATK7016 7 寸 1024x600),配置屏幕时序参数。

4. LCD 背光节点配置

  • 节点名称为 backlight。
  • compatible 属性值为 pwm-backlight。
  • 配置 pwms 属性,定义背光 PWM 引脚和频率。
  • 配置 brightness-levels 属性,支持 0~255 级别亮度。
  • 设置 default-brightness-level 属性,配置默认亮度等级。

四、使能 Linux Logo 显示

在 Linux 内核配置中,启用 Bootup logo 选项:

Device Drivers  Graphics support    Bootup logo (LOGO [=y])      Standard black and white Linux logo      Standard 16-color Linux logo      Standard 224-color Linux logo

通过配置 /etc/rc.local 文件,实现 logo 在启动时显示。

五、LCD 自动关闭解决方法

方法一:按键唤醒

参考相关文档,在 /etc/rc.local 中添加按键唤醒脚本。

方法二:修改 blankinterval

drivers/tty/vt/vt.c 文件中,修改 blankinterval 变量,设置为 0 即可关闭 10 分钟熄屏。

方法三:自定义脚本

新建 lcd_always_on.c 文件,编写控制 LCD 始终亮屏的脚本,并在 /etc/init.d/rcS 中添加启动脚本。

六、编译与测试

  • 生成新的设备树文件 imx6ull-iot-emmc.dtb
  • 使用最新的设备树和 zImage 文件启动开发板。
  • 访问 /sys/devices/platform/backlight/backlight/backlight 目录,查看亮度等级和最大亮度等级。
  • 调整屏幕亮度,设置为 7 级(50.19%亮度)。
  • 通过以上步骤,可以实现 LCD 显示屏幕的正常显示和亮度控制,同时解决自动关闭问题。

    转载地址:http://qwzi.baihongyu.com/

    你可能感兴趣的文章
    NFS的安装以及windows/linux挂载linux网络文件系统NFS
    查看>>
    NFS的常用挂载参数
    查看>>
    NFS网络文件系统
    查看>>
    NFS远程目录挂载
    查看>>
    nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
    查看>>
    NFV商用可行新华三vBRAS方案实践验证
    查看>>
    ng build --aot --prod生成文件报错
    查看>>
    ng 指令的自定义、使用
    查看>>
    ng6.1 新特性:滚回到之前的位置
    查看>>
    nghttp3使用指南
    查看>>
    Nginx
    查看>>
    nginx + etcd 动态负载均衡实践(一)—— 组件介绍
    查看>>
    nginx + etcd 动态负载均衡实践(三)—— 基于nginx-upsync-module实现
    查看>>
    nginx + etcd 动态负载均衡实践(二)—— 组件安装
    查看>>
    nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
    查看>>
    Nginx + Spring Boot 实现负载均衡
    查看>>
    Nginx + Tomcat + SpringBoot 部署项目
    查看>>
    Nginx + uWSGI + Flask + Vhost
    查看>>
    Nginx - Header详解
    查看>>
    nginx - thinkphp 如何实现url的rewrite
    查看>>