博客
关于我
【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/

    你可能感兴趣的文章
    MySQL之SQL语句优化步骤
    查看>>
    MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)
    查看>>
    Mysql之主从复制
    查看>>
    MySQL之函数
    查看>>
    mysql之分组查询GROUP BY,HAVING
    查看>>
    mysql之分页查询
    查看>>
    Mysql之备份与恢复
    查看>>
    mysql之子查询
    查看>>
    MySQL之字符串函数
    查看>>
    mysql之常见函数
    查看>>
    Mysql之性能优化--索引的使用
    查看>>
    mysql之旅【第一篇】
    查看>>
    Mysql之索引选择及优化
    查看>>
    mysql之联合查询UNION
    查看>>
    mysql之连接查询,多表连接
    查看>>
    mysql乐观锁总结和实践 - 青葱岁月 - ITeye博客
    查看>>
    mysql也能注册到eureka_SpringCloud如何向Eureka中进行注册微服务-百度经验
    查看>>